summaryrefslogtreecommitdiff
path: root/net-proxy
diff options
context:
space:
mode:
authorroot <root@alpha.trunkmasters.com>2026-06-20 14:54:46 -0500
committerroot <root@alpha.trunkmasters.com>2026-06-20 14:54:46 -0500
commit1a4479b4e0368c8d5ff241ebad17b2541a7e3ba0 (patch)
tree18e2e784f9fb0dbc3546537acc42ad51b366d90e /net-proxy
parent9f6a581d94412ab1cf4b35c33101f6be0ddc7777 (diff)
downloadbaldeagleos-repo-1a4479b4e0368c8d5ff241ebad17b2541a7e3ba0.tar.gz
baldeagleos-repo-1a4479b4e0368c8d5ff241ebad17b2541a7e3ba0.tar.xz
baldeagleos-repo-1a4479b4e0368c8d5ff241ebad17b2541a7e3ba0.zip
Adding metadata
Diffstat (limited to 'net-proxy')
-rw-r--r--net-proxy/haproxy/Manifest13
-rw-r--r--net-proxy/haproxy/files/haproxy.confd-r1 (renamed from net-proxy/haproxy/files/haproxy.confd)2
-rw-r--r--net-proxy/haproxy/files/haproxy.initd-r8 (renamed from net-proxy/haproxy/files/haproxy.initd-r6)8
-rw-r--r--net-proxy/haproxy/files/haproxy.initd-r986
-rw-r--r--net-proxy/haproxy/haproxy-2.8.11.ebuild (renamed from net-proxy/haproxy/haproxy-3.3.9.ebuild)127
-rw-r--r--net-proxy/haproxy/haproxy-2.8.18.ebuild218
-rw-r--r--net-proxy/haproxy/haproxy-2.8.24.ebuild219
-rw-r--r--net-proxy/haproxy/haproxy-2.8.9999.ebuild219
-rw-r--r--net-proxy/haproxy/haproxy-3.0.14.ebuild217
-rw-r--r--net-proxy/haproxy/haproxy-3.0.23.ebuild218
-rw-r--r--net-proxy/haproxy/haproxy-3.0.5.ebuild217
-rw-r--r--net-proxy/haproxy/haproxy-3.0.9999.ebuild218
-rw-r--r--net-proxy/haproxy/haproxy-3.2.19.ebuild221
-rw-r--r--net-proxy/haproxy/haproxy-3.2.9.ebuild220
-rw-r--r--net-proxy/haproxy/haproxy-3.2.9999.ebuild221
-rw-r--r--net-proxy/haproxy/haproxy-3.3.10.ebuild145
-rw-r--r--net-proxy/haproxy/haproxy-3.3.5.ebuild223
-rw-r--r--net-proxy/haproxy/haproxy-3.3.9999.ebuild230
-rw-r--r--net-proxy/haproxy/haproxy-3.4.0.ebuild242
-rw-r--r--net-proxy/haproxy/haproxy-3.4.9999.ebuild242
-rw-r--r--net-proxy/haproxy/haproxy-9999.ebuild242
-rw-r--r--net-proxy/haproxy/metadata.xml12
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>