#!/bin/sh ### 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} if [ "$FLX_USE_HAPROXY_STAT" != 0 ]; then STATIC_FLAGS="-static" else STATIC_FLAG= fi if [ "$FLX_USE_OPENSSL" != 0 -a "$FLX_USE_HAPROXY_STAT" = 0 ]; then DEP_OPENSSL=( "openssl-*:::*.h *.so *.so.*" ) OPENSSL_FLAG=1 elif [ "$FLX_USE_OPENSSL" != 0 -o "${FLX_USE_OPENSSL_STAT}" != 0 ]; then DEP_OPENSSL=( "openssl-*:::*.h *.a" ) OPENSSL_FLAG=1 else DEP_OPENSSL=( ) OPENSSL_FLAG= fi if [ "$FLX_USE_PCRE" != 0 -a "$FLX_USE_HAPROXY_STAT" = 0 ]; then DEP_PCRE=( "pcre-*:::*.h *.so *.so.*" ) PCRE_FLAG=1 elif [ "$FLX_USE_PCRE" != 0 -o "${FLX_USE_PCRE_STAT}" != 0 ]; then DEP_PCRE=( "pcre-*:::*.h *.a" ) PCRE_FLAG=1 else DEP_PCRE=( ) PCRE_FLAG= fi if [ "$FLX_USE_JEMALLOC" != 0 -a "$FLX_USE_HAPROXY_STAT" = 0 ]; then DEP_JEMALLOC=( "jemalloc-*:::*.h *.so *.so.*" ) JEMALLOC_FLAG=-ljemalloc elif [ "$FLX_USE_JEMALLOC" != 0 -o "${FLX_USE_JEMALLOC_STAT}" != 0 ]; then DEP_JEMALLOC=( "jemalloc-*:::*.h *.a" ) JEMALLOC_FLAG=-ljemalloc else DEP_JEMALLOC=( ) JEMALLOC_FLAG= fi MAKEDEPENDS=( "${DEP_PCRE[@]}" "${DEP_OPENSSL[@]}" "${DEP_JEMALLOC[@]}" "libslz-*:::*.h *.a" ) ### 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="" 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.formilux.org/?p=people/willy/haproxy${BRANCH:+-$BRANCH}.git;a=snapshot;h=$SRC_GIT_COMMIT;sf=tgz" ### patches # Patches below 1000 are bugfixes and initial backports. # Patches above 1000 are package-specific and late backports (eg: dlmalloc below). PATCH_LIST=" 0001-MINOR-cfgparse-few-memory-leaks-fixes.patch 0002-MEDIUM-log-Decompose-Tq-in-Th-Ti-TR.patch 0003-CLEANUP-logs-remove-unused-log-format-field-definiti.patch 0004-BUILD-MAJOR-updated-51d-Trie-implementation-to-incor.patch 0005-BUG-MAJOR-stream-properly-mark-the-server-address-as.patch 0006-CLEANUP-proto_http-Removing-useless-variable-assigna.patch 0007-CLEANUP-dumpstats-Removing-useless-variables-allocat.patch 0008-CLEANUP-dns-Removing-usless-variable-assignation.patch 0009-BUG-MINOR-payload-fix-SSLv2-version-parser.patch 0010-MINOR-cli-allow-the-semi-colon-to-be-escaped-on-the-.patch " # 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 { # halog ( cd contrib/halog $FLXMAKE CC=$CC halog ) # haproxy case "$FLX_ARCH_SMALL" in i?86) REGPARM=1 ; VSYSCALL=1 ; FUTEX=1 ;; x86*) REGPARM=1 ; VSYSCALL= ; FUTEX=1 ;; *) REGPARM= ; VSYSCALL= ; FUTEX= ;; esac # splice() was introduced in glibc-2.6 # accept4() was introduced in glibc-2.10 case "$(readlink $FLXROOTDIR/lib/libc.so.?)" in libc-2.[0-5].*) MY_SPLICE=1 ; MY_ACCEPT4=1 ;; libc-2.[6-9].*) MY_SPLICE= ; MY_ACCEPT4=1 ;; libc-2.1*.*) MY_SPLICE= ; MY_ACCEPT4= ;; *) MY_SPLICE= ; MY_ACCEPT4= ;; esac if [ -z "${FLXARCH##arm*}" ]; then USE_ACCEPT4= else USE_ACCEPT4=implicit fi SYSTEM_MAXCONN= ; DEFAULT_MAXCONN=10000 ; MEMMAX= $FLXPMAKE CC="$CC" EXTRA= \ LDFLAGS="\$(ARCH_FLAGS) -g ${STATIC_FLAG}" \ ADDLIB="${JEMALLOC_FLAG} -lpthread -ldl" \ TARGET=linux2628 USE_PCRE="${PCRE_FLAG}" PCREDIR=$FLXROOTDIR/usr \ SMALL_OPTS="${SYSTEM_MAXCONN:+-DSYSTEM_MAXCONN=$SYSTEM_MAXCONN }${DEFAULT_MAXCONN:+-DDEFAULT_MAXCONN=$DEFAULT_MAXCONN }-DDEFAULT_SSL_MAX_RECORD=2859" \ USE_MY_SPLICE=${MY_SPLICE} USE_ACCEPT4=${USE_ACCEPT4} USE_MY_ACCEPT4=${MY_ACCEPT4} USE_TFO=1 \ USE_REGPARM=${REGPARM} USE_VSYSCALL=${VSYSCALL} \ USE_OPENSSL="${OPENSSL_FLAG}" USE_FUTEX=${FUTEX} USE_SLZ=1 USE_NS=1 \ SILENT_DEFINE="-DLISTEN_DEFAULT_CIPHERS=\"\\\"AES:RC4:ALL:!aNULL:!eNULL:!LOW:!EXPORT:!SSLv2\\\"\" \ -DCONNECT_DEFAULT_CIPHERS=\"\\\"AES:RC4:ALL:!aNULL:!eNULL:!LOW:!EXPORT:!SSLv2\\\"\"" } function do_prepack { # halog mkdir -p $ROOTDIR/usr/bin cp contrib/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/ cp examples/debug2ansi examples/debug2html examples/debugfind $ROOTDIR/usr/share/$PKGRADIX/$PKGRADIX-$PKGVER/ set_default_perm $ROOTDIR } function do_clean { $FLXMAKE clean rm -f contrib/halog/halog{,64} ( do_delpack ) return 0 }