From e8d34d11799fc79c7c53bdcd40f9b4ee7be7a2c5 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Wed, 25 Sep 2024 17:42:22 +0800 Subject: [PATCH] Merge branch 'master' of ssh://weike-iot.com:2280/framwork --- openlibs/libressl/build.sh | 192 + openlibs/ntpdate/build.sh | 194 + openlibs/iptables/build.sh | 195 + openlibs/zlib/build.sh | 185 + openlibs/libkcapi/build.sh | 191 + openlibs/alsa/build.sh | 221 + openlibs/mplayer/build.sh | 196 + openlibs/dnsmasq/build.sh | 189 + openlibs/file/build.sh | 194 + openlibs/gstreamer/build.sh | 57 openlibs/util-linux/build.sh | 189 + openlibs/iconv/build.sh | 191 + openlibs/dropbear/build.sh | 212 + openlibs/imageMagick/build.sh | 184 + openlibs/vsftpd/build.sh | 191 + openlibs/build.sh | 45 openlibs/ethtool/build.sh | 191 + openlibs/dhcpd/build.sh | 20 openlibs/glib/build.sh | 19 openlibs/qt/build.sh | 20 openlibs/curl/build.sh | 196 + openlibs/openssh/build.sh | 214 + openlibs/tree/build.sh | 194 + openlibs/fbgrab/build.sh | 196 + /dev/null | 93 - openlibs/zbar/build.sh | 206 + openlibs/ffmpeg/build.sh | 191 + openlibs/libconfig/build.sh | 178 + openlibs/dosfstools/build.sh | 194 + openlibs/libdrm/build.sh | 199 + openlibs/appweb/build.sh | 24 openlibs/e2fsprogs/build.sh | 195 + openlibs/libpng/build.sh | 198 + 33 files changed, 3,781 insertions(+), 1,573 deletions(-) diff --git a/openlibs/alsa/build.sh b/openlibs/alsa/build.sh index 69a6d19..d770058 100755 --- a/openlibs/alsa/build.sh +++ b/openlibs/alsa/build.sh @@ -1,44 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile alsa-lib and alsa-utils for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: ftp://ftp.alsa-project.org/pub/lib/ +LIB_NAME=alsa-lib-1.1.9 +PACK_SUFIX=tar.bz2 -PRJ_PATH=`pwd` -PREFIX_PATH=`pwd`/../install - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/aplay + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,81 +131,78 @@ export CFLAGS= } -function compile_alsa_lib() +function do_fetch() { - SRC_NAME=alsa-lib-1.1.9 - PACK_SUFIX=tar.bz2 - IMG_NAME=libasound.so.2.0.0 - - if [ -f ${PREFIX_PATH}/lib/${IMG_NAME} ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget ftp://ftp.alsa-project.org/pub/lib/${SRC_NAME}.${PACK_SUFIX} - wget $LYFTP_SRC/$SRC_NAME.$PACK_SUFIX - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xjf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --datarootdir=/apps/etc/share + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} + +function do_build_alsa_lib() +{ + if [ -e ${LIB_PATH}/libasound.so ] ; then + return ; + fi + + cd $LIB_NAME + + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} check_result "ERROR: configure ${SRC_NAME} failure" - make && make install + make -j ${JOBS} && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - } - - -function compile_alsa_utils() +function do_build_alsa_utils() { - SRC_NAME=alsa-utils-1.1.9 - PACK_SUFIX=tar.bz2 - IMG_NAME=aplay + cd $LIB_NAME - if [ -f ${PREFIX_PATH}/bin/${IMG_NAME} ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; - fi + export DESTDIR=${PREFIX_PATH} - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget ftp://ftp.alsa-project.org/pub/utils/$SRC_NAME.$PACK_SUFIX - wget $LYFTP_SRC/$SRC_NAME.$PACK_SUFIX - check_result "ERROR: download ${SRC_NAME} failure" - fi - - tar -xjf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} - - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --datarootdir=/apps/etc/share \ + ./configure ${CONFIG_CROSS} \ --disable-largefile --disable-nls --disable-alsamixer --without-curses \ - --with-alsa-prefix=${PREFIX_PATH}/lib --with-alsa-inc-prefix=${PREFIX_PATH}/include + --with-alsa-prefix=${PREFIX_PATH}/lib --with-alsa-inc-prefix=${PREFIX_PATH}/include check_result "ERROR: configure ${SRC_NAME} failure" - make + make -j ${JOBS} && make install check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} aplay/aplay - - cp aplay/aplay ${PREFIX_PATH}/bin/ cd - } +function do_clean() +{ + rm -rf *alsa* +} -export_cross +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi -compile_alsa_lib +do_export -compile_alsa_utils +export LIB_NAME=alsa-lib-1.1.9 +do_fetch +do_build_alsa_lib +export LIB_NAME=alsa-utils-1.1.9 +do_fetch +do_build_alsa_utils diff --git a/openlibs/appweb/build.sh b/openlibs/appweb/build.sh index 75d6570..a8a812e 100755 --- a/openlibs/appweb/build.sh +++ b/openlibs/appweb/build.sh @@ -53,7 +53,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -93,15 +93,15 @@ --enable-sockets --enable-track-vars --enable-trans-sid -enable-wddx --sysconfdir=/apps/appWeb/etc --with-pic \ --with-db --with-regex=system --with-pear --without-zlib --without-iconv --disable-dom --disable-libxml \ --disable-simplexml --disable-xml --disable-wddx --disable-xmlreader --without-xmlrpc --disable-xmlwriter \ - --with-config-file-path=/apps/appweb + --with-config-file-path=/apps/appweb check_result "ERROR: configure ${SRC_NAME} failure" - export LDFLAGS+="-lpthread -ldl" + export LDFLAGS+="-lpthread -ldl" make && make install check_result "ERROR: compile ${SRC_NAME} failure" # install and clear PHP - ${STRIP} ${PREFIX_PATH}/lib/libphp5.so + ${STRIP} ${PREFIX_PATH}/lib/libphp5.so cp -rf $PREFIX_PATH/lib/libphp5.so $PREFIX_PATH/modules rm -rf ${PREFIX_PATH}/bin/* rm -rf $PREFIX_PATH/include @@ -139,7 +139,7 @@ --enable-test --enable-send --enable-upload --enable-file --enable-regex --with-php=${PRJ_PATH}/${PHP_SRC_NAME} check_result "ERROR: configure ${SRC_NAME} failure" - make TRACE=1 + make TRACE=1 check_result "ERROR: compile ${SRC_NAME} failure" @@ -180,7 +180,7 @@ ./bin/appweb --config appweb.conf & EOF - chmod 755 run.sh + chmod 755 run.sh mv run.sh $PREFIX_PATH/ tar -cjf ${TARBALL} `basename $PREFIX_PATH` @@ -190,6 +190,18 @@ fi } +function do_clean() +{ + rm -rf appweb* php* +} + +if [[ $# == 1 && $1 == -c ]] ;then + echo "start clean ${LIB_NAME}" + do_clean + exit; +fi + +exit; export_cross diff --git a/openlibs/build.sh b/openlibs/build.sh index cbc3f36..34c8de6 100755 --- a/openlibs/build.sh +++ b/openlibs/build.sh @@ -1,6 +1,27 @@ #!/bin/bash -function do_compile +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +cd $PRJ_PATH + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" +} + +function do_build { for dir in `ls` do @@ -12,5 +33,25 @@ done } -do_compile +function do_clean() +{ + for dir in `ls` + do + if [ -f $dir/build*.sh ] ; then + cd $dir + ./build*.sh -c + cd - + fi + done + + rm -rf install +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_build diff --git a/openlibs/curl/build.sh b/openlibs/curl/build.sh index f9bccac..7ad04a7 100755 --- a/openlibs/curl/build.sh +++ b/openlibs/curl/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile curl for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://github.com/curl/curl/releases/ +LIB_NAME=curl-8.2.1 +PACK_SUFIX=tar.bz2 -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/lib/libgpiod.so + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,49 +132,53 @@ export CFLAGS= } - -function compile_curl() +function do_fetch() { - SRC_NAME=curl-7.65.3 - PACK_SUFIX=tar.bz2 - - if [ -f ${PREFIX_PATH}/bin/curl ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start donwload $SRC_NAME " - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://github.com/curl/curl/releases/download/curl-7_65_3/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xjf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - msg_banner "Start cross compile $SRC_NAME " - - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --with-ssl=${PREFIX_PATH} - - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - - ${STRIP} ${PREFIX_PATH}/bin/curl - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -cd ../openssl - ./build.sh -cd - + do_export -export_cross + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --with-ssl=${PREFIX_PATH} + check_result "ERROR: configure ${LIB_NAME} failure" -compile_curl + make -j ${JOBS} && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +cd ../openssl && ./build.sh && cd - + +do_fetch + +do_build diff --git a/openlibs/dhcpd/build.sh b/openlibs/dhcpd/build.sh index bcedeac..61477b0 100755 --- a/openlibs/dhcpd/build.sh +++ b/openlibs/dhcpd/build.sh @@ -46,7 +46,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -81,16 +81,28 @@ --with-srv-pid-file=/var/run/dhcpd.pid --with-relay-pid-file=/var/run/dhcrelay.pid check_result "ERROR: configure ${SRC_NAME} failure" - make + make check_result "ERROR: compile ${SRC_NAME} failure" ${STRIP} server/${IMG_NAME} - cp server/${IMG_NAME} ${PREFIX_PATH} - cp client/dhclient ${PREFIX_PATH} + cp server/${IMG_NAME} ${PREFIX_PATH} + cp client/dhclient ${PREFIX_PATH} cd - } +function do_clean() +{ + rm -rf dhcpd* +} + +if [[ $# == 1 && $1 == -c ]] ;then + echo "start clean ${LIB_NAME}" + do_clean + exit; +fi + +exit; export_cross diff --git a/openlibs/dnsmasq/build.sh b/openlibs/dnsmasq/build.sh index 4ddcb68..e68570e 100755 --- a/openlibs/dnsmasq/build.sh +++ b/openlibs/dnsmasq/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile dnsmasq for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://thekelleys.org.uk/dnsmasq/doc.html +LIB_NAME=dnsmasq-2.79 +PACK_SUFIX=tar.gz -PREFIX_PATH=`pwd`/../install/bin - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/dnsmasq + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,40 +132,51 @@ export CFLAGS= } -function compile_dnsmasq() +function do_fetch() { - SRC_NAME=dnsmasq-2.79 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/dnsmasq ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start donwload $SRC_NAME " - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget http://www.thekelleys.org.uk/dnsmasq/${SRC_NAME}.${PACK_SUFIX} - wget $LYFTP_SRC/$SRC_NAME.$PACK_SUFIX - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - msg_banner "Start cross compile $SRC_NAME " - - make - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} src/dnsmasq - cp src/dnsmasq ../ - cp src/dnsmasq ${PREFIX_PATH} - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } -export_cross +function do_build() +{ + cd $LIB_NAME -compile_dnsmasq + do_export + make -j ${JOBS} + check_result "ERROR: compile ${LIB_NAME} failure" + + install -d ${BIN_PATH} + install -m 755 src/dnsmasq ${BIN_PATH} +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/dosfstools/build.sh b/openlibs/dosfstools/build.sh index 912824f..596e7e0 100755 --- a/openlibs/dosfstools/build.sh +++ b/openlibs/dosfstools/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile dosfstools for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://github.com/dosfstools/dosfstools +LIB_NAME=dosfstools-4.1 +PACK_SUFIX=tar.xz -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/sbin/fsck.fat + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,45 +132,51 @@ export CFLAGS= } - -function compile_dosfstools() +function do_fetch() { - SRC_NAME=dosfstools-4.1 - PACK_SUFIX=tar.xz - - if [ -f ${PREFIX_PATH}/sbin/fsck.vfat ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start donwload $SRC_NAME " - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - # https://github.com/dosfstools/dosfstools/releases - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xJf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - msg_banner "Start cross compile $SRC_NAME " - - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static - - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install -# check_result "ERROR: compile ${SRC_NAME} failure" - - - ${STRIP} ${PREFIX_PATH}/sbin/fsck.fat - mv ${PREFIX_PATH}/sbin/fsck.fat ${PREFIX_PATH}/sbin/fsck.vfat - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } -export_cross +function do_build() +{ + cd $LIB_NAME -compile_dosfstools + do_export + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static + check_result "ERROR: configure ${LIB_NAME} failure" + + make -j ${JOBS} && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/dropbear/build.sh b/openlibs/dropbear/build.sh index d6a55c7..04d0844 100755 --- a/openlibs/dropbear/build.sh +++ b/openlibs/dropbear/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile dropbear for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: http://matt.ucc.asn.au/dropbear/releases +LIB_NAME=dropbear-2019.78 +PACK_SUFIX=tar.bz2 -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/dropbear + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,71 +132,55 @@ export CFLAGS= } -function compile_x86() +function do_fetch() { - # compile for X86 and generate Key - msg_banner "Start compile $SRC_NAME for X86" - make distclean - ./configure && make - ./dropbearkey -t rsa -f ${PREFIX_PATH}/dropbear_rsa_host_key - chmod 644 ${PREFIX_PATH}/dropbear_rsa_host_key - make distclean + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; + fi + + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; + fi + + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi + + do_unpack ${LIB_NAME}.${PACK_SUFIX} } -function compile_dropbear() +function do_build() { - SRC_NAME=dropbear-2019.78 - PACK_SUFIX=tar.bz2 + cd $LIB_NAME - if [ -f ${PREFIX_PATH}/bin/dropbear ] ; 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 http://matt.ucc.asn.au/dropbear/releases/${SRC_NAME}.${PACK_SUFIX} - wget $LYFTP_SRC/$SRC_NAME.$PACK_SUFIX - check_result "ERROR: download ${SRC_NAME} failure" - fi - - tar -xjf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} - - msg_banner "Start cross compile $SRC_NAME " + do_export ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --disable-zlib - check_result "ERROR: configure ${SRC_NAME} failure" + check_result "ERROR: configure ${LIB_NAME} failure" - make - check_result "ERROR: compile ${SRC_NAME} failure" + make -j ${JOBS} + check_result "ERROR: compile ${LIB_NAME} failure" - ${STRIP} dbclient dropbear - cp dropbear .. - cp dbclient ../ssh - cp dbclient ${PREFIX_PATH}/bin/ssh - cp dropbear ${PREFIX_PATH}/bin/ - - cd - + install -d ${BIN_PATH} + install -m 755 dbclient ${BIN_PATH}/ssh + install -m 755 dropbear ${BIN_PATH}/ } -function install_script() +function do_clean() { - init_script=S20_dropbear -cat << EOF > ${init_script} -#!/bin/sh - -mkdir -p /etc/dropbear/ -dropbear -R -EOF - - chmod 755 ${init_script} - + rm -rf *${LIB_NAME}* } -export_cross +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi -compile_dropbear +do_fetch -install_script +do_build diff --git a/openlibs/e2fsprogs/build.sh b/openlibs/e2fsprogs/build.sh index 0d39ea1..6a8b7e0 100755 --- a/openlibs/e2fsprogs/build.sh +++ b/openlibs/e2fsprogs/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile e2fsprogs for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git +LIB_NAME=e2fsprogs-1.45.3 +PACK_SUFIX=tar.xz -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/sbin/blkid + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,45 +132,52 @@ export CFLAGS= } - -function compile_e2fsprogs() +function do_fetch() { - SRC_NAME=e2fsprogs-1.45.3 - PACK_SUFIX=tar.xz - - if [ -f ${PREFIX_PATH}/sbin/fsck.ext4 ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start donwload $SRC_NAME " - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - # https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xJf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - msg_banner "Start cross compile $SRC_NAME " - - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ - --without-libpth-prefix --without-libintl-prefix - - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install -# check_result "ERROR: compile ${SRC_NAME} failure" - - - ${STRIP} ${PREFIX_PATH}/sbin/fsck.* - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } -export_cross +function do_build() +{ + cd $LIB_NAME -compile_e2fsprogs + do_export + export DESTDIR=${PREFIX_PATH} + ./configure ${CONFIG_CROSS} --enable-static --without-libpth-prefix --without-libintl-prefix + check_result "ERROR: configure ${LIB_NAME} failure" + + make -j ${JOBS} && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/ethtool/build.sh b/openlibs/ethtool/build.sh index f16f65c..5c75ed5 100755 --- a/openlibs/ethtool/build.sh +++ b/openlibs/ethtool/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile ethtool for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://mirrors.edge.kernel.org/pub/software/network/ethtool/ +LIB_NAME=ethtool-5.2 +PACK_SUFIX=tar.gz -PREFIX_PATH=`pwd`/../install/bin - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/ethtool + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,43 +132,52 @@ export CFLAGS= } -function compile_ethtool() +function do_fetch() { - SRC_NAME=ethtool-5.2 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/ethtool ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://mirrors.edge.kernel.org/pub/software/network/ethtool/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} - check_result "ERROR: configure ${SRC_NAME} failure" - - make - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} ethtool - cp ethtool ${PREFIX_PATH} - cp ethtool .. - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + do_export -compile_ethtool + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static + check_result "ERROR: configure ${LIB_NAME} failure" + pr_info "${LIB_NAME} installed to '${BIN_PATH}'" + make -j ${JOBS} && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/fbgrab/build.sh b/openlibs/fbgrab/build.sh index 4b8f3c7..da9abdf 100755 --- a/openlibs/fbgrab/build.sh +++ b/openlibs/fbgrab/build.sh @@ -1,44 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile fbgrab for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://fbgrab.monells.se +LIB_NAME=fbgrab-1.3 +PACK_SUFIX=tar.gz -PRJ_PATH=`pwd` -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/fbgrab + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -47,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,52 +132,55 @@ export CFLAGS= } -function compile_fbgrab() +function do_fetch() { - IMG_NAME=fbgrab - SRC_NAME=fbgrab-1.3 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/bin/${IMG_NAME} ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://fbgrab.monells.se/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - export LDFLAGS=" -L${PREFIX_PATH}/lib -static " - export CFLAGS+=" -I${PREFIX_PATH}/include " - sed -i "s/-lpng -lz/-lpng -lz -lm/g" Makefile + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} + +function do_build() +{ + cd $LIB_NAME + + do_export + + export LDFLAGS=" -L${LIB_PATH}/ -static " + export CFLAGS+=" -I${INC_PATH}/ " + + sed -i "s/-lpng -lz/-lpng -lz -lm/g" Makefile make check_result "ERROR: compile ${SRC_NAME} failure" - set -x - ${STRIP} ${IMG_NAME} - cp ${IMG_NAME} .. - cp ${IMG_NAME} ${PREFIX_PATH}/bin - - cd - + install -d ${BIN_PATH} + install -m 755 fbgrab ${BIN_PATH} } +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -export_cross - -if [ ! -f ${PREFIX_PATH}/lib/libpng.a ] ; then - cd ../libpng - ./build.sh - cd - +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; fi -compile_fbgrab +do_fetch +do_build diff --git a/openlibs/ffmpeg/build.sh b/openlibs/ffmpeg/build.sh index 4761809..82d62f0 100755 --- a/openlibs/ffmpeg/build.sh +++ b/openlibs/ffmpeg/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile ffmpeg for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: http://ffmpeg.org/releases +LIB_NAME=ffmpeg-4.1.4 +PACK_SUFIX=tar.bz2 -PREFIX_PATH=`pwd`/../install/bin/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/ethtool + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,44 +132,51 @@ export CFLAGS= } -function compile_ffmpeg() +function do_fetch() { - SRC_NAME=ffmpeg-4.1.4 - PACK_SUFIX=tar.bz2 - IMG_NAME=ffmpeg - - if [ -f ${PREFIX_PATH}/${IMG_NAME} ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget http://ffmpeg.org/releases/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xjf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - ./configure --prefix=${PREFIX_PATH} --cross-prefix=${CROSS_COMPILE} --target-os=linux --enable-cross-compile --arch=arm - check_result "ERROR: configure ${SRC_NAME} failure" - - make - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} ${IMG_NAME} - cp ${IMG_NAME} ${PREFIX_PATH} - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + do_export -compile_ffmpeg + ./configure --prefix=${PREFIX_PATH} --cross-prefix=${CROSS_COMPILE} --target-os=linux --enable-cross-compile --arch=arm + check_result "ERROR: configure ${LIB_NAME} failure" + make -j ${JOBS} && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/file/build.sh b/openlibs/file/build.sh index 5b1ffeb..814119a 100755 --- a/openlibs/file/build.sh +++ b/openlibs/file/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile file for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: ftp://ftp.astron.com/pub/file +LIB_NAME=file-5.04 +PACK_SUFIX=tar.gz -PREFIX_PATH=`pwd`/../install/bin - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/file + +# shell script will exit once get command error +#set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,44 +132,54 @@ export CFLAGS= } -function compile_file() +function do_fetch() { - # CentOS 6.0 use file-5.04, so we should cross compile 5.04 for ARM too, for make magic file - SRC_NAME=file-5.04 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/file ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget ftp://ftp.astron.com/pub/file/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --disable-shared - check_result "ERROR: configure ${SRC_NAME} failure" - - make - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} src/file - cp src/file .. - cp src/file ${PREFIX_PATH} - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + do_export -compile_file + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --disable-shared + check_result "ERROR: configure ${LIB_NAME} failure" + make -j ${JOBS} + + pr_info "${LIB_NAME} installed to '${BIN_PATH}'" + install -d ${BIN_PATH} + install -m 755 src/file ${BIN_PATH} +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/glib/build.sh b/openlibs/glib/build.sh index c1f5606..df02ff8 100755 --- a/openlibs/glib/build.sh +++ b/openlibs/glib/build.sh @@ -48,7 +48,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -68,7 +68,7 @@ fi msg_banner "Start donwload $SRC_NAME " - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then + if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then #wget ftp://sourceware.org/pub/libffi/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" @@ -79,7 +79,7 @@ msg_banner "Start cross compile $SRC_NAME " - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} check_result "ERROR: configure ${SRC_NAME} failure" @@ -137,6 +137,19 @@ cd - } +function do_clean() +{ + rm -rf libffi* glib* +} + +if [[ $# == 1 && $1 == -c ]] ;then + echo "start clean ${LIB_NAME}" + do_clean + exit; +fi + +exit + export_cross compile_libffi diff --git a/openlibs/gstreamer/build.sh b/openlibs/gstreamer/build.sh index ee7939b..a6d1cf0 100755 --- a/openlibs/gstreamer/build.sh +++ b/openlibs/gstreamer/build.sh @@ -49,7 +49,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -106,19 +106,19 @@ if [ -f ${PREFIX_PATH}/lib/libgstaudio-1.0.so ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; - fi + fi - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then + if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then msg_banner "Start download ${SRC_NAME}.${PACK_SUFIX} " #wget https://gstreamer.freedesktop.org/src/gst-plugins-base/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" - fi + fi msg_banner "Start decompress $SRC_NAME.${PACK_SUFIX} " if [ ! -d ${SRC_NAME} ] ; then tar -xJf ${SRC_NAME}.${PACK_SUFIX} - fi + fi cd ${SRC_NAME} @@ -134,9 +134,9 @@ LDFLAGS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lgmodule-2.0 -lffi" - check_result "ERROR: configure ${SRC_NAME} failure" + check_result "ERROR: configure ${SRC_NAME} failure" - make && make install + make && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - @@ -150,19 +150,19 @@ if [ -f ${PREFIX_PATH}/lib/gstreamer-1.0/libgstcamerabin.so ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; - fi + fi - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then + if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then msg_banner "Start download ${SRC_NAME}.${PACK_SUFIX} " #wget https://gstreamer.freedesktop.org/src/gst-plugins-bad/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" - fi + fi msg_banner "Start decompress $SRC_NAME.${PACK_SUFIX} " if [ ! -d ${SRC_NAME} ] ; then tar -xJf ${SRC_NAME}.${PACK_SUFIX} - fi + fi cd ${SRC_NAME} @@ -180,9 +180,9 @@ CFLAGS="-I${PREFIX_PATH}/include/glib-2.0" \ LDFLAGS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lgmodule-2.0 -lffi" - check_result "ERROR: configure ${SRC_NAME} failure" + check_result "ERROR: configure ${SRC_NAME} failure" - make -v && make install + make -v && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - @@ -196,19 +196,19 @@ if [ -f ${PREFIX_PATH}/lib/gstreamer-1.0/libgstmultifile.so ] ; then msg_banner "$SRC_NAME already compile and installed" return 0; - fi + fi - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then + if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then msg_banner "Start download ${SRC_NAME}.${PACK_SUFIX} " #wget https://gstreamer.freedesktop.org/src/gst-plugins-good/${SRC_NAME}.${PACK_SUFIX} wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" - fi + fi msg_banner "Start decompress $SRC_NAME.${PACK_SUFIX} " if [ ! -d ${SRC_NAME} ] ; then tar -xJf ${SRC_NAME}.${PACK_SUFIX} - fi + fi cd ${SRC_NAME} @@ -224,18 +224,31 @@ CFLAGS="-I${PREFIX_PATH}/include/glib-2.0" \ LDFLAGS="-L${PREFIX_PATH}/lib -lglib-2.0 -lgobject-2.0 -lgmodule-2.0 -lffi" - check_result "ERROR: configure ${SRC_NAME} failure" + check_result "ERROR: configure ${SRC_NAME} failure" - make -v && make install + make -v && make install check_result "ERROR: compile ${SRC_NAME} failure" cd - } +function do_clean() +{ + rm -rf gst* +} -if [ ! -f ${PREFIX_PATH}/lib/libglib-2.0.so ] ; then - cd ../glib - ./build.sh +if [[ $# == 1 && $1 == -c ]] ;then + echo "start clean ${LIB_NAME}" + do_clean + exit; +fi + +exit + + +if [ ! -f ${PREFIX_PATH}/lib/libglib-2.0.so ] ; then + cd ../glib + ./build.sh cd - fi diff --git a/openlibs/iconv/build.sh b/openlibs/iconv/build.sh index b6afe8b..9b558bb 100755 --- a/openlibs/iconv/build.sh +++ b/openlibs/iconv/build.sh @@ -1,44 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile libiconv for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://ftp.gnu.org/gnu/libiconv/ +LIB_NAME=libiconv-1.15 +PACK_SUFIX=tar.gz -PROJ_PATH=`pwd`/../ -INST_PATH=${PROJ_PATH}/install - -CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server +CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- + +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/lib/libiconv.so + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,38 +131,55 @@ export CFLAGS= } - -function compile_libiconv() +function do_fetch() { - SRC_NAME=libiconv-1.15 - PACK_SUFIX=tar.gz - - if [ -f ${INST_PATH}/lib/libiconv.so ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://ftp.gnu.org/gnu/libiconv/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - ./configure --prefix=${INST_PATH} ${CONFIG_CROSS} - make && make install - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + do_export -compile_libiconv + export CFLAGS=" -I${INC_PATH}" + export CPPFLAGS=" -I${INC_PATH}" + export LDFLAGS=" -L${LIB_PATH}" + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static + check_result "ERROR: configure ${LIB_NAME} failure" + make && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/imageMagick/build.sh b/openlibs/imageMagick/build.sh index c95837f..030d73b 100755 --- a/openlibs/imageMagick/build.sh +++ b/openlibs/imageMagick/build.sh @@ -1,43 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile imageMagick for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://imagemagick.org/archive/releases/ +LIB_NAME=ImageMagick-6.9.10-57 +PACK_SUFIX=tar.bz2 -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/animate + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,45 +131,60 @@ export CFLAGS= } - -function compile_imageMagick() +function do_fetch() { - SRC_NAME=ImageMagick6-6.9.4-0 - PACK_SUFIX=tar.gz - - if [ -f $PREFIX_PATH/lib/libMagickCore-6.Q16.a ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi + + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} + +function do_build() +{ + cd $LIB_NAME + + do_export CFLAGS="-I${PREFIX_PATH}/include -DMAGICKCORE_QUANTUM_DEPTH=16" LDFLAGS=-L${PREFIX_PATH}/lib \ ./configure --host=arm-linux --enable-static --disable-shared --prefix=$PREFIX_PATH \ --without-magick-plus-plus --without-perl --without-x --without-dps --without-xml \ --without-pango --without-freetype --without-png --without-openexr --without-fontconfig \ --without-lzma - - check_result "ERROR: configure ${SRC_NAME} failure" + check_result "ERROR: configure ${LIB_NAME} failure" make && make install -# check_result "ERROR: compile ${SRC_NAME} failure" + check_result "ERROR: compile ${LIB_NAME} failure" - cd - + pr_info "${LIB_NAME} installed to '${BIN_PATH}'" + mkdir -p ${BIN_PATH} + install -m 755 src/lsz ${BIN_PATH}/sz + install -m 755 src/lrz ${BIN_PATH}/rz } +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -export_cross +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi -compile_imageMagick +do_fetch - +do_build diff --git a/openlibs/iptables/build.sh b/openlibs/iptables/build.sh index f3d1c89..4b490bc 100755 --- a/openlibs/iptables/build.sh +++ b/openlibs/iptables/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile iptables for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: http://www.netfilter.org/projects/iptables +LIB_NAME=iptables-1.4.21 +PACK_SUFIX=tar.bz2 -PREFIX_PATH=`pwd`/../install/bin - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/iptables + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,44 +132,55 @@ export CFLAGS= } -function compile_iptables() +function do_fetch() { - SRC_NAME=iptables-1.4.21 - PACK_SUFIX=tar.bz2 - IMG_NAME=iptables - - if [ -f ${PREFIX_PATH}/${IMG_NAME} ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget http://www.netfilter.org/projects/iptables/files/${SRC_NAME}.${PACK_SUFIX} - wget $LYFTP_SRC/$SRC_NAME.$PACK_SUFIX - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xjf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --disable-shared --disable-ipv6 --disable-largefile - check_result "ERROR: configure ${SRC_NAME} failure" - - make - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} iptables/xtables-multi - cp iptables/xtables-multi ${PREFIX_PATH}/${IMG_NAME} - cp iptables/xtables-multi ../${IMG_NAME} - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + do_export -compile_iptables + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --disable-shared --disable-ipv6 --disable-largefile + check_result "ERROR: configure ${LIB_NAME} failure" + make -j ${JOBS} + check_result "ERROR: compile ${LIB_NAME} failure" + + pr_info "${LIB_NAME} installed to '${BIN_PATH}'" + mkdir -p ${BIN_PATH} + install -m 755 iptables/xtables-multi ${BIN_PATH}/iptables +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/libconfig/build.sh b/openlibs/libconfig/build.sh index 1cf2145..1f11600 100755 --- a/openlibs/libconfig/build.sh +++ b/openlibs/libconfig/build.sh @@ -1,41 +1,117 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile libconfig for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: http://hyperrealm.github.io/libconfig/ +LIB_NAME=libconfig-1.7.2 +PACK_SUFIX=tar.gz -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/lib/libconfig.so + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,40 +131,52 @@ export CFLAGS= } -function compile_libconfig() +function do_fetch() { - SRC_NAME=libconfig-1.7.2 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/lib/libconfig.so ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget http://hyperrealm.github.io/libconfig/dist/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi + + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} + +function do_build() +{ + cd $LIB_NAME + + do_export export "CFLAGS+=-undefHAVE_USELOCALE" ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} - check_result "ERROR: configure ${SRC_NAME} failure" + check_result "ERROR: configure ${LIB_NAME} failure" make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - cd - + check_result "ERROR: compile ${LIB_NAME} failure" } +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -export_cross +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi -compile_libconfig +do_fetch +do_build diff --git a/openlibs/libdrm/build.sh b/openlibs/libdrm/build.sh index 739910d..38008d1 100755 --- a/openlibs/libdrm/build.sh +++ b/openlibs/libdrm/build.sh @@ -1,54 +1,129 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile libdrm for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://dri.freedesktop.org/libdrm/ +LIB_NAME=libdrm-2.4.99 +PACK_SUFIX=tar.gz -PROJ_PATH=`pwd`/../ -CUR_PATH=`pwd` -INST_PATH=${PROJ_PATH}/install - -CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server +CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- + +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/modetest + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld export NM=${CROSS_COMPILE}nm export RANLIB=${CROSS_COMPILE}ranlib export OBJDUMP=${CROSS_COMPILE}objdump - export STRIP=${CROSS_COMPILE}strip + INST_PATEFIX_PATHTRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -56,41 +131,57 @@ export CFLAGS= } - -function compile_libdrm() +function do_fetch() { - SRC_NAME=libdrm-2.4.99 - PACK_SUFIX=tar.gz - - if [ -f ${INST_PATH}/lib/libiconv.so ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - ./configure --prefix=${INST_PATH} ${CONFIG_CROSS} --disable-radeon --disable-amdgpu \ - --disable-nouveau --disable-vmwgfx --disable-freedreno --disable-vc4 - make - - set -x - cp tests/modetest/.libs/modetest ${CUR_PATH}/ - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + do_export -compile_libdrm + #export DESTDIR=${PREFIX_PATH} + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --disable-radeon --disable-amdgpu \ + --disable-nouveau --disable-vmwgfx --disable-freedreno --disable-vc4 + check_result "ERROR: configure ${LIB_NAME} failure" + make && make install + check_result "ERROR: compile ${LIB_NAME} failure" + pr_info "${LIB_NAME} installed to '${BIN_PATH}'" + mkdir -p ${BIN_PATH} + install -m 755 tests/modetest/.libs/modetest ${BIN_PATH}/ +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/libkcapi/build.sh b/openlibs/libkcapi/build.sh index 93db40f..518e307 100755 --- a/openlibs/libkcapi/build.sh +++ b/openlibs/libkcapi/build.sh @@ -1,48 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile libkcapi for ARM -#| libkcapi is linux kernel crypto userspace API library, official introduction site: -#| Linux Kernel: https://www.kernel.org/doc/html/latest/crypto/userspace-if.html -#| libkcapi: http://www.chronox.de/libkcapi.html -#| -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://codeload.github.com/smuellerDD/libkcapi/tar.gz/v1.1.5 +LIB_NAME=libkcapi-1.1.5 +PACK_SUFIX=tar.gz -PRJ_PATH=`pwd` -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/kcapi + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -51,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -59,47 +131,58 @@ export CFLAGS= } - -function compile_libkcapi() +function do_fetch() { - SRC_NAME=libkcapi-1.1.5 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/lib/libkcapi.a ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - wget https://codeload.github.com/smuellerDD/libkcapi/tar.gz/v1.1.5 -O ${SRC_NAME}.${PACK_SUFIX} - #wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - export CFLAGS=" -I${PREFIX_PATH}/include" - export CPPFLAGS=" -I${PREFIX_PATH}/include" - export LDFLAGS=" -L${PREFIX_PATH}/lib" + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} + +function do_build() +{ + cd $LIB_NAME + + do_export + + export CFLAGS=" -I${PREFIX_PATH}/include" + export CPPFLAGS=" -I${PREFIX_PATH}/include" + export LDFLAGS=" -L${PREFIX_PATH}/lib" autoreconf -i ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --enable-shared --enable-kcapi-test \ - --enable-kcapi-rngapp + --enable-kcapi-rngapp check_result "ERROR: configure ${SRC_NAME} failure" make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - cd - + check_result "ERROR: compile ${LIB_NAME} failure" } -export_cross +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -compile_libkcapi +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi +do_fetch +do_build diff --git a/openlibs/libpng/build.sh b/openlibs/libpng/build.sh index 73b4b27..b115898 100755 --- a/openlibs/libpng/build.sh +++ b/openlibs/libpng/build.sh @@ -1,44 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile libpng for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://nchc.dl.sourceforge.net/project/libpng/ +LIB_NAME=libpng-1.6.37 +PACK_SUFIX=tar.gz -PRJ_PATH=`pwd` -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/lib/libpng.so + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,49 +131,55 @@ export CFLAGS= } - -function compile_png() +function do_fetch() { - SRC_NAME=libpng-1.6.37 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/lib/libpng.a ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://nchc.dl.sourceforge.net/project/libpng/libpng16/1.6.37/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - export CFLAGS=" -I${PREFIX_PATH}/include" - export CPPFLAGS=" -I${PREFIX_PATH}/include" - export LDFLAGS=" -L${PREFIX_PATH}/lib" - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --enable-shared --enable-arm-neon - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } -export_cross +function do_build() +{ + cd $LIB_NAME -if [ ! -f ${PREFIX_PATH}/lib/libz.a ] ; then - cd ../zlib - ./build.sh - cd - + do_export + + export CFLAGS=" -I${INC_PATH}" + export CPPFLAGS=" -I${INC_PATH}" + export LDFLAGS=" -L${LIB_PATH}" + + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --enable-shared --enable-arm-neon + check_result "ERROR: configure ${LIB_NAME} failure" + + make && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; fi -compile_png +do_fetch - +do_build diff --git a/openlibs/libressl/build.sh b/openlibs/libressl/build.sh index 7819209..7cda61e 100755 --- a/openlibs/libressl/build.sh +++ b/openlibs/libressl/build.sh @@ -1,43 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile libressl for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://ftp.openbsd.org/pub/OpenBSD/LibreSSL +LIB_NAME=libressl-3.9.0 +PACK_SUFIX=tar.gz -PREFIX_PATH=`pwd`/../install - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/lib/libssl.so + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,42 +131,53 @@ export CFLAGS= } -function compile_libressl() +function do_fetch() { - SRC_NAME=libressl-2.9.2 - PACK_SUFIX=tar.gz + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; + fi - if [ -f ${PREFIX_PATH}/lib/libcrypto.a ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; - fi - - msg_banner "Start cross compile $SRC_NAME " - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" - fi + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; + fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} - touch * - - export CFLAGS=-fPIC - #./configure ${CONFIG_CROSS} --prefix=${PREFIX_PATH} --with-pic --disable-shared --enable-static LIBS="-lpthread" + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi + + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} + +function do_build() +{ + cd $LIB_NAME + + do_export + ./configure ${CONFIG_CROSS} --prefix=${PREFIX_PATH} --with-pic LIBS="-lpthread" + check_result "ERROR: configure ${LIB_NAME} failure" - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" + make && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} - cd - -} +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -printf "\nWARRNING: libressl is a candidate of openssl, so don't compile it if openssl enabled\n\n" -exit; +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi -export_cross +exit -compile_libressl +do_fetch +do_build diff --git a/openlibs/mplayer/build.sh b/openlibs/mplayer/build.sh index e009c3c..b751cb1 100755 --- a/openlibs/mplayer/build.sh +++ b/openlibs/mplayer/build.sh @@ -1,45 +1,118 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile mplayer for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| -#| Usage: -#| mplayer -slave -quiet test.mp4 -vo fbdev2 -vf scale -fs -zoom -x 320 -y 240 -#| -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: http://www.mplayerhq.hu/MPlayer/releases +LIB_NAME=MPlayer-1.4 +PACK_SUFIX=tar.xz -PREFIX_PATH=`pwd`/../install - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/ethtool + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ @@ -51,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -59,27 +132,34 @@ export CFLAGS= } -function compile_mplayer() +function do_fetch() { - SRC_NAME=MPlayer-1.4 - PACK_SUFIX=tar.xz - - if [ -f ${PREFIX_PATH}/bin/mencoder ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget wget http://www.mplayerhq.hu/MPlayer/releases/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xJf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi + + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} + +function do_build() +{ + cd $LIB_NAME + + do_export + + export CFLAGS=-I${INC_PATH} + export LDFLAGS="-L${LIB_PATH} " ./configure --prefix=${PREFIX_PATH} --enable-cross-compile --disable-mencoder \ --disable-gui --disable-termcap --disable-termios --disable-lirc --disable-lircc \ @@ -92,20 +172,30 @@ --cc=${CC} --as=${AS} --ar=${AR} --nm=${NM} --ranlib=${RANLIB} \ --target=arm-linux - check_result "ERROR: configure ${SRC_NAME} failure" + check_result "ERROR: configure ${LIB_NAME} failure" + #make -j ${JOBS} make - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} mplayer - make install - - cd - + check_result "ERROR: compile ${LIB_NAME} failure" } +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -export_cross +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi -compile_mplayer +# failed on: ./libavutil/arm/intmath.h:77:5: error: impossible constraint in 'asm' +exit; +cd ../zlib/ && ./build.sh && cd - + +do_fetch + +do_build diff --git a/openlibs/ntpdate/build.sh b/openlibs/ntpdate/build.sh index dd77c47..6b441f5 100755 --- a/openlibs/ntpdate/build.sh +++ b/openlibs/ntpdate/build.sh @@ -1,43 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile ntpdate for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://www.eecis.udel.edu/ +LIB_NAME=ntp-4.2.6p5 +PACK_SUFIX=tar.gz -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/ntpdate + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,45 +131,52 @@ export CFLAGS= } - -function compile_ntpdate() +function do_fetch() { - SRC_NAME=ntp-4.2.6p5 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/bin/ntpdate ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start donwload $SRC_NAME " - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - msg_banner "Start cross compile $SRC_NAME " - - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --disable-ipv6 --disable-tickadj --disable-tick \ - --disable-ntp-signd - - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - - ${STRIP} ${PREFIX_PATH}/bin/ntpdate - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } -export_cross +function do_build() +{ + cd $LIB_NAME -compile_ntpdate + do_export + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --disable-ipv6 \ + --disable-tickadj --disable-tick --disable-ntp-signd + check_result "ERROR: configure ${LIB_NAME} failure" + + make && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/openssh/build.sh b/openlibs/openssh/build.sh index 96afb7c..cb33f5f 100755 --- a/openlibs/openssh/build.sh +++ b/openlibs/openssh/build.sh @@ -1,45 +1,120 @@ #!/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 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/${SRC_NAME}.${PACK_SUFIX} +LIB_NAME=openssh-8.0p1 +PACK_SUFIX=tar.gz -PRJ_PATH=`pwd` -PREFIX_PATH=${PRJ_PATH}/../install/ -#PREFIX_PATH=${PRJ_PATH}/install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/sbin/sshd + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -48,12 +123,32 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= +} + +function do_fetch() +{ + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; + fi + + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; + fi + + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi + + do_unpack ${LIB_NAME}.${PACK_SUFIX} } function modify_config() @@ -63,72 +158,51 @@ #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" + sed -i -e "s|^prefix=.*|prefix=|g" Makefile + sed -i -e "s|^DESTDIR=.*|DESTDIR=${PREFIX_PATH}|g" Makefile + pr_warn "modify done" } -function compile_openssh() +function do_build() { - SRC_NAME=openssh-8.0p1 - PACK_SUFIX=tar.gz + cd $LIB_NAME - 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 " + do_export # 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 \ + ./configure ${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" + --with-libs --with-zlib=${PREFIX_PATH} --with-ssl-dir=${PREFIX_PATH} --with-ssl-engine + check_result "ERROR: configure ${LIB_NAME} failure" modify_config - make && make install - - check_result "ERROR: compile ${SRC_NAME} failure" - - - cd - + make && make install-nosysconf + check_result "ERROR: compile ${LIB_NAME} failure" } +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -if [ ! -f ${PREFIX_PATH}/lib/libz.a ] ; then - cd ../zlib - ./build.sh - cd - +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; fi +cd ../zlib/ && ./build.sh && cd - -if [ ! -f ${PREFIX_PATH}/lib/libcrypto.a ] ; then - cd ../openssl - ./build.sh - cd - -fi +cd ../openssl/ && ./build.sh && cd - -export_cross -compile_openssh +do_fetch +do_build diff --git a/openlibs/openssh/openssl/build.sh b/openlibs/openssh/openssl/build.sh deleted file mode 100755 index dc90b85..0000000 --- a/openlibs/openssh/openssl/build.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash - -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile openssl for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- - -PREFIX_PATH=`pwd`/../install - -LYFTP_SRC=http://master.weike-iot.com:2211/src/ - -CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- - -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=${CROSS_COMPILE}gcc - export AS=${CROSS_COMPILE}as - export AR=${CROSS_COMPILE}ar - export LD=${CROSS_COMPILE}ld - export NM=${CROSS_COMPILE}nm - export RANLIB=${CROSS_COMPILE}ranlib - export OBJDUMP=${CROSS_COMPILE}objdump - export STRIP=${CROSS_COMPILE}strip - - # export cross configure - export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " - - # Clear LDFLAGS and CFLAGS - export LDFLAGS= - export CFLAGS= -} - -function compile_openssl() -{ - SRC_NAME=openssl-1.0.2s - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/lib/libcrypto.a ] ; then - return 0; - fi - - msg_banner "Start cross compile $SRC_NAME " - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - wget https://www.openssl.org/source/${SRC_NAME}.${PACK_SUFIX} - #wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" - fi - - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} - - CROSS_COMPILE=${CROSS_COMPILE} ./Configure threads -shared -no-zlib --prefix=$PREFIX_PATH --openssldir=$PREFIX_PATH linux-armv4 - - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - cd - -} - -compile_openssl - - diff --git a/openlibs/openssh/zlib/build.sh b/openlibs/openssh/zlib/build.sh deleted file mode 100755 index ca78a2f..0000000 --- a/openlibs/openssh/zlib/build.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/bash - -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile zlib for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- - -PREFIX_PATH=`pwd`/../install/ - -LYFTP_SRC=http://master.weike-iot.com:2211/src/ - -CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- - -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=${CROSS_COMPILE}gcc - export AS=${CROSS_COMPILE}as - export AR=${CROSS_COMPILE}ar - export LD=${CROSS_COMPILE}ld - export NM=${CROSS_COMPILE}nm - export RANLIB=${CROSS_COMPILE}ranlib - export OBJDUMP=${CROSS_COMPILE}objdump - export STRIP=${CROSS_COMPILE}strip - - # export cross configure - export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " - - # Clear LDFLAGS and CFLAGS - export LDFLAGS= - export CFLAGS= -} - - -function compile_zlib() -{ - SRC_NAME=zlib-1.2.11 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/lib/libz.a ] ; then - return 0; - fi - - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://zlib.net/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" - fi - - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} - - ./configure --prefix=${PREFIX_PATH} - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - cd - -} - - -export_cross - -compile_zlib - - - diff --git a/openlibs/qt/build_QT5.sh b/openlibs/qt/build.sh similarity index 93% rename from openlibs/qt/build_QT5.sh rename to openlibs/qt/build.sh index ff33cff..6b420d6 100755 --- a/openlibs/qt/build_QT5.sh +++ b/openlibs/qt/build.sh @@ -62,7 +62,7 @@ return 0; fi - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then + if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then msg_banner "Start download ${SRC_NAME}.${PACK_SUFIX} " wget ${LYFTP_SRC}/qt/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" @@ -78,7 +78,7 @@ QMAKE_FILE=qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf grep "`dirname ${CROSS_COMPILE}`" ${QMAKE_FILE} > /dev/null 2>&1 - if [ $? != 0 ] ; then + if [ $? != 0 ] ; then sed -i "s|arm-linux-gnueabi-|$CROSS_COMPILE|" ${QMAKE_FILE} fi @@ -117,7 +117,7 @@ fi - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then + if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then msg_banner "Start download ${SRC_NAME}.${PACK_SUFIX} " wget ${LYFTP_SRC}/qt/${SRC_NAME}.${PACK_SUFIX} check_result "ERROR: download ${SRC_NAME} failure" @@ -130,7 +130,7 @@ cd ${SRC_NAME} - ${QT_INST_PATH}/bin/qmake + ${QT_INST_PATH}/bin/qmake make && make install } @@ -151,6 +151,18 @@ #rm -rf ${QTDIR_NAME} } +function do_clean() +{ + rm -rf appweb* php* +} + +if [[ $# == 1 && $1 == -c ]] ;then + echo "start clean ${LIB_NAME}" + do_clean + exit; +fi + +exit; compile_qt diff --git a/openlibs/tree/build.sh b/openlibs/tree/build.sh index 0141eb6..779ab56 100755 --- a/openlibs/tree/build.sh +++ b/openlibs/tree/build.sh @@ -1,43 +1,124 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile tree for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: ftp://ftp.astron.com/pub/file +LIB_NAME=tree-1.8.0 +PACK_SUFIX=tgz -PREFIX_PATH=`pwd`/../install/bin - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/tree + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tgz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +127,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,42 +135,53 @@ export CFLAGS= } -function compile_tree() +function do_fetch() { - SRC_NAME=tree-1.8.0 - PACK_SUFIX=tgz - - if [ -f ${PREFIX_PATH}/tree ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget ftp://ftp.astron.com/pub/file/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/tree-1.8.0.tgz - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - sed -i -e "s|^CC=.*|CC=${CROSS_COMPILE}gcc|g" Makefile - - make - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} tree - cp tree ${PREFIX_PATH} - cp tree .. - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + do_export -compile_tree + sed -i -e "s|^CC=.*|CC=${CROSS_COMPILE}gcc|g" Makefile + make + check_result "ERROR: compile ${LIB_NAME} failure" + pr_info "${LIB_NAME} installed to '${BIN_PATH}'" + mkdir -p ${BIN_PATH} + install -m 755 tree ${BIN_PATH}/ +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/util-linux/build.sh b/openlibs/util-linux/build.sh index 14c02b6..4b1da59 100755 --- a/openlibs/util-linux/build.sh +++ b/openlibs/util-linux/build.sh @@ -1,43 +1,121 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile util-linux for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://github.com/karelzak/util-linux/releases +LIB_NAME=util-linux-2.33 +PACK_SUFIX=tar.xz -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/sbin/fsck + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,47 +132,56 @@ export CFLAGS= } - -function compile_util-linux() +function do_fetch() { - SRC_NAME=util-linux-2.33 - PACK_SUFIX=tar.xz - - if [ -f ${PREFIX_PATH}/sbin/fsck ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start donwload $SRC_NAME " - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - # https://github.com/karelzak/util-linux/releases - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xJf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - msg_banner "Start cross compile $SRC_NAME " + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} + +function do_build() +{ + cd $LIB_NAME + + do_export ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ --without-ncursesw --without-selinux --without-audit --without-udev \ --without-ncurses --without-tinfo --without-utempter --without-cap-ng \ --without-user --without-btrfs --without-systemd --without-python + check_result "ERROR: configure ${LIB_NAME} failure" - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install -# check_result "ERROR: compile ${SRC_NAME} failure" - - - ${STRIP} ${PREFIX_PATH}/sbin/fsck - - cd - + make -j ${JOBS} && make install + #check_result "ERROR: compile ${LIB_NAME} failure" } -export_cross +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -compile_util-linux +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi +exit; + +do_fetch + +do_build diff --git a/openlibs/vsftpd/build.sh b/openlibs/vsftpd/build.sh index de3c9e9..d21242d 100755 --- a/openlibs/vsftpd/build.sh +++ b/openlibs/vsftpd/build.sh @@ -1,41 +1,118 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile vsftpd for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2018.08.16 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://ftp.osuosl.org/pub/blfs/conglomeration/vsftpd/ +LIB_NAME=vsftpd-3.0.3 +PACK_SUFIX=tar.gz -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/vsftpd + +# check installed or not file +INST_FILE=$PREFIX_PATH/bin/ethtool + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" + exit fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ @@ -47,7 +124,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,41 +132,53 @@ export CFLAGS= } - -function compile_vsftpd() +function do_fetch() { - SRC_NAME=vsftpd-3.0.3 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/bin/vsftpd ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://ftp.osuosl.org/pub/blfs/conglomeration/vsftpd/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - sed -i -e "s|^CC.*|CC = ${CROSS_COMPILE}gcc|g" Makefile - make - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} vsftpd - cp vsftpd ${PREFIX_PATH}/bin - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } -export_cross +function do_build() +{ + cd $LIB_NAME -compile_vsftpd + do_export + sed -i -e "s|^CC.*|CC = ${CROSS_COMPILE}gcc|g" Makefile + sed -i -e "s|-Werror||g" Makefile + make + + pr_info "${LIB_NAME} installed to '${BIN_PATH}'" + mkdir -p ${BIN_PATH} + install -m 755 vsftpd ${BIN_PATH} +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/zbar/build.sh b/openlibs/zbar/build.sh index ad030f8..94c48b9 100755 --- a/openlibs/zbar/build.sh +++ b/openlibs/zbar/build.sh @@ -1,41 +1,117 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile zbar for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2018.08.16 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://zbar.sourceforge.net/ +LIB_NAME=zbar-0.10 +PACK_SUFIX=tar.bz2 -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/lib/libzbar.so + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc export CXX=${CROSS_COMPILE}g++ @@ -47,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -55,72 +131,70 @@ export CFLAGS= } - -function compile_zbar() +function do_fetch() { - #SRC_NAME=zbar-latest - SRC_NAME=zbar-0.10 - PACK_SUFIX=tar.bz2 - - set -e - - if [ -f ${PREFIX_PATH}/bin/zbarcam ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xjf ${SRC_NAME}.${PACK_SUFIX} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - cd ${SRC_NAME} + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} - # zbar-latest need follow command - #git checkout 8edfa5f8c4d11a54 && rm -rf * && git checkout . - #autoreconf --install - #libtoolize -f - #sed -i -e "s|-Wno-parentheses -Werror|-Wno-parentheses|g" configure +function do_build() +{ + cd $LIB_NAME + + do_export CFLAGS="-DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16" \ ./configure --host=arm-linux --enable-static --enable-shared --prefix=$PREFIX_PATH \ --without-gtk --without-python --without-qt --without-x --without-java --disable-video \ --with-imagemagick=${PREFIX_PATH}/ --without-graphicsmagick \ MAGICK_CFLAGS=-I${PREFIX_PATH}//include/ImageMagick-6 \ - MAGICK_LIBS="-L${PREFIX_PATH}/lib -lMagickWand-6.Q16 -lMagickCore-6.Q16 -lm -lz -L`pwd`/zbar/.libs/ -lzbar" + MAGICK_LIBS="-L${PREFIX_PATH}/lib -lMagickWand-6.Q16 -lMagickCore-6.Q16 -lm -lz -L`pwd`/zbar/.libs/ -lzbar" #LIBS="-liconv" sed -i -e "s|^LIBS = -lpthread.*|LIBS = -lpthread -liconv|g" Makefile - mkdir -p ./doc/man/ - touch ./doc/man/zbarimg.1 - touch ./doc/man/zbarcam.1 - make all && make install - - cd - + mkdir -p ./doc/man/ + touch ./doc/man/zbarimg.1 + touch ./doc/man/zbarcam.1 + make all && make install + check_result "ERROR: compile ${LIB_NAME} failure" } -cd ../iconv - ./build.sh -cd - +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -cd ../zlib - ./build.sh -cd - +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi -cd ../imageMagick - ./build.sh -cd - +cd ../zlib/ && ./build.sh && cd - +cd ../iconv/ && ./build.sh && cd - -export_cross +cd ../imageMagick && ./build.sh && cd - -compile_zbar +cd $PRJ_PATH +do_fetch + +do_build diff --git a/openlibs/zlib/build.sh b/openlibs/zlib/build.sh index 1f75580..ca9a7e5 100755 --- a/openlibs/zlib/build.sh +++ b/openlibs/zlib/build.sh @@ -1,43 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile zlib for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://zlib.net/ +LIB_NAME=zlib-1.2.11 +PACK_SUFIX=tar.gz -PREFIX_PATH=`pwd`/../install/ - +# LingYun source code FTP server LYFTP_SRC=http://master.weike-iot.com:2211/src/ +# library download URL address +LIB_URL=$LYFTP_SRC + +# Cross compiler for cross compile on Linux server CROSS_COMPILE=/opt/gcc-aarch32-10.3-2021.07/bin/arm-none-linux-gnueabihf- -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` + +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) + +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) + +# binaries install path +PREFIX_PATH=$TOP_PATH/install +BIN_PATH=$PREFIX_PATH/bin +LIB_PATH=$PREFIX_PATH/lib +INC_PATH=$PREFIX_PATH/include + +# check installed or not file +INST_FILE=$PREFIX_PATH/lib/libz.a + +# shell script will exit once get command error +set -e + +#+-------------------------+ +#| Shell script functions | +#+-------------------------+ + +function pr_error() { + echo -e "\033[40;31m $1 \033[0m" +} + +function pr_warn() { + echo -e "\033[40;33m $1 \033[0m" +} + +function pr_info() { + echo -e "\033[40;32m $1 \033[0m" } function check_result() { if [ $? != 0 ] ; then - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" - exit ; + pr_error "$1" fi } - -function export_cross() +# decompress a packet to destination path +function do_unpack() { + tarball=$1 + dstpath=`pwd` + + if [[ $# == 2 ]] ; then + dstpath=$2 + fi + + pr_info "decompress $tarball => $dstpath" + + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; + + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; + + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; + + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; + + *.tar) + tar -xf $tarball -C $dstpath + ;; + + *.zip) + unzip -qo $tarball -d $dstpath + ;; + + *) + pr_error "decompress Unsupport packet: $tarball" + return 1; + ;; + esac +} + +function do_export() +{ + BUILD_ARCH=$(uname -m) + if [[ $BUILD_ARCH =~ "arm" ]] ; then + pr_warn "local($BUILD_ARCH) compile $LIB_NAME" + return ; + fi + + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" + # export cross toolchain export CC=${CROSS_COMPILE}gcc + export CXX=${CROSS_COMPILE}g++ export AS=${CROSS_COMPILE}as export AR=${CROSS_COMPILE}ar export LD=${CROSS_COMPILE}ld @@ -46,7 +123,7 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure + # export cross configure export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " # Clear LDFLAGS and CFLAGS @@ -54,41 +131,51 @@ export CFLAGS= } - -function compile_zlib() +function do_fetch() { - SRC_NAME=zlib-1.2.11 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/lib/libz.a ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [ -e ${INST_FILE} ] ; then + pr_warn "$LIB_NAME compile and installed alredy" + exit ; fi - msg_banner "Start cross compile $SRC_NAME " - - if [ ! -f ${SRC_NAME}.${PACK_SUFIX} ] ; then - #wget https://zlib.net/${SRC_NAME}.${PACK_SUFIX} - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - ./configure --prefix=${PREFIX_PATH} - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + do_export -compile_zlib + ./configure --prefix=${PREFIX_PATH} + check_result "ERROR: configure ${LIB_NAME} failure" + make && make install + check_result "ERROR: compile ${LIB_NAME} failure" +} +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build -- Gitblit v1.9.1