| New file | 
 |  |  | 
 |  |  | #!/bin/bash | 
 |  |  |  | 
 |  |  | #+-------------------------------------------------------------------------------------------- | 
 |  |  | #|Description:  This shell script used download and compile openssh for ARM | 
 |  |  | #|     Author:  GuoWenxue <guowenxue@gmail.com> | 
 |  |  | #|  ChangeLog: | 
 |  |  | #|           1, Initialize 1.0.0 on 2011.04.12 | 
 |  |  | #+-------------------------------------------------------------------------------------------- | 
 |  |  |  | 
 |  |  | PRJ_PATH=`pwd` | 
 |  |  | PREFIX_PATH=${PRJ_PATH}/../install/ | 
 |  |  | #PREFIX_PATH=${PRJ_PATH}/install/ | 
 |  |  |  | 
 |  |  | LYFTP_SRC=ftp://master.iot-yun.club/src/ | 
 |  |  |  | 
 |  |  | CROSSTOOL=/opt/xtools/arm920t/bin/arm-linux- | 
 |  |  |  | 
 |  |  | function msg_banner() | 
 |  |  | { | 
 |  |  |     echo "" | 
 |  |  |     echo "+-----------------------------------------------------------------------" | 
 |  |  |     echo "|  $1 " | 
 |  |  |     echo "+-----------------------------------------------------------------------" | 
 |  |  |     echo "" | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function check_result() | 
 |  |  | { | 
 |  |  |     if [ $? != 0 ] ; then | 
 |  |  |        echo "" | 
 |  |  |        echo "+-----------------------------------------------------------------------" | 
 |  |  |        echo "|  $1 " | 
 |  |  |        echo "+-----------------------------------------------------------------------" | 
 |  |  |        echo "" | 
 |  |  |        exit ; | 
 |  |  |     fi | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function export_cross() | 
 |  |  | { | 
 |  |  |     # export cross toolchain | 
 |  |  |     export CC=${CROSSTOOL}gcc | 
 |  |  |     export AS=${CROSSTOOL}as | 
 |  |  |     export AR=${CROSSTOOL}ar | 
 |  |  |     export LD=${CROSSTOOL}ld | 
 |  |  |     export NM=${CROSSTOOL}nm | 
 |  |  |     export RANLIB=${CROSSTOOL}ranlib | 
 |  |  |     export OBJDUMP=${CROSSTOOL}objdump | 
 |  |  |     export STRIP=${CROSSTOOL}strip | 
 |  |  |  | 
 |  |  |     # export cross configure  | 
 |  |  |     export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " | 
 |  |  |  | 
 |  |  |     # Clear LDFLAGS and CFLAGS | 
 |  |  |     export LDFLAGS= | 
 |  |  |     export CFLAGS= | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function modify_config() | 
 |  |  | { | 
 |  |  |     #sed -i -e "s|.*SPT_TYPE.*|#define SPT_TYPE SPT_NONE|g" config.h | 
 |  |  |     #sed -i -e "s|.*USE_BTMP.*|/* #undef USE_BTMP */|g" config.h | 
 |  |  |     #sed -i -e "s|.*HAS_SHADOW_EXPIRE.*|/* #undef HAS_SHADOW_EXPIRE */|g" config.h | 
 |  |  |     #sed -i -e "s|.*USE_LINUX_AUDIT.*|/* #undef USE_LINUX_AUDIT */|g" config.h | 
 |  |  |     sed -i -e "s|.*HAVE___PROGNAME.*|/* #undef HAVE___PROGNAME */|g" config.h | 
 |  |  |     echo "modify done" | 
 |  |  | } | 
 |  |  |  | 
 |  |  | function compile_openssh() | 
 |  |  | { | 
 |  |  |     SRC_NAME=openssh-8.0p1 | 
 |  |  |     PACK_SUFIX=tar.gz | 
 |  |  |  | 
 |  |  |     if [ -f ${PREFIX_PATH}/sbin/sshd ] ; then | 
 |  |  |         msg_banner "$SRC_NAME already compile and installed" | 
 |  |  |         return 0; | 
 |  |  |     fi | 
 |  |  |  | 
 |  |  |     msg_banner "Start donwload $SRC_NAME " | 
 |  |  |     if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then | 
 |  |  |         #wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/${SRC_NAME}.${PACK_SUFIX} | 
 |  |  |         wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} | 
 |  |  |         check_result "ERROR: download ${SRC_NAME} failure" | 
 |  |  |     fi  | 
 |  |  |  | 
 |  |  |     rm -rf ${SRC_NAME} | 
 |  |  |  | 
 |  |  |     tar -xzf ${SRC_NAME}.${PACK_SUFIX} | 
 |  |  |  | 
 |  |  |     cd ${SRC_NAME} | 
 |  |  |  | 
 |  |  |     msg_banner "Start cross compile $SRC_NAME " | 
 |  |  |  | 
 |  |  |     # must --disable-utmpx for lost these  files | 
 |  |  |     # must --with-audit=debug can not use linux | 
 |  |  |     # must --without-pie or environ is NULL will case SIGSEGV | 
 |  |  |     export ac_cv_func_realloc_0_nonnull=yes | 
 |  |  |     export ac_cv_func_malloc_0_nonnull=yes | 
 |  |  |     ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --disable-largefile --disable-pkcs11 --disable-strip \ | 
 |  |  |         --disable-etc-default-login --disable-lastlog --disable-utmp --disable-utmpx --disable-wtmp --without-stackprotect \ | 
 |  |  |         --disable-wtmpx --disable-pututline --disable-pututxline --without-hardening --without-rpath \ | 
 |  |  |         --with-audit=debug --without-pie --without-pam --with-privsep-user=sshd --without-selinux \ | 
 |  |  |         --with-libs --with-zlib=${PREFIX_PATH} --with-ssl-dir=${PREFIX_PATH} --with-ssl-engine  | 
 |  |  |  | 
 |  |  |     check_result "ERROR: configure ${SRC_NAME} failure" | 
 |  |  |  | 
 |  |  |     modify_config | 
 |  |  |  | 
 |  |  |     make && make install | 
 |  |  |  | 
 |  |  |     check_result "ERROR: compile ${SRC_NAME} failure" | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     cd - | 
 |  |  | } | 
 |  |  |  | 
 |  |  | export_cross | 
 |  |  | compile_openssh | 
 |  |  |  | 
 |  |  |  |