#!/bin/sh ### determine the download URL from the package version if [ -z "${PKGVER##*.*}" ]; then # eg: "1.7-dev4" SRC_GIT_COMMIT="v${PKGVER}" if [ -z "${PKGVER##*-dev*}" ]; then BRANCH="" if [ -z "${PKGVER##*-dev*-*}" ]; then # eg: "2.7-dev7-2e2b79d1" SRC_GIT_COMMIT="${PKGVER##*-}" fi else BRANCH="${PKGVER#[0-9].[0-9]}" BRANCH="${PKGVER%%$BRANCH}" fi else # eg: "20150909-07101d5a" SRC_GIT_COMMIT="${PKGVER##*-}" BRANCH="" fi SRC_FETCH_METHOD="http" SRC_FETCH_PATH="http://git.haproxy.org/?p=haproxy${BRANCH:+-$BRANCH}.git;a=snapshot;h=$SRC_GIT_COMMIT;sf=tgz" # only 64-bit systems get many threads and jemalloc, and smaller ones also do # not enable backtraces nor BUG_ON() since these significantly increase the # executable's size, nor do they use global pools that eat memory. We also do # not enable DEBUG_STRICT there. case "$FLX_ARCH_SMALL" in armv8*|x86_64*) SMALL="-DDEBUG_STRICT=1" EXTRA=( ) OPT="-O2" ;; *) SMALL="-DMAX_TGROUPS=1 -DMAX_THREADS=4 -DCONFIG_HAP_NO_GLOBAL_POOLS" EXTRA=( "USE_BACKTRACE=" "USE_THREAD_DUMP=" LDFLAGS="-Wl,--gc-sections" ) OPT="-Os -fdata-sections" FLX_USE_JEMALLOC=0 ;; esac ### build options # This is the mainline version of haproxy with ssl, slz, pcre, jemalloc. It # relies on FLX_USE_OPENSSL{,_STAT}, FLX_USE_PCRE{,_STAT}, FLX_USE_JEMALLOC{,_STAT}, # and FLX_USE_HAPROXY_STAT. Set values to 0 to disable, and 1 to enable. Default # values are 0 for *_STAT and 1 for the libraries. Example : # FLX_USE_OPENSSL_STAT=1 FLX_USE_PCRE_STAT=1 FLX_USE_HAPROXY_STAT=1 FLXARCH=x86_64 pkg prepare # FLX_USE_OPENSSL_STAT=1 FLX_USE_PCRE_STAT=1 FLX_USE_HAPROXY_STAT=1 FLXARCH=x86_64 pkg compile FLX_USE_HAPROXY_STAT=${FLX_USE_HAPROXY_STAT:-0} FLX_USE_JEMALLOC=${FLX_USE_JEMALLOC:-1} FLX_USE_JEMALLOC_STAT=${FLX_USE_JEMALLOC_STAT:-0} FLX_USE_PCRE=${FLX_USE_PCRE:-1} FLX_USE_PCRE_STAT=${FLX_USE_PCRE_STAT:-0} FLX_USE_OPENSSL=${FLX_USE_OPENSSL:-1} FLX_USE_OPENSSL_STAT=${FLX_USE_OPENSSL_STAT:-0} FLX_USE_LUA=${FLX_USE_LUA:-1} FLX_USE_HAPROXY_DEBUG=${FLX_USE_HAPROXY_DEBUG:+"-DDEBUG_DEV -DDEBUG_DONT_SHARE_POOLS -DDEBUG_MEMORY_POOLS"} if [ "$FLX_USE_HAPROXY_STAT" != 0 ]; then STATIC_FLAG="-static" else STATIC_FLAG= fi if [ "$FLX_USE_OPENSSL" != 0 -a "$FLX_USE_OPENSSL_STAT" = 0 -a "$FLX_USE_HAPROXY_STAT" = 0 ]; then DEP_OPENSSL=( "openssl-*:::*.h *.so *.so.*" ) OPENSSL_FLAG=1 elif [ "$FLX_USE_OPENSSL" != 0 ]; then DEP_OPENSSL=( "openssl-*:::*.h *.a" ) OPENSSL_FLAG=1 else DEP_OPENSSL=( ) OPENSSL_FLAG= fi if [ "$FLX_USE_PCRE" != 0 -a "$FLX_USE_PRE_STAT" = 0 -a "$FLX_USE_HAPROXY_STAT" = 0 ]; then DEP_PCRE=( "pcre-*:::*.h *.so *.so.*" ) PCRE_FLAG=1 elif [ "$FLX_USE_PCRE" != 0 ]; then DEP_PCRE=( "pcre-*:::*.h *.a" ) PCRE_FLAG=1 else DEP_PCRE=( ) PCRE_FLAG= fi if [ "$FLX_USE_JEMALLOC" != 0 -a "$FLX_USE_JEMALLOC_STAT" = 0 -a "$FLX_USE_HAPROXY_STAT" = 0 ]; then DEP_JEMALLOC=( "jemalloc-*:::*.h *.so *.so.*" ) JEMALLOC_FLAG=-ljemalloc elif [ "$FLX_USE_JEMALLOC" != 0 ]; then DEP_JEMALLOC=( "jemalloc-*:::*.h *.a" ) JEMALLOC_FLAG=-ljemalloc else DEP_JEMALLOC=( ) JEMALLOC_FLAG= fi if [ "$FLX_USE_LUA" != 0 ]; then DEP_LUA=( "lua-*:::*.h *.a" ) LUA_FLAG=1 else DEP_LUA=( ) LUA_FLAG= fi MAKEDEPENDS=( "${DEP_PCRE[@]}" "${DEP_OPENSSL[@]}" "${DEP_JEMALLOC[@]}" "${DEP_LUA[@]}" ) ### patches # Patches below 1000 are bugfixes and initial backports. # Patches above 1000 are package-specific and late backports (eg: dlmalloc below). PATCH_LIST="" # This pkg is built with smaller options allowing it to support a higher number # of simultaneous connections, typically 5000 with 256 MB memory including the # sockets and the system, or 40000 with 1 GB RAM. FILE_LIST= HAPROXY_VERSION="${PKGVER}" HAPROXY_SUBVERS="-${DISTVER}_${VERSFX}" HAPROXY_DATE="$(date +%Y/%m/%d)" function do_compile_only { $FLXPMAKE CC="$CC" CPU_CFLAGS="$OPT" EXTRA= \ LDFLAGS="\$(ARCH_FLAGS) -g ${STATIC_FLAG}" \ TARGET=linux-glibc \ ADDLIB="${JEMALLOC_FLAG}" \ USE_PCRE="${PCRE_FLAG}" PCREDIR=$FLXROOTDIR/usr \ DEBUG="$FLX_USE_HAPROXY_DEBUG" \ SMALL_OPTS="-DDEFAULT_SSL_MAX_RECORD=2859 $SMALL" \ USE_OPENSSL="${OPENSSL_FLAG}" \ USE_LUA="${LUA_FLAG}" \ USE_SLZ=1 \ "${EXTRA[@]}" \ haproxy admin/halog/halog } function do_prepack { # halog mkdir -p $ROOTDIR/usr/bin cp admin/halog/halog $ROOTDIR/usr/bin/ mkdir -p $ROOTDIR/sbin/init.d cp $PKGDIR/add-ons/init.haproxy $ROOTDIR/sbin/init.d/haproxy chmod 755 $ROOTDIR/sbin/init.d/haproxy mkdir -p $ROOTDIR/usr/sbin cp haproxy $ROOTDIR/usr/sbin mkdir -p $ROOTDIR/usr/share/$PKGRADIX/$PKGRADIX-$PKGVER cp doc/intro.txt $ROOTDIR/usr/share/$PKGRADIX/$PKGRADIX-$PKGVER/ cp doc/lua.txt $ROOTDIR/usr/share/$PKGRADIX/$PKGRADIX-$PKGVER/ cp doc/architecture.txt $ROOTDIR/usr/share/$PKGRADIX/$PKGRADIX-$PKGVER/ cp doc/management.txt $ROOTDIR/usr/share/$PKGRADIX/$PKGRADIX-$PKGVER/ cp doc/configuration.txt $ROOTDIR/usr/share/$PKGRADIX/$PKGRADIX-$PKGVER/ cp doc/network-namespaces.txt $ROOTDIR/usr/share/$PKGRADIX/$PKGRADIX-$PKGVER/ set_default_perm $ROOTDIR } function do_clean { $FLXMAKE clean ( do_delpack ) return 0 }