diff options
author | Patrick Lauer <patrick@gentoo.org> | 2017-11-30 07:20:59 +0000 |
---|---|---|
committer | Patrick Lauer <patrick@gentoo.org> | 2017-11-30 07:20:59 +0000 |
commit | 1016c8d09a77369c4b37e511bf6b3f03922f7c23 (patch) | |
tree | b4d41e9a7e49980514e163b16ac1843df36dd478 /net-proxy/haproxy/haproxy-1.5.19-r2.ebuild | |
parent | media-libs/mesa: Print full path to patents.txt (diff) | |
download | gentoo-1016c8d09a77369c4b37e511bf6b3f03922f7c23.tar.gz gentoo-1016c8d09a77369c4b37e511bf6b3f03922f7c23.tar.bz2 gentoo-1016c8d09a77369c4b37e511bf6b3f03922f7c23.zip |
net-proxy/haproxy: Fix init script
The change in https://bugs.gentoo.org/show_bug.cgi?id=584410 only worked because of
multiple bugs interacting.
Due to variable shadowing https://bugs.gentoo.org/show_bug.cgi?id=639164 the loop did not
actually work, and the /run/haproxy.pid was used in every loop iteration.
This only worked because of a bug in openrc: https://bugs.gentoo.org/show_bug.cgi?id=639218
which was fixed in 0.34.11
So before it killed all processes called haproxy if nbproc > 1 in the config
(which means multiple haproxy instances are all killed if one is stopped!)
After the bugfix it doesn't kill, so we're back to the original situation of leftover
processes. And we don't want to rely on the cgroup killer!
The fix is obviously to use start-stop-daemon directly instead of calling openrc
internals that don't do what you think they do.
Package-Manager: Portage-2.3.16, Repoman-2.3.6
RepoMan-Options: --force
Diffstat (limited to 'net-proxy/haproxy/haproxy-1.5.19-r2.ebuild')
-rw-r--r-- | net-proxy/haproxy/haproxy-1.5.19-r2.ebuild | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/net-proxy/haproxy/haproxy-1.5.19-r2.ebuild b/net-proxy/haproxy/haproxy-1.5.19-r2.ebuild new file mode 100644 index 000000000000..7b4655b91afa --- /dev/null +++ b/net-proxy/haproxy/haproxy-1.5.19-r2.ebuild @@ -0,0 +1,135 @@ +# Copyright 1999-2017 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="5" + +inherit user versionator toolchain-funcs flag-o-matic systemd + +MY_P="${PN}-${PV/_beta/-dev}" + +DESCRIPTION="A TCP/HTTP reverse proxy for high availability environments" +HOMEPAGE="http://haproxy.1wt.eu" +SRC_URI="http://haproxy.1wt.eu/download/$(get_version_component_range 1-2)/src/${MY_P}.tar.gz" + +LICENSE="GPL-2 LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~arm ~ppc ~x86" +IUSE="+crypt examples libressl +pcre pcre-jit ssl tools vim-syntax +zlib" + +DEPEND=" + pcre? ( + dev-libs/libpcre + pcre-jit? ( dev-libs/libpcre[jit] ) + ) + ssl? ( + !libressl? ( dev-libs/openssl:0=[zlib?] ) + libressl? ( dev-libs/libressl:0= ) + ) + zlib? ( sys-libs/zlib )" +RDEPEND="${DEPEND}" + +S="${WORKDIR}/${MY_P}" + +pkg_setup() { + enewgroup haproxy + enewuser haproxy -1 -1 -1 haproxy +} + +src_compile() { + local args="TARGET=linux2628 USE_GETADDRINFO=1" + + if use pcre ; then + args="${args} USE_PCRE=1" + if use pcre-jit; then + args="${args} USE_PCRE_JIT=1" + else + args="${args} USE_PCRE_JIT=" + fi + else + args="${args} USE_PCRE= USE_PCRE_JIT=" + fi + +# if use kernel_linux; then +# args="${args} USE_LINUX_SPLICE=1 USE_LINUX_TPROXY=1" +# else +# args="${args} USE_LINUX_SPLICE= USE_LINUX_TPROXY=" +# fi + + if use crypt ; then + args="${args} USE_LIBCRYPT=1" + else + args="${args} USE_LIBCRYPT=" + fi + + if use ssl ; then + args="${args} USE_OPENSSL=1" + else + args="${args} USE_OPENSSL=" + fi + + if use zlib ; then + args="${args} USE_ZLIB=1" + else + args="${args} USE_ZLIB=" + fi + + # For now, until the strict-aliasing breakage will be fixed + append-cflags -fno-strict-aliasing + + emake CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) ${args} + emake -C contrib/systemd SBINDIR=/usr/sbin + + if use tools ; then + for contrib in halog iprange ; do + emake -C contrib/${contrib} \ + CFLAGS="${CFLAGS}" OPTIMIZE="${CFLAGS}" LDFLAGS="${LDFLAGS}" CC=$(tc-getCC) ${args} + done + fi +} + +src_install() { + dosbin haproxy + dosym /usr/sbin/haproxy /usr/bin/haproxy + + newinitd "${FILESDIR}/haproxy.initd-r6" haproxy + + # Don't install useless files +# rm examples/build.cfg doc/*gpl.txt + + dodoc CHANGELOG ROADMAP doc/{configuration,haproxy-en}.txt + doman doc/haproxy.1 + + dosbin haproxy-systemd-wrapper + dosym /usr/sbin/haproxy-systemd-wrapper /usr/bin/haproxy-systemd-wrapper + systemd_dounit contrib/systemd/haproxy.service + + if use tools ; then + for contrib in halog iprange ; do + dobin contrib/${contrib}/${contrib} + done + fi + + if use examples ; then + docinto examples + dodoc examples/*.cfg + fi + + if use vim-syntax ; then + insinto /usr/share/vim/vimfiles/syntax + doins examples/haproxy.vim + fi +} + +pkg_postinst() { + if [[ ! -f "${ROOT}/etc/haproxy.cfg" ]] ; then + ewarn "You need to create /etc/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 "${ROOT}/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 " ${ROOT}usr/share/doc/${PF}" + fi + fi +} |