blob: 799e2456e3bc2acc061c57ff7578bbbdc9db2ac1 [file] [log] [blame]
SUMMARY = "TCP/HTTP proxy and load balancer for high availability environments"
DESCRIPTION = " \
HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high \
availability environments. Indeed, it can: \
- route HTTP requests depending on statically assigned cookies \
- spread load among several servers while assuring server persistence \
through the use of HTTP cookies \
- switch to backup servers in the event a main server fails \
- accept connections to special ports dedicated to service monitoring \
- stop accepting connections without breaking existing ones \
- add, modify, and delete HTTP headers in both directions \
- block requests matching particular patterns \
- report detailed status to authenticated users from a URI \
intercepted by the application \
"
HOMEPAGE = "http://www.haproxy.org/"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=2d862e836f92129cdc0ecccc54eed5e0"
DEPENDS = "libpcre openssl zlib"
MAJOR_VER = "${@'.'.join(d.getVar('PV').split('.')[0:2])}"
inherit stx-metadata
STX_REPO = "config-files"
STX_SUBPATH = "haproxy-config"
SRC_URI = "\
https://www.haproxy.org/download/${MAJOR_VER}/src/haproxy-${PV}.tar.gz \
file://haproxy.service \
file://haproxy.cfg \
"
inherit systemd useradd
# create a user for running haproxy
HAP_USER_HOME = "${libdir}/haproxy"
USERADD_PACKAGES = "${PN}"
USERADD_PARAM_${PN} = "--system --home ${HAP_USER_HOME} --shell /sbin/nologin \
--groups haproxy --gid haproxy haproxy"
GROUPADD_PARAM_${PN} = "haproxy"
# for haproxy 1.x
HAP_TARGET = "linux2628"
EXTRA_OEMAKE = " \
'CPU=generic' \
'TARGET=${HAP_TARGET}' \
'USE_GETADDRINFO=1' \
'USE_OPENSSL=1' \
'USE_PCRE=1' 'USE_PCRE_JIT=1' \
'USE_ZLIB=1' \
'USE_LINUX_TPROXY=1' \
"
EXTRA_OEMAKE_append_x86 = " USE_REGPARM=1"
EXTRA_OEMAKE_append_x86-64 = " USE_REGPARM=1"
do_configure() {
:
}
do_compile() {
oe_runmake CC="${CC}" CFLAGS="${CFLAGS}" SBINDIR="${sbindir}" \
PREFIX="${prefix}" \
ZLIB_INC=${STAGING_INCDIR} \
ZLIB_LIB=${STAGING_LIBDIR} \
PCRE_INC=${STAGING_INCDIR} \
PCRE_LIB=${STAGING_LIBDIR} \
SSL_INC=${STAGING_INCDIR} \
SSL_LIB=${STAGING_LIBDIR}
oe_runmake -C contrib/halog halog
oe_runmake -C contrib/iprange iprange
}
do_install() {
oe_runmake install-bin \
PREFIX="${prefix}" \
SBINDIR="${sbindir}" \
DESTDIR=${D} \
INCLUDEDIR=${includedir}
install -D -m 0644 ${WORKDIR}/haproxy.service ${D}${systemd_system_unitdir}/haproxy.service
sed -i -e 's#/usr/bin/haproxy#/usr/sbin/haproxy#g' ${D}${systemd_system_unitdir}/haproxy.service
install -D -m 0644 ${WORKDIR}/haproxy.cfg ${D}${sysconfdir}/haproxy/haproxy.cfg
# install ssl folder for certificate
install -m 700 -d ${D}/${sysconfdir}/ssl/haproxy
chown haproxy:haproxy ${D}/${sysconfdir}/ssl/haproxy
# install halog and iprange
install -D -m 755 contrib/halog/halog ${D}${bindir}/halog
install -D -m 755 contrib/iprange/iprange ${D}${bindir}/iprange
install -d -m 755 ${D}/${sysconfdir}/haproxy/errors/
install -m 755 ${STX_METADATA_PATH}/files/503.http ${D}/${sysconfdir}/haproxy/errors/503.http
install -p -D -m 0755 ${STX_METADATA_PATH}/files/haproxy.sh ${D}/${sysconfdir}/init.d/haproxy
}
DISTRO_FEATURES_BACKFILL_CONSIDERED_remove = "sysvinit"
FILES_${PN} = " \
${bindir} \
${sbindir} \
${sysconfdir} \
${systemd_system_unitdir} \
"
RDEPENDS_${PN} = "openssl"
SYSTEMD_SERVICE_${PN} = "haproxy.service"
INSANE_SKIP_${PN} += "already-stripped"