From 8e62b03217c78e78eddf3ff8dbd5948dd4831aa6 Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Fri, 23 Aug 2024 10:48:29 +0800 Subject: [PATCH] update build shell script form openlibs --- openlibs/openssl/build.sh | 191 ++- openlibs/mosquitto/build.sh | 204 ++- openlibs/libxml2/build.sh | 166 +- openlibs/opencv/build.sh | 201 +++ openlibs/lrzsz/build.sh | 198 ++- hal/modules/libgpiod/build.sh | 174 +- openlibs/valgrind/build.sh | 212 ++- /dev/null | 99 -- openlibs/busybox/config/busybox-1.36.0.config | 110 + openlibs/sqlite/build.sh | 192 ++- openlibs/stunnel/build.sh | 202 ++- openlibs/cjson/build.sh | 182 +++ openlibs/busybox/build.sh | 195 +++ openlibs/pppd/build.sh | 216 +++- openlibs/libevent/build.sh | 186 ++- openlibs/libgpiod/build.sh | 174 +- 16 files changed, 1,947 insertions(+), 955 deletions(-) diff --git a/hal/modules/libgpiod/build.sh b/hal/modules/libgpiod/build.sh index a4ec3f4..d59af44 100755 --- a/hal/modules/libgpiod/build.sh +++ b/hal/modules/libgpiod/build.sh @@ -6,10 +6,10 @@ PACK_SUFIX=tar.gz # LingYun source code FTP server -LY_FTP=http://master.weike-iot.com:2211/src/ +LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address -LIB_URL=$LY_FTP +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- @@ -40,144 +40,144 @@ #+-------------------------+ function pr_error() { - echo -e "\033[40;31m $1 \033[0m" + echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { - echo -e "\033[40;33m $1 \033[0m" + echo -e "\033[40;33m $1 \033[0m" } function pr_info() { - echo -e "\033[40;32m $1 \033[0m" + echo -e "\033[40;32m $1 \033[0m" } function check_result() { - if [ $? != 0 ] ; then - pr_error "$1" - exit - fi + if [ $? != 0 ] ; then + pr_error "$1" + exit + fi } # decompress a packet to destination path function do_unpack() { - tarball=$1 - dstpath=`pwd` + tarball=$1 + dstpath=`pwd` - if [[ $# == 2 ]] ; then - dstpath=$2 - fi + if [[ $# == 2 ]] ; then + dstpath=$2 + fi - pr_info "decompress $tarball => $dstpath" + pr_info "decompress $tarball => $dstpath" - mkdir -p $dstpath - case $tarball in - *.tar.gz) - tar -xzf $tarball -C $dstpath - ;; + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; - *.tar.bz2) - tar -xjf $tarball -C $dstpath - ;; + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; - *.tar.xz) - tar -xJf $tarball -C $dstpath - ;; + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; - *.tar.zst) - tar -I zstd -xf $tarball -C $dstpath - ;; + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; - *.tar) - tar -xf $tarball -C $dstpath - ;; + *.tar) + tar -xf $tarball -C $dstpath + ;; - *.zip) - unzip -qo $tarball -d $dstpath - ;; + *.zip) + unzip -qo $tarball -d $dstpath + ;; - *) - pr_error "decompress Unsupport packet: $tarball" - return 1; - ;; - esac + *) + 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 + 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" + 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 + # 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 - # export cross configure - export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " + # export cross configure + export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " - # Clear LDFLAGS and CFLAGS - export LDFLAGS= - export CFLAGS= + # 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 [ -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 [ -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 + 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} + do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { - cd $LIB_NAME + cd $LIB_NAME - ./autogen.sh + ./autogen.sh - do_export + do_export - echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ - --cache-file=arm-linux.cache --enable-tools - check_result "ERROR: configure ${LIB_NAME} failure" + echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ + --cache-file=arm-linux.cache --enable-tools + check_result "ERROR: configure ${LIB_NAME} failure" - make -j ${JOBS} && make install - check_result "ERROR: compile ${LIB_NAME} failure" + make -j ${JOBS} && make install + check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { - rm -rf *${LIB_NAME}* + rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then - pr_warn "start clean ${LIB_NAME}" - do_clean - exit; + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; fi do_fetch diff --git a/openlibs/busybox/build.sh b/openlibs/busybox/build.sh index 615c9dd..be2b3a7 100755 --- a/openlibs/busybox/build.sh +++ b/openlibs/busybox/build.sh @@ -1,75 +1,184 @@ #!/bin/bash -set -e +# library name and version +# Official: https://busybox.net/downloads/ +LIB_NAME=busybox-1.36.0 +PACK_SUFIX=tar.bz2 -ROOTFS_PATH=`pwd`/../../linux-bsp/rootfs/ - +# 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- +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) -JOBS=`cat /proc/cpuinfo | grep processor | wc -l` +# top project absolute path +TOP_PATH=$(realpath $PRJ_PATH/..) -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# 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/busybox + +# 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 compile_busybox() +# decompress a packet to destination path +function do_unpack() { - SRC_NAME=busybox-1.31.0 - PACK_SUFIX=tar.bz2 + tarball=$1 + dstpath=`pwd` - if [ -f $SRC_NAME/busybox ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; - fi - - msg_banner "start download and compile $SRC_NAME " - - if [ ! -d $SRC_NAME ] ; then - if [ ! -f $SRC_NAME.${PACK_SUFIX} ] ; then - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - check_result "ERROR: download ${SRC_NAME} failure" - fi - - tar -xjf $SRC_NAME.${PACK_SUFIX} + if [[ $# == 2 ]] ; then + dstpath=$2 fi - cp config/${SRC_NAME}.config $SRC_NAME/.config + pr_info "decompress $tarball => $dstpath" - cd $SRC_NAME + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; - sed -i "s|^CONFIG_CROSS_COMPILER_PREFIX.*|CONFIG_CROSS_COMPILER_PREFIX=\"${CROSS_COMPILE}\"|g" .config - sed -i "s|^CONFIG_PREFIX.*|CONFIG_PREFIX=\"$ROOTFS_PATH\"|g" .config + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; - make - #make uninstall && sudo make install + *.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 -compile_busybox + 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 + # 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 do_build() +{ + cd $LIB_NAME + + cp $PRJ_PATH/config/${LIB_NAME}.config .config + + do_export + + make -j ${JOBS} CROSS_COMPILE=$CROSS_COMPILE + check_result "ERROR: compile ${LIB_NAME} failure" + + pr_info "${LIB_NAME} installed to '${BIN_PATH}'" + mkdir -p ${BIN_PATH} + install -m 755 busybox ${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/busybox/config/busybox-1.31.0.config b/openlibs/busybox/config/busybox-1.36.0.config similarity index 95% rename from openlibs/busybox/config/busybox-1.31.0.config rename to openlibs/busybox/config/busybox-1.36.0.config index 84497d1..cab3838 100644 --- a/openlibs/busybox/config/busybox-1.31.0.config +++ b/openlibs/busybox/config/busybox-1.36.0.config @@ -1,7 +1,7 @@ # # Automatically generated make config: don't edit -# Busybox version: 1.31.0 -# Mon Aug 12 14:27:57 2019 +# Busybox version: 1.36.0 +# Tue Aug 15 16:28:32 2023 # CONFIG_HAVE_DOT_CONFIG=y @@ -36,7 +36,6 @@ # CONFIG_FEATURE_CLEAN_UP is not set CONFIG_FEATURE_SYSLOG_INFO=y CONFIG_FEATURE_SYSLOG=y -CONFIG_PLATFORM_LINUX=y # # Build Options @@ -48,13 +47,14 @@ # CONFIG_FEATURE_LIBBUSYBOX_STATIC is not set # CONFIG_FEATURE_INDIVIDUAL is not set # CONFIG_FEATURE_SHARED_BUSYBOX is not set -CONFIG_CROSS_COMPILER_PREFIX="/opt/buildroot/cortex-a5/bin/arm-linux-" +CONFIG_CROSS_COMPILER_PREFIX="" CONFIG_SYSROOT="" CONFIG_EXTRA_CFLAGS="" CONFIG_EXTRA_LDFLAGS="" CONFIG_EXTRA_LDLIBS="" # CONFIG_USE_PORTABLE_CODE is not set CONFIG_STACK_OPTIMIZATION_386=y +CONFIG_STATIC_LIBGCC=y # # Installation Options ("make install" behavior) @@ -76,6 +76,7 @@ # CONFIG_DEBUG_SANITIZE is not set # CONFIG_UNIT_TEST is not set # CONFIG_WERROR is not set +# CONFIG_WARN_SIMPLE_MSG is not set CONFIG_NO_DEBUG_LIB=y # CONFIG_DMALLOC is not set # CONFIG_EFENCE is not set @@ -92,10 +93,16 @@ # CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set CONFIG_PASSWORD_MINLEN=6 CONFIG_MD5_SMALL=1 +CONFIG_SHA1_SMALL=3 +CONFIG_SHA1_HWACCEL=y +CONFIG_SHA256_HWACCEL=y CONFIG_SHA3_SMALL=1 -# CONFIG_FEATURE_FAST_TOP is not set -# CONFIG_FEATURE_ETC_NETWORKS is not set -# CONFIG_FEATURE_ETC_SERVICES is not set +CONFIG_FEATURE_NON_POSIX_CP=y +# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set +CONFIG_FEATURE_USE_SENDFILE=y +CONFIG_FEATURE_COPYBUF_KB=4 +CONFIG_MONOTONIC_SYSCALL=y +CONFIG_IOCTL_HEX2STR_ERROR=y CONFIG_FEATURE_EDITING=y CONFIG_FEATURE_EDITING_MAX_LEN=1024 # CONFIG_FEATURE_EDITING_VI is not set @@ -119,14 +126,9 @@ # CONFIG_UNICODE_BIDI_SUPPORT is not set # CONFIG_UNICODE_NEUTRAL_TABLE is not set # CONFIG_UNICODE_PRESERVE_BROKEN is not set -CONFIG_FEATURE_NON_POSIX_CP=y -# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set -CONFIG_FEATURE_USE_SENDFILE=y -CONFIG_FEATURE_COPYBUF_KB=4 -CONFIG_FEATURE_SKIP_ROOTFS=y -CONFIG_MONOTONIC_SYSCALL=y -CONFIG_IOCTL_HEX2STR_ERROR=y -CONFIG_FEATURE_HWIB=y +# CONFIG_LOOP_CONFIGURE is not set +# CONFIG_NO_LOOP_CONFIGURE is not set +CONFIG_TRY_LOOP_CONFIGURE=y # # Applets @@ -161,6 +163,8 @@ # CONFIG_CPIO is not set # CONFIG_FEATURE_CPIO_O is not set # CONFIG_FEATURE_CPIO_P is not set +# CONFIG_FEATURE_CPIO_IGNORE_DEVNO is not set +# CONFIG_FEATURE_CPIO_RENUMBER_INODES is not set CONFIG_DPKG=y # CONFIG_DPKG_DEB is not set CONFIG_GZIP=y @@ -196,6 +200,22 @@ # # Coreutils # +CONFIG_FEATURE_VERBOSE=y + +# +# Common options for date and touch +# +CONFIG_FEATURE_TIMEZONE=y + +# +# Common options for cp and mv +# +CONFIG_FEATURE_PRESERVE_HARDLINKS=y + +# +# Common options for df, du, ls +# +CONFIG_FEATURE_HUMAN_READABLE=y CONFIG_BASENAME=y CONFIG_CAT=y CONFIG_FEATURE_CATN=y @@ -206,11 +226,13 @@ CONFIG_FEATURE_CHOWN_LONG_OPTIONS=y CONFIG_CHROOT=y CONFIG_CKSUM=y +CONFIG_CRC32=y CONFIG_COMM=y CONFIG_CP=y CONFIG_FEATURE_CP_LONG_OPTIONS=y CONFIG_FEATURE_CP_REFLINK=y CONFIG_CUT=y +CONFIG_FEATURE_CUT_REGEX=y CONFIG_DATE=y CONFIG_FEATURE_DATE_ISOFMT=y # CONFIG_FEATURE_DATE_NANO is not set @@ -222,6 +244,7 @@ CONFIG_FEATURE_DD_STATUS=y CONFIG_DF=y CONFIG_FEATURE_DF_FANCY=y +CONFIG_FEATURE_SKIP_ROOTFS=y CONFIG_DIRNAME=y CONFIG_DOS2UNIX=y CONFIG_UNIX2DOS=y @@ -315,13 +338,13 @@ CONFIG_FEATURE_TEST_64=y CONFIG_TIMEOUT=y CONFIG_TOUCH=y -CONFIG_FEATURE_TOUCH_NODEREF=y CONFIG_FEATURE_TOUCH_SUSV3=y CONFIG_TR=y CONFIG_FEATURE_TR_CLASSES=y CONFIG_FEATURE_TR_EQUIV=y CONFIG_TRUE=y CONFIG_TRUNCATE=y +CONFIG_TSORT=y CONFIG_TTY=y CONFIG_UNAME=y CONFIG_UNAME_OSNAME="GNU/Linux" @@ -330,6 +353,7 @@ CONFIG_UNLINK=y CONFIG_USLEEP=y CONFIG_UUDECODE=y +CONFIG_BASE32=y CONFIG_BASE64=y CONFIG_UUENCODE=y CONFIG_WC=y @@ -339,21 +363,6 @@ CONFIG_USERS=y CONFIG_WHOAMI=y CONFIG_YES=y - -# -# Common options -# -CONFIG_FEATURE_VERBOSE=y - -# -# Common options for cp and mv -# -CONFIG_FEATURE_PRESERVE_HARDLINKS=y - -# -# Common options for df, du, ls -# -CONFIG_FEATURE_HUMAN_READABLE=y # # Console Utilities @@ -422,6 +431,7 @@ CONFIG_FEATURE_VI_MAX_LEN=4096 # CONFIG_FEATURE_VI_8BIT is not set CONFIG_FEATURE_VI_COLON=y +CONFIG_FEATURE_VI_COLON_EXPAND=y CONFIG_FEATURE_VI_YANKMARK=y CONFIG_FEATURE_VI_SEARCH=y # CONFIG_FEATURE_VI_REGEX_SEARCH is not set @@ -435,6 +445,7 @@ CONFIG_FEATURE_VI_UNDO=y CONFIG_FEATURE_VI_UNDO_QUEUE=y CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256 +CONFIG_FEATURE_VI_VERBOSE_STATUS=y CONFIG_FEATURE_ALLOW_EXEC=y # @@ -443,7 +454,11 @@ CONFIG_FIND=y CONFIG_FEATURE_FIND_PRINT0=y CONFIG_FEATURE_FIND_MTIME=y +CONFIG_FEATURE_FIND_ATIME=y +CONFIG_FEATURE_FIND_CTIME=y CONFIG_FEATURE_FIND_MMIN=y +CONFIG_FEATURE_FIND_AMIN=y +CONFIG_FEATURE_FIND_CMIN=y CONFIG_FEATURE_FIND_PERM=y CONFIG_FEATURE_FIND_TYPE=y CONFIG_FEATURE_FIND_EXECUTABLE=y @@ -451,6 +466,7 @@ CONFIG_FEATURE_FIND_MAXDEPTH=y CONFIG_FEATURE_FIND_NEWER=y CONFIG_FEATURE_FIND_INUM=y +CONFIG_FEATURE_FIND_SAMEFILE=y CONFIG_FEATURE_FIND_EXEC=y CONFIG_FEATURE_FIND_EXEC_PLUS=y CONFIG_FEATURE_FIND_USER=y @@ -462,6 +478,7 @@ CONFIG_FEATURE_FIND_PRUNE=y CONFIG_FEATURE_FIND_QUIT=y CONFIG_FEATURE_FIND_DELETE=y +CONFIG_FEATURE_FIND_EMPTY=y CONFIG_FEATURE_FIND_PATH=y CONFIG_FEATURE_FIND_REGEX=y # CONFIG_FEATURE_FIND_CONTEXT is not set @@ -621,7 +638,6 @@ CONFIG_GETOPT=y CONFIG_FEATURE_GETOPT_LONG=y CONFIG_HEXDUMP=y -CONFIG_FEATURE_HEXDUMP_REVERSE=y # CONFIG_HD is not set CONFIG_XXD=y CONFIG_HWCLOCK=y @@ -692,6 +708,7 @@ CONFIG_SWITCH_ROOT=y CONFIG_TASKSET=y CONFIG_FEATURE_TASKSET_FANCY=y +CONFIG_FEATURE_TASKSET_CPULIST=y CONFIG_UEVENT=y CONFIG_UMOUNT=y CONFIG_FEATURE_UMOUNT_ALL=y @@ -712,6 +729,7 @@ CONFIG_FEATURE_VOLUMEID_BCACHE=y CONFIG_FEATURE_VOLUMEID_BTRFS=y CONFIG_FEATURE_VOLUMEID_CRAMFS=y +CONFIG_FEATURE_VOLUMEID_EROFS=y CONFIG_FEATURE_VOLUMEID_EXFAT=y CONFIG_FEATURE_VOLUMEID_EXT=y CONFIG_FEATURE_VOLUMEID_F2FS=y @@ -739,6 +757,7 @@ # Miscellaneous Utilities # CONFIG_ADJTIMEX=y +CONFIG_ASCII=y # CONFIG_BBCONFIG is not set # CONFIG_FEATURE_COMPRESS_BBCONFIG is not set CONFIG_BC=y @@ -809,6 +828,7 @@ CONFIG_FEATURE_MAKEDEVS_TABLE=y # CONFIG_MAN is not set CONFIG_MICROCOM=y +CONFIG_MIM=y # CONFIG_MT is not set CONFIG_NANDWRITE=y CONFIG_NANDDUMP=y @@ -818,10 +838,12 @@ # CONFIG_RFKILL is not set CONFIG_RUNLEVEL=y CONFIG_RX=y +CONFIG_SEEDRNG=y CONFIG_SETFATTR=y CONFIG_SETSERIAL=y CONFIG_STRINGS=y CONFIG_TIME=y +CONFIG_TREE=y CONFIG_TS=y CONFIG_TTYSIZE=y CONFIG_UBIATTACH=y @@ -833,6 +855,7 @@ CONFIG_UBIRENAME=y CONFIG_VOLNAME=y CONFIG_WATCHDOG=y +# CONFIG_FEATURE_WATCHDOG_OPEN_TWICE is not set # # Networking Utilities @@ -841,6 +864,9 @@ # CONFIG_FEATURE_UNIX_LOCAL is not set # CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set # CONFIG_VERBOSE_RESOLUTION_ERRORS is not set +# CONFIG_FEATURE_ETC_NETWORKS is not set +# CONFIG_FEATURE_ETC_SERVICES is not set +CONFIG_FEATURE_HWIB=y # CONFIG_FEATURE_TLS_SHA1 is not set CONFIG_ARP=y CONFIG_ARPING=y @@ -859,6 +885,7 @@ CONFIG_HOSTNAME=y CONFIG_DNSDOMAINNAME=y # CONFIG_HTTPD is not set +CONFIG_FEATURE_HTTPD_PORT_DEFAULT=0 # CONFIG_FEATURE_HTTPD_RANGES is not set # CONFIG_FEATURE_HTTPD_SETUID is not set # CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set @@ -870,6 +897,10 @@ # CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set # CONFIG_FEATURE_HTTPD_PROXY is not set # CONFIG_FEATURE_HTTPD_GZIP is not set +# CONFIG_FEATURE_HTTPD_ETAG is not set +# CONFIG_FEATURE_HTTPD_LAST_MODIFIED is not set +# CONFIG_FEATURE_HTTPD_DATE is not set +# CONFIG_FEATURE_HTTPD_ACL_IP is not set CONFIG_IFCONFIG=y CONFIG_FEATURE_IFCONFIG_STATUS=y CONFIG_FEATURE_IFCONFIG_SLIP=y @@ -947,6 +978,7 @@ CONFIG_FEATURE_TELNET_WIDTH=y # CONFIG_TELNETD is not set # CONFIG_FEATURE_TELNETD_STANDALONE is not set +CONFIG_FEATURE_TELNETD_PORT_DEFAULT=0 # CONFIG_FEATURE_TELNETD_INETD_WAIT is not set CONFIG_TFTP=y CONFIG_FEATURE_TFTP_PROGRESS_BAR=y @@ -967,6 +999,7 @@ CONFIG_WGET=y CONFIG_FEATURE_WGET_LONG_OPTIONS=y CONFIG_FEATURE_WGET_STATUSBAR=y +CONFIG_FEATURE_WGET_FTP=y CONFIG_FEATURE_WGET_AUTHENTICATION=y CONFIG_FEATURE_WGET_TIMEOUT=y CONFIG_FEATURE_WGET_HTTPS=y @@ -983,6 +1016,7 @@ CONFIG_FEATURE_UDHCPC_ARPING=y CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script" +CONFIG_UDHCPC6_DEFAULT_SCRIPT="" # CONFIG_UDHCPC6 is not set # CONFIG_FEATURE_UDHCPC6_RFC3646 is not set # CONFIG_FEATURE_UDHCPC6_RFC4704 is not set @@ -992,6 +1026,7 @@ # # Common options for DHCP applets # +CONFIG_UDHCPC_DEFAULT_INTERFACE="eth0" # CONFIG_FEATURE_UDHCP_PORT is not set CONFIG_UDHCP_DEBUG=2 CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80 @@ -1009,17 +1044,19 @@ # # Mail Utilities # +CONFIG_FEATURE_MIME_CHARSET="" # CONFIG_MAKEMIME is not set # CONFIG_POPMAILDIR is not set # CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set # CONFIG_REFORMIME is not set # CONFIG_FEATURE_REFORMIME_COMPAT is not set # CONFIG_SENDMAIL is not set -CONFIG_FEATURE_MIME_CHARSET="" # # Process Utilities # +# CONFIG_FEATURE_FAST_TOP is not set +CONFIG_FEATURE_SHOW_THREADS=y CONFIG_FREE=y CONFIG_FUSER=y CONFIG_IOSTAT=y @@ -1058,7 +1095,6 @@ CONFIG_UPTIME=y CONFIG_FEATURE_UPTIME_UTMP_SUPPORT=y CONFIG_WATCH=y -CONFIG_FEATURE_SHOW_THREADS=y # # Runit Utilities @@ -1099,6 +1135,7 @@ CONFIG_BASH_IS_ASH=y # CONFIG_BASH_IS_HUSH is not set # CONFIG_BASH_IS_NONE is not set +CONFIG_SHELL_ASH=y CONFIG_ASH=y CONFIG_ASH_OPTIMIZE_FOR_SIZE=y CONFIG_ASH_INTERNAL_GLOB=y @@ -1114,15 +1151,17 @@ CONFIG_ASH_ECHO=y CONFIG_ASH_PRINTF=y CONFIG_ASH_TEST=y +CONFIG_ASH_SLEEP=y CONFIG_ASH_HELP=y CONFIG_ASH_GETOPTS=y CONFIG_ASH_CMDCMD=y CONFIG_CTTYHACK=y # CONFIG_HUSH is not set +# CONFIG_SHELL_HUSH is not set # CONFIG_HUSH_BASH_COMPAT is not set # CONFIG_HUSH_BRACE_EXPANSION is not set -# CONFIG_HUSH_LINENO_VAR is not set # CONFIG_HUSH_BASH_SOURCE_CURDIR is not set +# CONFIG_HUSH_LINENO_VAR is not set # CONFIG_HUSH_INTERACTIVE is not set # CONFIG_HUSH_SAVEHISTORY is not set # CONFIG_HUSH_JOB is not set @@ -1185,6 +1224,7 @@ CONFIG_FEATURE_REMOTE_LOG=y CONFIG_FEATURE_SYSLOGD_DUP=y CONFIG_FEATURE_SYSLOGD_CFG=y +# CONFIG_FEATURE_SYSLOGD_PRECISE_TIMESTAMPS is not set CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256 CONFIG_FEATURE_IPC_SYSLOG=y CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=16 diff --git a/openlibs/cJSON/build.sh b/openlibs/cJSON/build.sh deleted file mode 100755 index 69e60a3..0000000 --- a/openlibs/cJSON/build.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/bash - -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile JSON library cJSON 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- - -mkdir -p ${PREFIX_PATH} - -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 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 - - # export cross configure - export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " - - # Clear LDFLAGS and CFLAGS - export LDFLAGS= - export CFLAGS= -} - - -function compile_cJSON() -{ - SRC_NAME=cJSON-1.7.14 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/lib/libcjson.so ] ; 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 - # https://github.com/DaveGamble/cJSON/tags - wget ${LYFTP_SRC}/${SRC_NAME}.${PACK_SUFIX} - - check_result "ERROR: download ${SRC_NAME} failure" - fi - - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} - - - sed -i -e "s|^CC.*|CC = ${CROSS_COMPILE}gcc -std=c89|g" Makefile - sed -i -e "s|^PREFIX.*|PREFIX = ${PREFIX_PATH}|g" Makefile - - make - check_result "ERROR: compile ${SRC_NAME} failure" - - make install - - cd - -} - -export_cross - -compile_cJSON - - diff --git a/openlibs/cjson/build.sh b/openlibs/cjson/build.sh new file mode 100755 index 0000000..5b94603 --- /dev/null +++ b/openlibs/cjson/build.sh @@ -0,0 +1,182 @@ +#!/bin/bash + +# library name and version +# Official: https://github.com/DaveGamble/cJSON +LIB_NAME=cJSON-1.7.15 +PACK_SUFIX=tar.gz + +# 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- + +# 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/libcjson.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 + pr_error "$1" + fi +} +# 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 + + # 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 do_build() +{ + cd $LIB_NAME + + do_export + + sed -i "s|^CC =.*|CC = ${CROSS_COMPILE}gcc -std=c89|" Makefile + + make && make PREFIX=$PREFIX_PATH install + check_result "ERROR: compile ${LIB_NAME} failure" + + cp libcjson.a $PREFIX_PATH/lib +} + +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/libevent/build.sh b/openlibs/libevent/build.sh index 3e6f109..63d7c92 100755 --- a/openlibs/libevent/build.sh +++ b/openlibs/libevent/build.sh @@ -1,41 +1,117 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile libevent 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/libevent/libevent/releases/download/ +LIB_NAME=libevent-2.1.11-stable +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/libevent.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_libevent() +function do_fetch() { - SRC_NAME=libevent-2.1.11-stable - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/lib/libevent.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://github.com/libevent/libevent/releases/download/release-2.1.11-stable/${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-thread-support --enable-openssl --enable-function-sections - 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_libevent + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ + --enable-thread-support --enable-openssl --enable-function-sections + 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/libgpiod/build.sh b/openlibs/libgpiod/build.sh index a4ec3f4..d59af44 100755 --- a/openlibs/libgpiod/build.sh +++ b/openlibs/libgpiod/build.sh @@ -6,10 +6,10 @@ PACK_SUFIX=tar.gz # LingYun source code FTP server -LY_FTP=http://master.weike-iot.com:2211/src/ +LYFTP_SRC=http://master.weike-iot.com:2211/src/ # library download URL address -LIB_URL=$LY_FTP +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- @@ -40,144 +40,144 @@ #+-------------------------+ function pr_error() { - echo -e "\033[40;31m $1 \033[0m" + echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { - echo -e "\033[40;33m $1 \033[0m" + echo -e "\033[40;33m $1 \033[0m" } function pr_info() { - echo -e "\033[40;32m $1 \033[0m" + echo -e "\033[40;32m $1 \033[0m" } function check_result() { - if [ $? != 0 ] ; then - pr_error "$1" - exit - fi + if [ $? != 0 ] ; then + pr_error "$1" + exit + fi } # decompress a packet to destination path function do_unpack() { - tarball=$1 - dstpath=`pwd` + tarball=$1 + dstpath=`pwd` - if [[ $# == 2 ]] ; then - dstpath=$2 - fi + if [[ $# == 2 ]] ; then + dstpath=$2 + fi - pr_info "decompress $tarball => $dstpath" + pr_info "decompress $tarball => $dstpath" - mkdir -p $dstpath - case $tarball in - *.tar.gz) - tar -xzf $tarball -C $dstpath - ;; + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; - *.tar.bz2) - tar -xjf $tarball -C $dstpath - ;; + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; - *.tar.xz) - tar -xJf $tarball -C $dstpath - ;; + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; - *.tar.zst) - tar -I zstd -xf $tarball -C $dstpath - ;; + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; - *.tar) - tar -xf $tarball -C $dstpath - ;; + *.tar) + tar -xf $tarball -C $dstpath + ;; - *.zip) - unzip -qo $tarball -d $dstpath - ;; + *.zip) + unzip -qo $tarball -d $dstpath + ;; - *) - pr_error "decompress Unsupport packet: $tarball" - return 1; - ;; - esac + *) + 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 + 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" + 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 + # 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 - # export cross configure - export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " + # export cross configure + export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " - # Clear LDFLAGS and CFLAGS - export LDFLAGS= - export CFLAGS= + # 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 [ -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 [ -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 + 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} + do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { - cd $LIB_NAME + cd $LIB_NAME - ./autogen.sh + ./autogen.sh - do_export + do_export - echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ - --cache-file=arm-linux.cache --enable-tools - check_result "ERROR: configure ${LIB_NAME} failure" + echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ + --cache-file=arm-linux.cache --enable-tools + check_result "ERROR: configure ${LIB_NAME} failure" - make -j ${JOBS} && make install - check_result "ERROR: compile ${LIB_NAME} failure" + make -j ${JOBS} && make install + check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { - rm -rf *${LIB_NAME}* + rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then - pr_warn "start clean ${LIB_NAME}" - do_clean - exit; + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; fi do_fetch diff --git a/openlibs/libxml2/build.sh b/openlibs/libxml2/build.sh index 3abf05a..1501746 100755 --- a/openlibs/libxml2/build.sh +++ b/openlibs/libxml2/build.sh @@ -2,7 +2,7 @@ # library name and version # Official: https://download.gnome.org/sources/libxml2/ -LIB_NAME=libxml2-2.13.3 +LIB_NAME=libxml2-2.11.5 PACK_SUFIX=tar.xz # LingYun source code FTP server @@ -40,140 +40,140 @@ #+-------------------------+ function pr_error() { - echo -e "\033[40;31m $1 \033[0m" + echo -e "\033[40;31m $1 \033[0m" } function pr_warn() { - echo -e "\033[40;33m $1 \033[0m" + echo -e "\033[40;33m $1 \033[0m" } function pr_info() { - echo -e "\033[40;32m $1 \033[0m" + echo -e "\033[40;32m $1 \033[0m" } function check_result() { - if [ $? != 0 ] ; then - pr_error $1 - fi + if [ $? != 0 ] ; then + pr_error "$1" + fi } # decompress a packet to destination path function do_unpack() { - tarball=$1 - dstpath=`pwd` + tarball=$1 + dstpath=`pwd` - if [[ $# == 2 ]] ; then - dstpath=$2 - fi + if [[ $# == 2 ]] ; then + dstpath=$2 + fi - pr_info "decompress $tarball => $dstpath" + pr_info "decompress $tarball => $dstpath" - mkdir -p $dstpath - case $tarball in - *.tar.gz) - tar -xzf $tarball -C $dstpath - ;; + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; - *.tar.bz2) - tar -xjf $tarball -C $dstpath - ;; + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; - *.tar.xz) - tar -xJf $tarball -C $dstpath - ;; + *.tar.xz) + tar -xJf $tarball -C $dstpath + ;; - *.tar.zst) - tar -I zstd -xf $tarball -C $dstpath - ;; + *.tar.zst) + tar -I zstd -xf $tarball -C $dstpath + ;; - *.tar) - tar -xf $tarball -C $dstpath - ;; + *.tar) + tar -xf $tarball -C $dstpath + ;; - *.zip) - unzip -qo $tarball -d $dstpath - ;; + *.zip) + unzip -qo $tarball -d $dstpath + ;; - *) - pr_error "decompress Unsupport packet: $tarball" - return 1; - ;; - esac + *) + 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 + 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" + 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 + # 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 - # export cross configure - export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " + # export cross configure + export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " - # Clear LDFLAGS and CFLAGS - export LDFLAGS= - export CFLAGS= + # 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 [ -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 [ -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 + 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} + do_unpack ${LIB_NAME}.${PACK_SUFIX} } function do_build() { - cd $LIB_NAME + cd $LIB_NAME - do_export + do_export - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ - --without-python --without-zlib --without-lzma - check_result "ERROR: configure ${LIB_NAME} failure" + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ + --without-python --without-zlib --without-lzma + check_result "ERROR: configure ${LIB_NAME} failure" - make && make install - check_result "ERROR: compile ${LIB_NAME} failure" + make && make install + check_result "ERROR: compile ${LIB_NAME} failure" } function do_clean() { - rm -rf *${LIB_NAME}* + rm -rf *${LIB_NAME}* } if [[ $# == 1 && $1 == -c ]] ;then - pr_warn "start clean ${LIB_NAME}" - do_clean - exit; + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; fi do_fetch diff --git a/openlibs/lrzsz/build.sh b/openlibs/lrzsz/build.sh index ecbec6f..e8c1d10 100755 --- a/openlibs/lrzsz/build.sh +++ b/openlibs/lrzsz/build.sh @@ -1,44 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile lzrz for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: http://www.ohse.de/uwe/releases/ +LIB_NAME=lrzsz-0.12.20 +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/sz + +# 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,46 +131,56 @@ export CFLAGS= } -function compile_lrzsz() +function do_fetch() { - SRC_NAME=lrzsz-0.12.20 - PACK_SUFIX=tar.gz - IMG_NAME=sz - - if [ -f ${PRJ_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.ohse.de/uwe/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 -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-thread-support --enable-openssl --enable-function-sections - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} ${PREFIX_PATH}/bin/lrz - ${STRIP} ${PREFIX_PATH}/bin/lsz - - cp ${PREFIX_PATH}/bin/lrz ${PRJ_PATH}/rz - cp ${PREFIX_PATH}/bin/lsz ${PRJ_PATH}/sz - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + do_export -compile_lrzsz + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} + check_result "ERROR: configure ${LIB_NAME} failure" + make + check_result "ERROR: compile ${LIB_NAME} failure" + + 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}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi + +do_fetch + +do_build diff --git a/openlibs/mosquitto/build.sh b/openlibs/mosquitto/build.sh index 2623d8c..555e399 100755 --- a/openlibs/mosquitto/build.sh +++ b/openlibs/mosquitto/build.sh @@ -1,41 +1,117 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile MQTT C library mosquitto for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://mosquitto.org/ +LIB_NAME=mosquitto-2.0.15 +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/mosquitto + +# 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,51 +131,61 @@ export CFLAGS= } - -function compile_mosquitto() +function do_fetch() { - SRC_NAME=mosquitto-1.6.4 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/bin/mosquitto ] ; 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://mosquitto.org/files/source/${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 LDFLAGS="-L${PREFIX_PATH}/lib -lcrypto -lssl -ldl -lpthread" - export DESTDIR=${PREFIX_PATH} - - make WITH_SRV=no WITH_UUID=no - check_result "ERROR: compile ${SRC_NAME} failure" - - make DESTDIR=${PREFIX_PATH} prefix=/ install - cp src/mosquitto ${PREFIX_PATH}/bin - ${STRIP} ${PREFIX_PATH}/bin/mosquitto* - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } -if [ ! -f ${PREFIX_PATH}//lib/libcrypto.a ] ; then - cd ../openssl - ./build.sh - cd - +function do_build() +{ + cd $LIB_NAME + + do_export + + export CFLAGS=-I${INC_PATH} + export LDFLAGS="-L${LIB_PATH} -lcrypto -lssl -ldl -lpthread" + export DESTDIR=${PREFIX_PATH} + + make WITH_UUID=no WITH_STATIC_LIBRARIES=yes + check_result "ERROR: compile ${LIB_NAME} failure" + + make DESTDIR=${PREFIX_PATH} prefix=/ install + check_result "ERROR: compile ${LIB_NAME} failure" + + install -m 755 src/mosquitto $BIN_PATH + install -m 644 lib/libmosquitto.a $LIB_PATH +} + +function do_clean() +{ + rm -rf *${LIB_NAME}* +} + +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; fi -export_cross +cd ../openssl && ./build.sh && cd - +cd ../cjson && ./build.sh && cd - -compile_mosquitto +do_fetch +do_build diff --git a/openlibs/opencv/build.sh b/openlibs/opencv/build.sh index 77179d5..d6c53da 100755 --- a/openlibs/opencv/build.sh +++ b/openlibs/opencv/build.sh @@ -1,84 +1,197 @@ #!/bin/bash -set -e +# library name and version +# Official: https://opencv.org/ +LIB_NAME=opencv-4.8.0 +PACK_SUFIX=zip -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- -TOOLCHAIN=cortexa7.toolchain.cmake +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` -JOBS=`cat /proc/cpuinfo | grep processor | wc -l` +# this project absolute path +PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd) -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# 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/opencv + +# 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 compile_opencv() +# decompress a packet to destination path +function do_unpack() { - SRC_NAME=opencv-3.4.6 - PACK_SUFIX=zip + tarball=$1 + dstpath=`pwd` - if [ -f ${PREFIX_PATH}/lib/libopencv_core.so ] ; then - msg_banner "$SRC_NAME already compile and installed" - return 0; + if [[ $# == 2 ]] ; then + dstpath=$2 fi - msg_banner "Start cross compile $SRC_NAME " + pr_info "decompress $tarball => $dstpath" + mkdir -p $dstpath + case $tarball in + *.tar.gz) + tar -xzf $tarball -C $dstpath + ;; - if [ ! -d $SRC_NAME ] ; then - if [ ! -f $SRC_NAME.zip ] ; then - wget $LYFTP_SRC/$SRC_NAME.${PACK_SUFIX} - fi + *.tar.bz2) + tar -xjf $tarball -C $dstpath + ;; - unzip $SRC_NAME.${PACK_SUFIX} + *.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_error "ERROR: local($BUILD_ARCH) compile $LIB_NAME not support for it's too slow" + exit 0; fi - cd $SRC_NAME + pr_warn "cross(${CROSS_COMPILE}) compile $LIB_NAME" - rm -f platforms/linux/${TOOLCHAIN} + # 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 + + # 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 do_build() +{ + cd $LIB_NAME + + do_export + + TOOLCHAIN=armlinux.toolchain.cmake + rm -f platforms/linux/${TOOLCHAIN} + cat >platforms/linux/${TOOLCHAIN} <<EOF - set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version") set(GNU_MACHINE "${CROSS_COMPILE%*-}" CACHE STRING "GNU compiler triple") include("\${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake") EOF - mkdir -p release - cd release + mkdir -p build && cd build - cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=`pwd`/../../../install \ + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PREFIX_PATH \ -DCMAKE_TOOLCHAIN_FILE="../platforms/linux/${TOOLCHAIN}" -DSOFTFP=ON -DENABLE_PROFILING=OFF \ -DWITH_OPENCL=OFF -DWITH_TBB=ONĀ -DWITH_V4L=ON -DHAVE_CAMV4L2=ON -DBUILD_TESTS=OFF \ - -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DWITH_FFMPEG=ON -DHAVE_FFMPEG=ON \ - -DBUILD_opencv_js=OFF -DENABLE_NEON=OFF -DENABLE_VFPV3=OFF ../ + -DINSTALL_PYTHON_EXAMPLES=OFF -DBUILD_EXAMPLES=OFF -DWITH_FFMPEG=OFF -DHAVE_FFMPEG=OFF \ + -DBUILD_opencv_js=OFF ../ - make && make install - - cd - + make -j ${JOBS} && make install + check_result "ERROR: compile ${LIB_NAME} failure" } -compile_opencv +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/openssl/build.sh b/openlibs/openssl/build.sh index 9e4ceac..3c4749f 100755 --- a/openlibs/openssl/build.sh +++ b/openlibs/openssl/build.sh @@ -1,44 +1,120 @@ #!/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 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://www.openssl.org/ +LIB_NAME=openssl-1.1.1v +PACK_SUFIX=tar.gz -PROJ_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/openssl + +# 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,35 +131,52 @@ export CFLAGS= } -function compile_openssl() +function do_fetch() { - SRC_NAME=openssl-1.1.1v - 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 - 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 + if [ -d $LIB_NAME ] ; then + pr_warn "$LIB_NAME fetch already" + return ; + fi - tar -xzf ${SRC_NAME}.${PACK_SUFIX} - cd ${SRC_NAME} - - CROSS_COMPILE=${CROSS_COMPILE} CFLAGS=-I${PROJ_PATH}/cryptodev-linux ./Configure \ - threads -shared -no-zlib --prefix=$PREFIX_PATH --openssldir=$PREFIX_PATH \ - enable-devcryptoeng linux-armv4 + if [ ! -f ${LIB_NAME}.${PACK_SUFIX} ] ; then + wget ${LIB_URL}/${LIB_NAME}.${PACK_SUFIX} + check_result "ERROR: download ${LIB_NAME} failure" + fi - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" + do_unpack ${LIB_NAME}.${PACK_SUFIX} +} - cd - -} +function do_build() +{ + cd $LIB_NAME -compile_openssl + do_export + ./Configure linux-armv4 \ + threads -shared -no-zlib --prefix=$PREFIX_PATH --openssldir=$PREFIX_PATH + 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/pppd/build.sh b/openlibs/pppd/build.sh index 18af25b..2b9cd52 100755 --- a/openlibs/pppd/build.sh +++ b/openlibs/pppd/build.sh @@ -1,45 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile pppd 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/ppp-project/ppp/tags +LIB_NAME=ppp-2.5.0 +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- -SYSROOT=`${CROSS_COMPILE}gcc -print-sysroot` +# compile jobs +JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` -function msg_banner() -{ - echo "" - echo "+-----------------------------------------------------------------------" - echo "| $1 " - echo "+-----------------------------------------------------------------------" - echo "" +# 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/pppd + +# 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,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 @@ -56,58 +131,63 @@ export CFLAGS= } -function compile_pppd() +function do_fetch() { - SRC_NAME=ppp-2.4.7 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/pppd ] ; 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://download.samba.org/pub/ppp/${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 - rm -rf ${SRC_NAME} - tar -xzf ${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} - patch -p1 < ../patch/${SRC_NAME}.patch - - sed -i -e "s|.*CC = .*|CC=${CROSS_COMPILE}gcc|g" pppd/Makefile.linux - sed -i -e "s|^OPENSSL_INCLUDE_DIR=.*|OPENSSL_INCLUDE_DIR=${SYSROOT}/usr/include/openssl|g" pppd/Makefile.linux - sed -i -e "s|.*CC = .*|CC=${CROSS_COMPILE}gcc|g" chat/Makefile.linux - - cd pppd - make CC="${CROSS_COMPILE}gcc -static" -f Makefile.linux && ${CROSS_COMPILE}strip pppd - check_result "ERROR: compile ${SRC_NAME} pppd failure" - cp pppd ../../ - cd - - - cd chat - make CC="${CROSS_COMPILE}gcc -static" -f Makefile.linux && ${CROSS_COMPILE}strip chat - check_result "ERROR: compile ${SRC_NAME} chat failure" - cp chat ../.. - cd - - - check_result "ERROR: compile ${SRC_NAME} failure" - - cd .. - - cp pppd chat ${PREFIX_PATH} - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -export_cross + if [ ! -e configure ] ; then + ./autogen.sh + fi -compile_pppd + do_export + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} \ + --disable-plugins --disable-eaptls --disable-peap \ + --with-openssl=${PREFIX_PATH} + + check_result "ERROR: configure ${LIB_NAME} failure" + + sed -i -e "/HAVE_CRYPT_H/d" pppd/config.h + make -j ${JOBS} CFLAGS="-I ${INC_PATH}" && make install + check_result "ERROR: compile ${LIB_NAME} failure" + + pr_info "${LIB_NAME} installed to '${BIN_PATH}'" + install -m 755 pppd/pppd ${BIN_PATH} + install -m 755 chat/chat ${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/sqlite/build.sh b/openlibs/sqlite/build.sh index ce0682e..a7c2fa5 100755 --- a/openlibs/sqlite/build.sh +++ b/openlibs/sqlite/build.sh @@ -1,43 +1,120 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile sqlite for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2011.04.12 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://www.sqlite.org/download.html +LIB_NAME=sqlite-autoconf-3420000 +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/sqlite3 + +# 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,44 +131,51 @@ export CFLAGS= } - -function compile_sqlite() +function do_fetch() { - SRC_NAME=sqlite-autoconf-3290000 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/bin/sqlite3 ] ; 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.sqlite.org/2019/${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} --enable-static - - check_result "ERROR: configure ${SRC_NAME} failure" - - make && make install - check_result "ERROR: compile ${SRC_NAME} failure" - - - ${STRIP} ${PREFIX_PATH}/bin/sqlite3 - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } -export_cross +function do_build() +{ + cd $LIB_NAME -compile_sqlite + do_export + ./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/stunnel/build.sh b/openlibs/stunnel/build.sh index 62b6714..85722b8 100755 --- a/openlibs/stunnel/build.sh +++ b/openlibs/stunnel/build.sh @@ -1,41 +1,117 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile stunnel for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2018.08.16 -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://www.stunnel.org/downloads.html +LIB_NAME=stunnel-5.70 +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/stunnel + +# 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,57 +131,55 @@ export CFLAGS= } - -function compile_stunnel() +function do_fetch() { - SRC_NAME=stunnel-5.55 - PACK_SUFIX=tar.gz - - if [ -f ${PREFIX_PATH}/bin/stunnel ] ; 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.usenix.org.uk/mirrors/stunnel/${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 - # fix can't load library 'libssp.so.0' bug - sed -i -e "s/fstack-protector/pthread/g" configure - - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static --disable-shared --disable-largefile --disable-ipv6 \ - --disable-systemd --disable-libwrap --with-ssl=${PREFIX_PATH} CFLAGS="-DHAVE_GETNAMEINFO -UHAVE_DAEMON " - check_result "ERROR: configure ${SRC_NAME} failure" - - sed -i -e "s|^LDFLAGS =.*|LDFLAGS =-static|g" src/Makefile - sed -i -e "s|^#define HAVE_DAEMON.*|#undef HAVE_DAEMON|g" src/config.h - make - check_result "ERROR: compile ${SRC_NAME} failure" - - ${STRIP} src/stunnel - cp src/stunnel ${PREFIX_PATH}/bin - - cd - + do_unpack ${LIB_NAME}.${PACK_SUFIX} } +function do_build() +{ + cd $LIB_NAME -if [ ! -f ${PREFIX_PATH}/lib/libcrypto.so ] ; then - cd ../openssl - ./build.sh - cd - + do_export + + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static \ + --disable-shared --disable-largefile --disable-ipv6 \ + --disable-systemd --disable-libwrap --with-ssl=${PREFIX_PATH} + 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 +cd ../openssl && ./build.sh && cd - -export_cross +do_fetch -compile_stunnel - +do_build diff --git a/openlibs/valgrind/build.sh b/openlibs/valgrind/build.sh index 5de8049..db998ea 100755 --- a/openlibs/valgrind/build.sh +++ b/openlibs/valgrind/build.sh @@ -1,51 +1,117 @@ #!/bin/bash -#+-------------------------------------------------------------------------------------------- -#|Description: This shell script used download and compile valgrind for ARM -#| Author: GuoWenxue <guowenxue@gmail.com> -#| ChangeLog: -#| 1, Initialize 1.0.0 on 2018.08.16 -#| -#| Running bugfix: -#| root@JelliesV2:/tmp# tar -xJf valgrind_a5.tar.xz -C /apps/ -#| root@JelliesV2:/tmp# export PATH=$PATH:/apps/valgrind/ -#| root@JelliesV2:/tmp# valgrind -#| valgrind: failed to start tool 'memcheck' for platform 'arm-linux': No such file or directory -#| root@JelliesV2:/tmp# export VALGRIND_LIB=/apps/valgrind/ -#| root@JelliesV2:/tmp# valgrind --tool=memcheck --leak-check=full --track-fds=yes ./memcheck -#| -#+-------------------------------------------------------------------------------------------- +# library name and version +# Official: https://valgrind.org/downloads/ +LIB_NAME=valgrind-3.21.0 +PACK_SUFIX=tar.bz2 -# valgrind install path be same as board -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/valgrind + +# 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++ @@ -57,70 +123,60 @@ export OBJDUMP=${CROSS_COMPILE}objdump export STRIP=${CROSS_COMPILE}strip - # export cross configure - export CONFIG_CROSS=" --build=i686-pc-linux --host=arm-linux " + # export cross configure + export CONFIG_CROSS=" --build=i686-pc-linux --host=armv7-linux " # Clear LDFLAGS and CFLAGS export LDFLAGS= export CFLAGS= } - -function compile_valgrind() +function do_fetch() { - SRC_NAME=valgrind-3.16.1 - PACK_SUFIX=tar.bz2 - - if [ -f ${PREFIX_PATH}/bin/valgrind ] ; 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://sourceware.org/pub/valgrind/valgrind-3.16.1.tar.bz2 - 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 - sed -i -e "s|armv7|arm|g" configure - - ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-only32bit - 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_pack() +function do_build() { - cp -af ${PREFIX_PATH}/lib/valgrind . -af - cp -af ${PREFIX_PATH}/bin/valgrind valgrind + cd $LIB_NAME - rm -f valgrind/64bit* - rm -f valgrind/amd64* - rm -f valgrind/mips64* - rm -f valgrind/i386* - rm -f valgrind/mips* - rm -f valgrind/power* - rm -f valgrind/s390* - rm -f valgrind/*.a + do_export - tar -cJf valgrind_a5.tar.xz valgrind - rm -rf valgrind + ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} \ + --enable-only32bit --disable-tls + check_result "ERROR: configure ${LIB_NAME} failure" + + make -j ${JOBS} && make install + check_result "ERROR: compile ${LIB_NAME} failure" } -export_cross +function do_clean() +{ + rm -rf *${LIB_NAME}* +} -compile_valgrind +if [[ $# == 1 && $1 == -c ]] ;then + pr_warn "start clean ${LIB_NAME}" + do_clean + exit; +fi -do_pack +do_fetch + +do_build -- Gitblit v1.9.1