diff options
| author | root <root@alpha.trunkmasters.com> | 2026-06-20 14:54:46 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-06-20 14:54:46 -0500 |
| commit | 1a4479b4e0368c8d5ff241ebad17b2541a7e3ba0 (patch) | |
| tree | 18e2e784f9fb0dbc3546537acc42ad51b366d90e /net-proxy | |
| parent | 9f6a581d94412ab1cf4b35c33101f6be0ddc7777 (diff) | |
| download | baldeagleos-repo-1a4479b4e0368c8d5ff241ebad17b2541a7e3ba0.tar.gz baldeagleos-repo-1a4479b4e0368c8d5ff241ebad17b2541a7e3ba0.tar.xz baldeagleos-repo-1a4479b4e0368c8d5ff241ebad17b2541a7e3ba0.zip | |
Adding metadata
Diffstat (limited to 'net-proxy')
22 files changed, 3657 insertions, 103 deletions
diff --git a/net-proxy/haproxy/Manifest b/net-proxy/haproxy/Manifest index a2d0df8df0af..c535defda3a6 100644 --- a/net-proxy/haproxy/Manifest +++ b/net-proxy/haproxy/Manifest @@ -1,2 +1,13 @@ +DIST VTest-af198470d7ce482d3d26eb9ca3f246a438739366.tar.gz 196700 BLAKE2B d740e19104a91b4cf978596ccda861974e96c9ed85a49c91e996c5bc6dde40f1cdcf49e6a75243aba7bf59abfd8d2c051a7ee574bab22f9e512d74376c9e1738 SHA512 cdc62271bb75ef7032745a457e1a54a84bcaadce73324272462b647383177338c5c2c8a17993d6344840e8ce0308a7e6f0df9bb766ebe0e8d4ee6dd4914e188c +DIST VTest2-3bba149.tar.gz 246954 BLAKE2B 5cb7f059f173c268456ce6b048f0b14304aaa983a72e621af936fea4447e3b8cab09f4d8d33d131884de5d88905f22697e1f2e7696d0cbcf8680f5294a830b98 SHA512 da18cd0a090fac819b0bf1e4829db77de2f8fd6d53fa7e7dbed8a409f0d1538b4b11399785b35daf1a26aa526e87f5a40bfb0469831a04f79ed060d6626e243a +DIST haproxy-2.8.11.tar.gz 4400628 BLAKE2B 0daccc4dbae5cecae3ad0bc1d164ea78a9584a0f4cb71e15664aff4b76fc05a828030dee355722c99a77270427bd3e9e43939ae59a3f3b1cabcc0179faff34b9 SHA512 59517187a5c0e0dbcb8629d2a922f7a865e1ebdbb9fe0f4fbe273913e0f15a1a26767808bd1607f10e79d3abcdd8c35c1ae648df149a1d5c0df32604df553655 +DIST haproxy-2.8.18.tar.gz 4436269 BLAKE2B 707539cbc021c0e781f7a1e8369ba5cb0159ad3c2bfaa0b7f84902faee4e685227755456419c165c6ac47f52cd52f6fb6d7efb193240a1888cccc1db949814dd SHA512 9bb4598b4197927ac46285c4dffe54d90177b0929e0ff8db1966f294f5e6b300bf33044b0b4925bbba565068bc722ea19f984e1b6b4850f02897691343bd841c +DIST haproxy-2.8.24.tar.gz 4446871 BLAKE2B 9e30145f078affea3303858402eb63a43f8e4572e37a29e0997c8e4f36a1dd78d0a9c2a4ed4cb6c0740da97fc13b181170b34b2f8905b92bbe99527020e2d44c SHA512 b1af347fc0aaf20d4bf51942878083ca5da7d5ee6e9535360533258d52a7715d1020424f4af3d6103edb61fca085f7945df83dfd9667dbd0ffb5357dbe8daf5f +DIST haproxy-3.0.14.tar.gz 4755441 BLAKE2B c58f1ad55ba5765fa79045be0fbdaa20dc3893a6827a49f3e43ad59042afaa6957d4d7335803ac0a12ec5cb512c19f07ab3475fdcb25f8ef4e78fef3605c5eda SHA512 96b033b7ad80f59a6c744217f81a14e738beedb9b723216711294cef5770df8ef29cc1cb4dca82769ca479dbc91c6307e2c88e29efeede56fb5775ca29b650f6 +DIST haproxy-3.0.23.tar.gz 4770973 BLAKE2B f2b29f84c4cee85c0818f4afd47df341d30f5406cbdf84c21ccd267e9634445b0361de7620ff987e896b9bf009ee15a2a95be697b5b061bc817a9287c1ecac3c SHA512 d75d30069026f5f6270d3600d4699dc69b189cd8db3fd0e100c13068bc509c3232f3f10c54246a0ef132901ed9093a06105cc62bd30b448a7c2304b569120e01 +DIST haproxy-3.0.5.tar.gz 4698022 BLAKE2B c64d8799755fddaf5b45a9e2b67c5f03b25af98fbddde68ab1206c288d9a65f91938810b150c4398ee138d9154c90f1af9fb05c3d0bbc80394e71430e1cc4396 SHA512 8c16b026d5e26fc030178ecd354c68e8ea32c2b971f143cb2aa2f1b2d16fbfc0a27e3975f78873a0cefe3f904b5f1999f8d75622a04234b9cf88f90161d9ea91 +DIST haproxy-3.2.19.tar.gz 5152214 BLAKE2B bdd4d6a912c407f6448c6e23227a7788162db43c1a0bb78ab12de1ad16de2025229a7b837ff77370f23612b7d7d60f0d6a3e80679e1ad658a2d758fdc4c86b32 SHA512 b66db6c84d78fde4298ed7f3be4e772f3127223c3ed272d3cba07915a133e67435d8a2340865dce98646f69ea619bd8584d34844b78daf5f02e803620d6f8d89 +DIST haproxy-3.2.9.tar.gz 5123457 BLAKE2B 37b50abe8f8260453c4b40f6f52186cee276a3a4577d7b6da6a14ea94f43cea6e5a3ab3cb8ec9d6642a5d4d9dc90e94c4757a2306e2a363e0b710db735bc0972 SHA512 fd694adcdccbba54121e686f32cfb2281abfc97c6716835aa35013f05b85033c4967a056f02ecbc6ed613dda44d55373d2577e452079ba4e2bfa7b2fe0fff172 DIST haproxy-3.3.10.tar.gz 5278275 BLAKE2B 27a9e716aebd9a190c5702974df6ef24b3f883b987c22e9d8f13f6ac0e71eaae9d69d37cd3fb75a2e547f966c255f3e3e5845c58a8251c69627672df5ca5b2ed SHA512 d7a39a949a3d33d6bfa901a4d74f3e11d73c8e11c2fc10907edf3be90b84b2282b1c483a5ab5b0dc7a54530c01e5644b0e40b57a612704d7c2f11000bc4726cb -DIST haproxy-3.3.9.tar.gz 5278733 BLAKE2B cbec9ad9cc4ca4a1ded2d3de19919f3852159462388010935ebb4ada87c09f361efd52038c01d2bef60f3bf5debe9b32636a761d3d26f53ee17933b650953a66 SHA512 f2a60c184505665b82ee50bf678da3e5ba9ac955e481a68910dc847d038dd612667ebe7220c520befb1bdf6eb64837545c0ac815fe310f15f7c208c307f197f2 +DIST haproxy-3.3.5.tar.gz 5254165 BLAKE2B 83c833a03f528cf7ab9850c609371848bcbb3866e67a3cf3c9c5787526f270c08a84ee0671c60e48ec65a4c690103bb5272621e0bbc6e19c5e1e6662fae9957a SHA512 fe95fdd6b1e8303aa7d9e4278eba623b7e0500395f667e57207a80a5969df9c4d50c697797b554f0a004c3ec6399cfc91f95c38ca4305c6b536cb62dbe666179 +DIST haproxy-3.4.0.tar.gz 5470166 BLAKE2B 1a072aafe901621cf84c99603780222e04df77279e1d8cea535e1b28fa5f508e0d65c673a6764443ef61ff04b53773cd77a029f7b606a01a580475a92a6f442c SHA512 982dd97c9d148179e12cdac0e9675960c665f64a9cfb02eb974de9844ef7edfc1d0b99a3a1b3b8e9b145b475fbb9bfe764548486445f66805fc26cf619815310 diff --git a/net-proxy/haproxy/files/haproxy.confd b/net-proxy/haproxy/files/haproxy.confd-r1 index 30739eb8bf23..b9bb84e3e833 100644 --- a/net-proxy/haproxy/files/haproxy.confd +++ b/net-proxy/haproxy/files/haproxy.confd-r1 @@ -2,7 +2,7 @@ #CONFIGS="/etc/haproxy/haproxy.cfg" # Additional HAProxy command line options -HAPROXY_OPTS="" +HAPROXY_OPTS="-S /run/haproxy-master.sock" # If you want to make use ot the new seamless reload you can just write your own # reload_seamless function here. It will be called by the init script. diff --git a/net-proxy/haproxy/files/haproxy.initd-r6 b/net-proxy/haproxy/files/haproxy.initd-r8 index 9b7c5fe973ba..44d8bf64e3b3 100644 --- a/net-proxy/haproxy/files/haproxy.initd-r6 +++ b/net-proxy/haproxy/files/haproxy.initd-r8 @@ -1,5 +1,5 @@ #!/sbin/openrc-run -# Copyright 1999-2017 Gentoo Foundation +# Copyright 1999-2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 extra_commands="checkconfig" @@ -23,7 +23,7 @@ for conf in $CONFIGS; do configs="${configs} -f ${conf}" done -command_args="-D -p ${pidfile} ${configs} ${HAPROXY_OPTS}" +command_args="-D -W -p ${pidfile} ${configs} ${HAPROXY_OPTS}" depend() { need net @@ -44,7 +44,7 @@ checkconfig() { done ebegin "Checking ${CONFIGS}" - $command -q -c $configs $HAPROXY_OPTS + $command -q -c $command_args eend $? } @@ -80,6 +80,6 @@ reload() { fi ebegin "Reloading ${SVCNAME}" - $command -D -p "${pidfile}" $configs $HAPROXY_OPTS -sf $(cat "${pidfile}") + $command $command_args -sf $(cat "${pidfile}") eend $? } diff --git a/net-proxy/haproxy/files/haproxy.initd-r9 b/net-proxy/haproxy/files/haproxy.initd-r9 new file mode 100644 index 000000000000..4b2ffb07712d --- /dev/null +++ b/net-proxy/haproxy/files/haproxy.initd-r9 @@ -0,0 +1,86 @@ +#!/sbin/openrc-run +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +extra_commands="checkconfig" +extra_started_commands="reload" + +command="/usr/sbin/haproxy" + +pidfile="${HAPROXY_PIDFILE:-/run/${SVCNAME}.pid}" + +configs= + +if [ -z "${CONFIGS}" ]; then + if [ -f "/etc/haproxy/${SVCNAME}.cfg" ]; then + CONFIGS=/etc/haproxy/${SVCNAME}.cfg + elif [ -f "/etc/${SVCNAME}.cfg" ]; then + CONFIGS=/etc/${SVCNAME}.cfg # Deprecated + fi +fi + +for conf in $CONFIGS; do + configs="${configs} -f ${conf}" +done + +command_args="-D -W -p ${pidfile} ${configs} ${HAPROXY_OPTS}" + +depend() { + need net + use dns logger +} + +checkconfig() { + if [ -z "${CONFIGS}" ]; then + eerror "No config(s) has been specified" + return 1 + fi + + for conf in $CONFIGS; do + if [ ! -f "${conf}" ]; then + eerror "${conf} does not exist!" + return 1 + fi + done + + ebegin "Checking ${CONFIGS}" + $command -q -c $command_args + eend $? +} + +start_pre() { + if [ "${RC_CMD}" != "restart" ]; then + checkconfig || return 1 + fi +} + +stop_pre() { + if [ "${RC_CMD}" = "restart" ]; then + checkconfig || return 1 + fi +} + +stop() { + local _t _pid + + _t="$(mktemp)" + for _pid in $(cat ${pidfile}) ; do + echo "${_pid}" > "${_t}" + start-stop-daemon --stop --pidfile="${_t}" + done + rm -f "${_t}" +} + +reload() { + checkconfig || { eerror "Reloading failed, please fix your config(s) first"; return 1; } + + if [ "$(command -v reload_seamless)" = "reload_seamless" ]; then + einfo "Calling user-defined reload_seamless()" + ewarn "The user-defiled reload_seamless() function is deprecated as it is no longer necessary nowadays, with recent HAProxy versions. If you think otherwise, please file a bug" + reload_seamless || { eerror "reload_seamless() failed!"; return 1; } + fi + + ebegin "Reloading ${SVCNAME}" + start-stop-daemon --signal USR2 --pidfile "${pidfile}" + eend $? +} diff --git a/net-proxy/haproxy/haproxy-3.3.9.ebuild b/net-proxy/haproxy/haproxy-2.8.11.ebuild index 7f0e88572fd0..8a362e244118 100644 --- a/net-proxy/haproxy/haproxy-3.3.9.ebuild +++ b/net-proxy/haproxy/haproxy-2.8.11.ebuild @@ -1,54 +1,67 @@ -# Copyright 2021-2026 Liguros Authors +# Copyright 1999-2025 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=8 + +EAPI="8" + LUA_COMPAT=( lua5-{1,3,4} luajit ) -inherit flag-o-matic linux-info lua-single systemd toolchain-funcs +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing MY_P="${PN}-${PV/_beta/-dev}" DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" -HOMEPAGE="https://www.haproxy.org" -SRC_URI="https://www.haproxy.org/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="amd64 arm64 ppc x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" LICENSE="GPL-2 LGPL-2.1" SLOT="0/$(ver_cut 1-2)" -IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit pcre2 pcre2-jit prometheus-exporter -ssl systemd +threads tools vim-syntax zlib lua device-atlas 51degrees wurfl" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter +ssl systemd test +threads tools zlib lua 51degrees wurfl" REQUIRED_USE="pcre-jit? ( pcre ) - pcre2-jit? ( pcre2 ) - pcre? ( !pcre2 ) lua? ( ${LUA_REQUIRED_USE} ) - device-atlas? ( pcre ) ?? ( slz zlib )" +RESTRICT="!test? ( test )" BDEPEND="virtual/pkgconfig" DEPEND=" crypt? ( virtual/libcrypt:= ) pcre? ( - dev-libs/libpcre - pcre-jit? ( dev-libs/libpcre[jit] ) - ) - pcre2? ( dev-libs/libpcre2:= - pcre2-jit? ( dev-libs/libpcre2:=[jit] ) + pcre-jit? ( dev-libs/libpcre2:=[jit] ) ) ssl? ( dev-libs/openssl:0= - ) systemd? ( sys-apps/systemd ) - zlib? ( sys-libs/zlib ) + zlib? ( virtual/zlib:= ) lua? ( ${LUA_DEPS} ) - device-atlas? ( dev-libs/device-atlas-api-c )" + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" RDEPEND="${DEPEND} acct-group/haproxy acct-user/haproxy" -S="${WORKDIR}/${MY_P}" - -DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README.md ) +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README ) EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) haproxy_use() { @@ -65,26 +78,40 @@ pkg_setup() { fi } +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + src_compile() { local -a args=( V=1 - TARGET=linux-glibc + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= ) + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + # TODO: PCRE2_WIDTH? args+=( $(haproxy_use threads THREAD) ) args+=( $(haproxy_use crypt LIBCRYPT) ) args+=( $(haproxy_use net_ns NS) ) - args+=( $(haproxy_use pcre PCRE) ) - args+=( $(haproxy_use pcre-jit PCRE_JIT) ) - args+=( $(haproxy_use pcre2 PCRE2) ) - args+=( $(haproxy_use pcre2-jit PCRE2_JIT) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) args+=( $(haproxy_use ssl OPENSSL) ) args+=( $(haproxy_use slz SLZ) ) args+=( $(haproxy_use zlib ZLIB) ) args+=( $(haproxy_use lua LUA) ) args+=( $(haproxy_use 51degrees 51DEGREES) ) - args+=( $(haproxy_use device-atlas DEVICEATLAS) ) args+=( $(haproxy_use wurfl WURFL) ) args+=( $(haproxy_use systemd SYSTEMD) ) args+=( $(haproxy_use prometheus-exporter PROMEX) ) @@ -95,30 +122,45 @@ src_compile() { fi # HAProxy really needs some of those "SPEC_CFLAGS", like -fno-strict-aliasing - emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB=${ERROT}/usr/$(get_libdir) ${args[@]} - emake -C admin/systemd CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB=${ERROT}/usr/$(get_libdir) SBINDIR=/usr/sbin + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin if use tools ; then for extra in ${EXTRAS[@]} ; do if [ "${extra}" = "admin/halog" ]; then - emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB=${ERROT}/usr/$(get_libdir) ${args[@]} admin/halog/halog + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog elif [ "${extra}" = "dev/hpack" ]; then - emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB=${ERROT}/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} else # Those two includes are a workaround for hpack Makefile missing those emake -C ${extra} \ - CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) ${args[@]} + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} fi done fi } +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + src_install() { dosbin haproxy - dosym ../sbin/haproxy /usr/bin/haproxy - newconfd "${FILESDIR}/${PN}.confd" ${PN} - newinitd "${FILESDIR}/${PN}.initd-r6" ${PN} + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r8" ${PN} doman doc/haproxy.1 @@ -131,7 +173,7 @@ src_install() { doins examples/errorfiles/* if use doc; then - dodoc ROADMAP doc/*.txt + dodoc doc/*.txt #if use lua; then # TODO: doc/lua-api/ #fi @@ -139,7 +181,10 @@ src_install() { if use tools ; then has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog - has admin/iprange "${EXTRAS[@]}" && { newbin admin/iprange/iprange haproxy_iprange; newbin admin/iprange/ip6range haproxy_ip6range; } + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop has dev/hpack "${EXTRAS[@]}" && { newbin dev/hpack/gen-rht haproxy_gen-rht @@ -154,10 +199,8 @@ src_install() { dodoc doc/seamless_reload.txt fi - if use vim-syntax ; then - insinto /usr/share/vim/vimfiles/syntax - doins admin/syntax-highlight/haproxy.vim - fi + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim } pkg_postinst() { diff --git a/net-proxy/haproxy/haproxy-2.8.18.ebuild b/net-proxy/haproxy/haproxy-2.8.18.ebuild new file mode 100644 index 000000000000..8bf0e28fcf83 --- /dev/null +++ b/net-proxy/haproxy/haproxy-2.8.18.ebuild @@ -0,0 +1,218 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="amd64 ~arm64 ~ppc x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter +ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use systemd SYSTEMD) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + # HAProxy really needs some of those "SPEC_CFLAGS", like -fno-strict-aliasing + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-2.8.24.ebuild b/net-proxy/haproxy/haproxy-2.8.24.ebuild new file mode 100644 index 000000000000..066e77115968 --- /dev/null +++ b/net-proxy/haproxy/haproxy-2.8.24.ebuild @@ -0,0 +1,219 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter +selinux ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use systemd SYSTEMD) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + # HAProxy really needs some of those "SPEC_CFLAGS", like -fno-strict-aliasing + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-2.8.9999.ebuild b/net-proxy/haproxy/haproxy-2.8.9999.ebuild new file mode 100644 index 000000000000..066e77115968 --- /dev/null +++ b/net-proxy/haproxy/haproxy-2.8.9999.ebuild @@ -0,0 +1,219 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter +selinux ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use systemd SYSTEMD) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + # HAProxy really needs some of those "SPEC_CFLAGS", like -fno-strict-aliasing + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.0.14.ebuild b/net-proxy/haproxy/haproxy-3.0.14.ebuild new file mode 100644 index 000000000000..94af87a49fed --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.0.14.ebuild @@ -0,0 +1,217 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="amd64 ~arm64 ~ppc x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter +ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use systemd SYSTEMD) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.0.23.ebuild b/net-proxy/haproxy/haproxy-3.0.23.ebuild new file mode 100644 index 000000000000..24adbc376441 --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.0.23.ebuild @@ -0,0 +1,218 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter +selinux ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use systemd SYSTEMD) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.0.5.ebuild b/net-proxy/haproxy/haproxy-3.0.5.ebuild new file mode 100644 index 000000000000..0f454cce85dc --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.0.5.ebuild @@ -0,0 +1,217 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="amd64 arm64 ppc x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter +ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use systemd SYSTEMD) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r8" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.0.9999.ebuild b/net-proxy/haproxy/haproxy-3.0.9999.ebuild new file mode 100644 index 000000000000..24adbc376441 --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.0.9999.ebuild @@ -0,0 +1,218 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter +selinux ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use systemd SYSTEMD) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.2.19.ebuild b/net-proxy/haproxy/haproxy-3.2.19.ebuild new file mode 100644 index 000000000000..4ec2db1144bf --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.2.19.ebuild @@ -0,0 +1,221 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic +selinux ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + quic? ( + >=dev-libs/openssl-3.5.0:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + args+=( $(haproxy_use quic QUIC) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.2.9.ebuild b/net-proxy/haproxy/haproxy-3.2.9.ebuild new file mode 100644 index 000000000000..2539e04a9ac0 --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.2.9.ebuild @@ -0,0 +1,220 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="amd64 ~arm64 ~ppc x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic +ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + quic? ( + >=dev-libs/openssl-3.5.0:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + args+=( $(haproxy_use quic QUIC) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.2.9999.ebuild b/net-proxy/haproxy/haproxy-3.2.9999.ebuild new file mode 100644 index 000000000000..4ec2db1144bf --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.2.9999.ebuild @@ -0,0 +1,221 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic +selinux ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + quic? ( + >=dev-libs/openssl-3.5.0:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + args+=( $(haproxy_use quic QUIC) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.3.10.ebuild b/net-proxy/haproxy/haproxy-3.3.10.ebuild index 7f0e88572fd0..06742eb6ff59 100644 --- a/net-proxy/haproxy/haproxy-3.3.10.ebuild +++ b/net-proxy/haproxy/haproxy-3.3.10.ebuild @@ -1,54 +1,76 @@ -# Copyright 2021-2026 Liguros Authors +# Copyright 1999-2026 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=8 + +EAPI="8" + LUA_COMPAT=( lua5-{1,3,4} luajit ) -inherit flag-o-matic linux-info lua-single systemd toolchain-funcs +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing MY_P="${PN}-${PV/_beta/-dev}" DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" -HOMEPAGE="https://www.haproxy.org" -SRC_URI="https://www.haproxy.org/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz" -KEYWORDS="~amd64 ~arm ~arm64 ~ppc ~x86" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible. Only git clones are allowed by VTest upstream. + # git clone https://code.vinyl-cache.org/vtest/VTest2 + # cd VTest2 + # VTEST2_NAME="VTest2-$(git rev-parse --short HEAD)" + # git archive --format=tar.gz --prefix="${VTEST2_NAME}/" -o "${VTEST2_NAME}.tar.gz" HEAD + # scp ${VTEST2_NAME}.tar.gz dev.gentoo.org:~/public_html/distfiles/ + VTEST2_COMMIT="3bba149e0c322585c09db2827a2a6cf0d3b15d54" + VTEST2_DIR="${WORKDIR}/VTest2-${VTEST2_COMMIT:0:7}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://dev.gentoo.org/~idl0r/distfiles/VTest2-${VTEST2_COMMIT:0:7}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" LICENSE="GPL-2 LGPL-2.1" SLOT="0/$(ver_cut 1-2)" -IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit pcre2 pcre2-jit prometheus-exporter -ssl systemd +threads tools vim-syntax zlib lua device-atlas 51degrees wurfl" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic +selinux ssl systemd test +threads tools zlib lua 51degrees wurfl" REQUIRED_USE="pcre-jit? ( pcre ) - pcre2-jit? ( pcre2 ) - pcre? ( !pcre2 ) lua? ( ${LUA_REQUIRED_USE} ) - device-atlas? ( pcre ) ?? ( slz zlib )" +RESTRICT="!test? ( test )" BDEPEND="virtual/pkgconfig" DEPEND=" crypt? ( virtual/libcrypt:= ) pcre? ( - dev-libs/libpcre - pcre-jit? ( dev-libs/libpcre[jit] ) - ) - pcre2? ( dev-libs/libpcre2:= - pcre2-jit? ( dev-libs/libpcre2:=[jit] ) + pcre-jit? ( dev-libs/libpcre2:=[jit] ) ) ssl? ( dev-libs/openssl:0= - + ) + quic? ( + >=dev-libs/openssl-3.5.0:0= ) systemd? ( sys-apps/systemd ) - zlib? ( sys-libs/zlib ) + zlib? ( virtual/zlib:= ) lua? ( ${LUA_DEPS} ) - device-atlas? ( dev-libs/device-atlas-api-c )" + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" RDEPEND="${DEPEND} acct-group/haproxy - acct-user/haproxy" + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" -S="${WORKDIR}/${MY_P}" - -DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS README.md ) +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS ) EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) haproxy_use() { @@ -65,60 +87,89 @@ pkg_setup() { fi } +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://code.vinyl-cache.org/vtest/VTest2" EGIT_BRANCH="main" EGIT_CHECKOUT_DIR="${VTEST2_DIR}" \ + git-r3_src_unpack + fi +} + src_compile() { local -a args=( V=1 - TARGET=linux-glibc + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= ) + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + # TODO: PCRE2_WIDTH? args+=( $(haproxy_use threads THREAD) ) args+=( $(haproxy_use crypt LIBCRYPT) ) args+=( $(haproxy_use net_ns NS) ) - args+=( $(haproxy_use pcre PCRE) ) - args+=( $(haproxy_use pcre-jit PCRE_JIT) ) - args+=( $(haproxy_use pcre2 PCRE2) ) - args+=( $(haproxy_use pcre2-jit PCRE2_JIT) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) args+=( $(haproxy_use ssl OPENSSL) ) args+=( $(haproxy_use slz SLZ) ) args+=( $(haproxy_use zlib ZLIB) ) args+=( $(haproxy_use lua LUA) ) args+=( $(haproxy_use 51degrees 51DEGREES) ) - args+=( $(haproxy_use device-atlas DEVICEATLAS) ) args+=( $(haproxy_use wurfl WURFL) ) - args+=( $(haproxy_use systemd SYSTEMD) ) args+=( $(haproxy_use prometheus-exporter PROMEX) ) + args+=( $(haproxy_use quic QUIC) ) # Bug #668002 if use ppc || use arm || use hppa; then TARGET_LDFLAGS=-latomic fi - # HAProxy really needs some of those "SPEC_CFLAGS", like -fno-strict-aliasing - emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB=${ERROT}/usr/$(get_libdir) ${args[@]} - emake -C admin/systemd CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB=${ERROT}/usr/$(get_libdir) SBINDIR=/usr/sbin + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin if use tools ; then for extra in ${EXTRAS[@]} ; do if [ "${extra}" = "admin/halog" ]; then - emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB=${ERROT}/usr/$(get_libdir) ${args[@]} admin/halog/halog + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog elif [ "${extra}" = "dev/hpack" ]; then - emake CFLAGS="${CFLAGS} \$(SPEC_CFLAGS)" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB=${ERROT}/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} else # Those two includes are a workaround for hpack Makefile missing those emake -C ${extra} \ - CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) ${args[@]} + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} fi done fi } +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST2_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST2_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + src_install() { dosbin haproxy - dosym ../sbin/haproxy /usr/bin/haproxy - newconfd "${FILESDIR}/${PN}.confd" ${PN} - newinitd "${FILESDIR}/${PN}.initd-r6" ${PN} + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} doman doc/haproxy.1 @@ -131,7 +182,7 @@ src_install() { doins examples/errorfiles/* if use doc; then - dodoc ROADMAP doc/*.txt + dodoc doc/*.txt #if use lua; then # TODO: doc/lua-api/ #fi @@ -139,13 +190,19 @@ src_install() { if use tools ; then has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog - has admin/iprange "${EXTRAS[@]}" && { newbin admin/iprange/iprange haproxy_iprange; newbin admin/iprange/ip6range haproxy_ip6range; } + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop has dev/hpack "${EXTRAS[@]}" && { newbin dev/hpack/gen-rht haproxy_gen-rht newbin dev/hpack/gen-enc haproxy_gen-enc newbin dev/hpack/decode haproxy_decode } + + dosbin admin/cli/haproxy-dump-certs + dosbin admin/cli/haproxy-reload fi if use examples ; then @@ -154,10 +211,8 @@ src_install() { dodoc doc/seamless_reload.txt fi - if use vim-syntax ; then - insinto /usr/share/vim/vimfiles/syntax - doins admin/syntax-highlight/haproxy.vim - fi + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim } pkg_postinst() { diff --git a/net-proxy/haproxy/haproxy-3.3.5.ebuild b/net-proxy/haproxy/haproxy-3.3.5.ebuild new file mode 100644 index 000000000000..a863baffa04f --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.3.5.ebuild @@ -0,0 +1,223 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible + VTEST_COMMIT="af198470d7ce482d3d26eb9ca3f246a438739366" + VTEST_DIR="${WORKDIR}/VTest-${VTEST_COMMIT}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://github.com/vtest/VTest/archive/${VTEST_COMMIT}.tar.gz -> VTest-${VTEST_COMMIT}.tar.gz )" + KEYWORDS="amd64 ~arm64 ~ppc x86" +elif [[ ${PV} == 9999 ]]; then + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST_DIR="${WORKDIR}/VTest" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic +ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + quic? ( + >=dev-libs/openssl-3.5.0:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://github.com/vtest/VTest" EGIT_CHECKOUT_DIR="${VTEST_DIR}" git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + args+=( $(haproxy_use quic QUIC) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + + dosbin admin/cli/haproxy-dump-certs + dosbin admin/cli/haproxy-reload + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.3.9999.ebuild b/net-proxy/haproxy/haproxy-3.3.9999.ebuild new file mode 100644 index 000000000000..06742eb6ff59 --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.3.9999.ebuild @@ -0,0 +1,230 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible. Only git clones are allowed by VTest upstream. + # git clone https://code.vinyl-cache.org/vtest/VTest2 + # cd VTest2 + # VTEST2_NAME="VTest2-$(git rev-parse --short HEAD)" + # git archive --format=tar.gz --prefix="${VTEST2_NAME}/" -o "${VTEST2_NAME}.tar.gz" HEAD + # scp ${VTEST2_NAME}.tar.gz dev.gentoo.org:~/public_html/distfiles/ + VTEST2_COMMIT="3bba149e0c322585c09db2827a2a6cf0d3b15d54" + VTEST2_DIR="${WORKDIR}/VTest2-${VTEST2_COMMIT:0:7}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://dev.gentoo.org/~idl0r/distfiles/VTest2-${VTEST2_COMMIT:0:7}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt doc examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic +selinux ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + quic? ( + >=dev-libs/openssl-3.5.0:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://code.vinyl-cache.org/vtest/VTest2" EGIT_BRANCH="main" EGIT_CHECKOUT_DIR="${VTEST2_DIR}" \ + git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + args+=( $(haproxy_use quic QUIC) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST2_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST2_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + + dosbin admin/cli/haproxy-dump-certs + dosbin admin/cli/haproxy-reload + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.4.0.ebuild b/net-proxy/haproxy/haproxy-3.4.0.ebuild new file mode 100644 index 000000000000..f48a71ed0a2e --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.4.0.ebuild @@ -0,0 +1,242 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible. Only git clones are allowed by VTest upstream. + # git clone https://code.vinyl-cache.org/vtest/VTest2 + # cd VTest2 + # VTEST2_NAME="VTest2-$(git rev-parse --short HEAD)" + # git archive --format=tar.gz --prefix="${VTEST2_NAME}/" -o "${VTEST2_NAME}.tar.gz" HEAD + # scp ${VTEST2_NAME}.tar.gz dev.gentoo.org:~/public_html/distfiles/ + VTEST2_COMMIT="3bba149e0c322585c09db2827a2a6cf0d3b15d54" + VTEST2_DIR="${WORKDIR}/VTest2-${VTEST2_COMMIT:0:7}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://dev.gentoo.org/~idl0r/distfiles/VTest2-${VTEST2_COMMIT:0:7}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt +doc ech examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic +selinux +ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ech? ( ssl ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + quic? ( + >=dev-libs/openssl-3.5.0:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + ) + ech? ( >=dev-libs/openssl-4.0.0:0/4 )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +CONFIG_CHECK="~TCP_MD5SIG" + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://code.vinyl-cache.org/vtest/VTest2" EGIT_BRANCH="main" EGIT_CHECKOUT_DIR="${VTEST2_DIR}" \ + git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use ech ECH) ) + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + args+=( $(haproxy_use quic QUIC) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} haterm + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST2_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST2_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + # conf.d is mandatory in recent systemd units + keepdir /etc/haproxy/conf.d + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + + dosbin admin/cli/haproxy-dump-certs + dosbin admin/cli/haproxy-reload + + dobin haterm + use doc && dodoc doc/haterm.txt + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-3.4.9999.ebuild b/net-proxy/haproxy/haproxy-3.4.9999.ebuild new file mode 100644 index 000000000000..f48a71ed0a2e --- /dev/null +++ b/net-proxy/haproxy/haproxy-3.4.9999.ebuild @@ -0,0 +1,242 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible. Only git clones are allowed by VTest upstream. + # git clone https://code.vinyl-cache.org/vtest/VTest2 + # cd VTest2 + # VTEST2_NAME="VTest2-$(git rev-parse --short HEAD)" + # git archive --format=tar.gz --prefix="${VTEST2_NAME}/" -o "${VTEST2_NAME}.tar.gz" HEAD + # scp ${VTEST2_NAME}.tar.gz dev.gentoo.org:~/public_html/distfiles/ + VTEST2_COMMIT="3bba149e0c322585c09db2827a2a6cf0d3b15d54" + VTEST2_DIR="${WORKDIR}/VTest2-${VTEST2_COMMIT:0:7}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://dev.gentoo.org/~idl0r/distfiles/VTest2-${VTEST2_COMMIT:0:7}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt +doc ech examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic +selinux +ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ech? ( ssl ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + quic? ( + >=dev-libs/openssl-3.5.0:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + ) + ech? ( >=dev-libs/openssl-4.0.0:0/4 )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +CONFIG_CHECK="~TCP_MD5SIG" + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://code.vinyl-cache.org/vtest/VTest2" EGIT_BRANCH="main" EGIT_CHECKOUT_DIR="${VTEST2_DIR}" \ + git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use ech ECH) ) + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + args+=( $(haproxy_use quic QUIC) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} haterm + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST2_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST2_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + # conf.d is mandatory in recent systemd units + keepdir /etc/haproxy/conf.d + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + + dosbin admin/cli/haproxy-dump-certs + dosbin admin/cli/haproxy-reload + + dobin haterm + use doc && dodoc doc/haterm.txt + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/haproxy-9999.ebuild b/net-proxy/haproxy/haproxy-9999.ebuild new file mode 100644 index 000000000000..f48a71ed0a2e --- /dev/null +++ b/net-proxy/haproxy/haproxy-9999.ebuild @@ -0,0 +1,242 @@ +# Copyright 1999-2026 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="8" + +LUA_COMPAT=( lua5-{1,3,4} luajit ) + +[[ ${PV} == *9999 ]] && SCM="git-r3" +inherit toolchain-funcs lua-single systemd linux-info ${SCM} multiprocessing + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://www.haproxy.org" +if [[ ${PV} != *9999 ]]; then + # This is arbitrary; upstream uses master. Try to update when possible. Only git clones are allowed by VTest upstream. + # git clone https://code.vinyl-cache.org/vtest/VTest2 + # cd VTest2 + # VTEST2_NAME="VTest2-$(git rev-parse --short HEAD)" + # git archive --format=tar.gz --prefix="${VTEST2_NAME}/" -o "${VTEST2_NAME}.tar.gz" HEAD + # scp ${VTEST2_NAME}.tar.gz dev.gentoo.org:~/public_html/distfiles/ + VTEST2_COMMIT="3bba149e0c322585c09db2827a2a6cf0d3b15d54" + VTEST2_DIR="${WORKDIR}/VTest2-${VTEST2_COMMIT:0:7}" + SRC_URI="http://haproxy.1wt.eu/download/$(ver_cut 1-2)/src/${MY_P}.tar.gz + test? ( https://dev.gentoo.org/~idl0r/distfiles/VTest2-${VTEST2_COMMIT:0:7}.tar.gz )" + KEYWORDS="~amd64 ~arm64 ~ppc ~x86" +elif [[ ${PV} == 9999 ]]; then + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy.git/" + EGIT_BRANCH=master +else + VTEST2_DIR="${WORKDIR}/VTest2" + EGIT_REPO_URI="https://git.haproxy.org/git/haproxy-$(ver_cut 1-2).git/" + EGIT_BRANCH=master +fi + +S="${WORKDIR}/${MY_P}" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0/$(ver_cut 1-2)" +IUSE="+crypt +doc ech examples +slz +net_ns +pcre pcre-jit prometheus-exporter quic +selinux +ssl systemd test +threads tools zlib lua 51degrees wurfl" +REQUIRED_USE="pcre-jit? ( pcre ) + lua? ( ${LUA_REQUIRED_USE} ) + ech? ( ssl ) + ?? ( slz zlib )" +RESTRICT="!test? ( test )" + +BDEPEND="virtual/pkgconfig" +DEPEND=" + crypt? ( virtual/libcrypt:= ) + pcre? ( + dev-libs/libpcre2:= + pcre-jit? ( dev-libs/libpcre2:=[jit] ) + ) + ssl? ( + dev-libs/openssl:0= + ) + quic? ( + >=dev-libs/openssl-3.5.0:0= + ) + systemd? ( sys-apps/systemd ) + zlib? ( virtual/zlib:= ) + lua? ( ${LUA_DEPS} ) + test? ( + dev-libs/libpcre2 + virtual/zlib:= + ) + ech? ( >=dev-libs/openssl-4.0.0:0/4 )" +RDEPEND="${DEPEND} + acct-group/haproxy + acct-user/haproxy + selinux? ( sec-policy/selinux-haproxy )" + +DOCS=( CHANGELOG CONTRIBUTING MAINTAINERS ) +EXTRAS=( admin/halog admin/iprange dev/tcploop dev/hpack ) + +CONFIG_CHECK="~TCP_MD5SIG" + +haproxy_use() { + (( $# != 2 )) && die "${FUNCNAME} <USE flag> <make option>" + + usex "${1}" "USE_${2}=1" "USE_${2}=" +} + +pkg_setup() { + use lua && lua-single_pkg_setup + if use net_ns; then + CONFIG_CHECK="~NET_NS" + linux-info_pkg_setup + fi +} + +src_unpack() { + if [[ ${PV} != *9999 ]]; then + default + else + git-r3_src_unpack + EGIT_REPO_URI="https://code.vinyl-cache.org/vtest/VTest2" EGIT_BRANCH="main" EGIT_CHECKOUT_DIR="${VTEST2_DIR}" \ + git-r3_src_unpack + fi +} + +src_compile() { + local -a args=( + V=1 + # Switching to PCRE2 by default, bug 838013 + PCRE= + PCRE_JIT= + ) + + if use elibc_musl; then + args+=( TARGET=linux-musl ) + else + args+=( TARGET=linux-glibc ) + fi + + # TODO: PCRE2_WIDTH? + args+=( $(haproxy_use ech ECH) ) + args+=( $(haproxy_use threads THREAD) ) + args+=( $(haproxy_use crypt LIBCRYPT) ) + args+=( $(haproxy_use net_ns NS) ) + args+=( $(haproxy_use pcre PCRE2) ) + args+=( $(haproxy_use pcre-jit PCRE2_JIT) ) + args+=( $(haproxy_use ssl OPENSSL) ) + args+=( $(haproxy_use slz SLZ) ) + args+=( $(haproxy_use zlib ZLIB) ) + args+=( $(haproxy_use lua LUA) ) + args+=( $(haproxy_use 51degrees 51DEGREES) ) + args+=( $(haproxy_use wurfl WURFL) ) + args+=( $(haproxy_use prometheus-exporter PROMEX) ) + args+=( $(haproxy_use quic QUIC) ) + + # Bug #668002 + if use ppc || use arm || use hppa; then + TARGET_LDFLAGS=-latomic + fi + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} + emake -C admin/systemd CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) \ + SBINDIR=/usr/sbin + + if use tools ; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" EXTRA_OBJS="${EXTRA_OBJS}" \ + TARGET_LDFLAGS="${TARGET_LDFLAGS}" PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} haterm + for extra in ${EXTRAS[@]} ; do + if [ "${extra}" = "admin/halog" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} admin/halog/halog + elif [ "${extra}" = "dev/hpack" ]; then + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC="$(tc-getCC)" \ + EXTRA_OBJS="${EXTRA_OBJS}" TARGET_LDFLAGS="${TARGET_LDFLAGS}" \ + PCRE_LIB="${ESYSROOT}"/usr/$(get_libdir) ${args[@]} dev/hpack/{decode,gen-enc,gen-rht} + else + # Those two includes are a workaround for hpack Makefile missing those + emake -C ${extra} \ + CFLAGS="${CFLAGS} -I../../include/ -I../../ebtree/" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" \ + CC="$(tc-getCC)" ${args[@]} + fi + done + fi +} + +src_test() { + # https://github.com/vtest/VTest/issues/12 + emake -C "${VTEST2_DIR}" CC="$(tc-getCC)" FLAGS="${CFLAGS} -Wno-error=unused-result" + ulimit -n 65536 || die "${PN} requires ulimit -n set to at least 65536 for tests" + env -u A -u D TMPDIR="/tmp" emake reg-tests -- --v --j "$(makeopts_jobs)" \ + HAPROXY_PROGRAM="${S}/haproxy" VTEST_PROGRAM="${VTEST2_DIR}/vtest" REGTESTS_TYPE="default,bug,devel" +} + +src_install() { + dosbin haproxy + + newconfd "${FILESDIR}/${PN}.confd-r1" ${PN} + newinitd "${FILESDIR}/${PN}.initd-r9" ${PN} + + doman doc/haproxy.1 + + systemd_dounit admin/systemd/haproxy.service + # conf.d is mandatory in recent systemd units + keepdir /etc/haproxy/conf.d + + einstalldocs + + # The errorfiles are used by upstream defaults. + insinto /etc/haproxy/errors/ + doins examples/errorfiles/* + + if use doc; then + dodoc doc/*.txt + #if use lua; then + # TODO: doc/lua-api/ + #fi + fi + + if use tools ; then + has admin/halog "${EXTRAS[@]}" && dobin admin/halog/halog + has admin/iprange "${EXTRAS[@]}" && { + newbin admin/iprange/iprange haproxy_iprange + newbin admin/iprange/ip6range haproxy_ip6range + } + has dev/tcploop "${EXTRAS[@]}" && newbin dev/tcploop/tcploop haproxy_tcploop + has dev/hpack "${EXTRAS[@]}" && { + newbin dev/hpack/gen-rht haproxy_gen-rht + newbin dev/hpack/gen-enc haproxy_gen-enc + newbin dev/hpack/decode haproxy_decode + } + + dosbin admin/cli/haproxy-dump-certs + dosbin admin/cli/haproxy-reload + + dobin haterm + use doc && dodoc doc/haterm.txt + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + dodoc doc/seamless_reload.txt + fi + + insinto /usr/share/vim/vimfiles/syntax + doins admin/syntax-highlight/haproxy.vim +} + +pkg_postinst() { + if [[ ! -f "${EROOT}/etc/haproxy/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/haproxy/haproxy.cfg before you start the haproxy service." + ewarn "It's best practice to not run haproxy as root, user and group haproxy was therefore created." + ewarn "Make use of them with the \"user\" and \"group\" directives." + + if [[ -d "${EROOT}/usr/share/doc/${PF}" ]]; then + einfo "Please consult the installed documentation for learning the configuration file's syntax." + einfo "The documentation and sample configuration files are installed here:" + einfo " ${EROOT}/usr/share/doc/${PF}" + fi + fi +} diff --git a/net-proxy/haproxy/metadata.xml b/net-proxy/haproxy/metadata.xml index ec3c1cdb3aa5..de5b53a14810 100644 --- a/net-proxy/haproxy/metadata.xml +++ b/net-proxy/haproxy/metadata.xml @@ -1,10 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> <pkgmetadata> - <maintainer type="project"> - <email>dev@liguros.net</email> - <name>Development</name> - </maintainer> <maintainer type="person"> <email>idl0r@gentoo.org</email> <name>Christian Ruppert</name> @@ -22,18 +18,14 @@ - block requests matching a particular pattern Its event-driven architecture allows it to easily handle thousands of simultaneous connections on hundreds of instances without risking the system's stability. </longdescription> - <upstream> - <remote-id type="cpe">cpe:/a:haproxy:haproxy</remote-id> - </upstream> <use> + <flag name="ech">Enable OpenSSL ECH</flag> <flag name="net_ns">Enable network namespace support (CONFIG_NET_NS)</flag> <flag name="pcre-jit">Use JIT support for PCRE</flag> - <flag name="pcre2">Enable PCRE2 RegEx support</flag> - <flag name="pcre2-jit">Use JIT support for PCRE2</flag> <flag name="prometheus-exporter">Also build the prometheus exporter</flag> + <flag name="quic">Enable support for QUIC (RFC 9000); a UDP-based protocol intended to replace TCP</flag> <flag name="slz">Use <pkg>dev-libs/libslz</pkg> compression library</flag> <flag name="tools">Install additional tools (halog, iprange)</flag> - <flag name="device-atlas">Use <pkg>dev-libs/device-atlas-api-c</pkg> library</flag> <flag name="51degrees">Device Detection using 51 Degrees</flag> <flag name="wurfl">Device Detection using WURFL</flag> </use> |
