File haproxy.spec of Package HAProxy
%define haproxy_user haproxy
%define haproxy_group %{haproxy_user}
%define haproxy_homedir %{_localstatedir}/lib/haproxy
%define haproxy_confdir %{_sysconfdir}/haproxy
%define haproxy_datadir %{_datadir}/haproxy
%global _hardened_build 1
Name: haproxy
Version: 2.4.30
Release: <CI_CNT>%{?dist}
Summary: HAProxy reverse proxy for high availability environments
License: GPLv2+
URL: http://www.haproxy.org/
Source0: %{url}/download/2.4/src/haproxy-%{version}.tar.gz
Source1: %{name}.service
Source2: %{name}.cfg
Source3: %{name}.logrotate
Source4: %{name}.sysconfig
Source5: halog.1
%if 0%{?centos_version} > 700 || 0%{?rhel_version} > 700
BuildRequires: lua-devel
%endif
BuildRequires: gcc
%if 0%{?centos_version} >= 700 || 0%{?rhel_version} > 700
BuildRequires: pcre2-devel
%else
BuildRequires: pcre-devel
%endif
BuildRequires: zlib-devel
BuildRequires: openssl-devel
BuildRequires: systemd-devel
BuildRequires: systemd
Requires(pre): shadow-utils
%{?systemd_requires}
%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 one 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 from the application
%prep
%setup -q -n %{name}-%{version}
%build
regparm_opts=
%ifarch %ix86 x86_64
regparm_opts="USE_REGPARM=1"
%endif
%{__make} %{?_smp_mflags} CPU="generic" TARGET="linux-glibc" USE_OPENSSL=1 USE_ZLIB=1 USE_PROMEX=1 \
%if 0%{?centos_version} >= 700 || 0%{?rhel_version} > 700
USE_PCRE2=1 \
%else
USE_PCRE=1 \
%endif
%if 0%{?centos_version} > 700 || 0%{?rhel_version} > 700
USE_LUA=1 \
%endif
USE_CRYPT_H=1 USE_SYSTEMD=1 USE_LINUX_TPROXY=1 USE_GETADDRINFO=1 ${regparm_opts} ADDINC="%{optflags}" ADDLIB="%{__global_ldflags}"
#pushd contrib/halog
#%{__make} ${halog} \
#%if 0%{?centos_version} > 700 || 0%{?rhel_version} > 700
#OPTIMIZE="%{optflags} %{build_ldflags}"
#%else
#OPTIMIZE="%{optflags}"
#%endif
#popd
#pushd contrib/iprange
#%{__make} iprange \
#%if 0%{?centos_version} > 700 || 0%{?rhel_version} > 700
#OPTIMIZE="%{optflags} %{build_ldflags}"
#%else
#OPTIMIZE="%{optflags}"
#%endif
#popd
%install
%{__make} install-bin DESTDIR=%{buildroot} PREFIX=%{_prefix} TARGET="linux-glibc"
%{__make} install-man DESTDIR=%{buildroot} PREFIX=%{_prefix}
%{__install} -p -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
%{__install} -p -D -m 0644 %{SOURCE2} %{buildroot}%{haproxy_confdir}/%{name}.cfg
%{__install} -p -D -m 0644 %{SOURCE3} %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
%{__install} -p -D -m 0644 %{SOURCE4} %{buildroot}%{_sysconfdir}/sysconfig/%{name}
#%{__install} -p -D -m 0644 %{SOURCE5} %{buildroot}%{_mandir}/man1/halog.1
%{__install} -d -m 0755 %{buildroot}%{haproxy_homedir}
%{__install} -d -m 0755 %{buildroot}%{haproxy_datadir}
%{__install} -d -m 0755 %{buildroot}%{_bindir}
#%{__install} -p -m 0755 ./contrib/halog/halog %{buildroot}%{_bindir}/halog
#%{__install} -p -m 0755 ./contrib/iprange/iprange %{buildroot}%{_bindir}/iprange
%{__install} -p -m 0644 ./examples/errorfiles/* %{buildroot}%{haproxy_datadir}
for httpfile in $(find ./examples/errorfiles/ -type f)
do
%{__install} -p -m 0644 $httpfile %{buildroot}%{haproxy_datadir}
done
%{__rm} -rf ./examples/errorfiles/
find ./examples/* -type f ! -name "*.cfg" -exec %{__rm} -f "{}" \;
for textfile in $(find ./ -type f -name '*.txt')
do
%{__mv} $textfile $textfile.old
iconv --from-code ISO8859-1 --to-code UTF-8 --output $textfile $textfile.old
%{__rm} -f $textfile.old
done
%pre
getent group %{haproxy_group} >/dev/null || \
groupadd -r %{haproxy_group}
getent passwd %{haproxy_user} >/dev/null || \
useradd -r -g %{haproxy_user} -d %{haproxy_homedir} \
-s /sbin/nologin -c "haproxy" %{haproxy_user}
exit 0
%post
%systemd_post %{name}.service
%preun
%systemd_preun %{name}.service
%postun
%systemd_postun_with_restart %{name}.service
%files
%doc doc/* examples/*
%doc CHANGELOG README ROADMAP VERSION
%license LICENSE
%dir %{haproxy_homedir}
%dir %{haproxy_confdir}
%dir %{haproxy_datadir}
%{haproxy_datadir}/*
%config(noreplace) %{haproxy_confdir}/%{name}.cfg
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%config(noreplace) %{_sysconfdir}/sysconfig/%{name}
%{_unitdir}/%{name}.service
%{_sbindir}/%{name}
#%{_bindir}/halog
#%{_bindir}/iprange
%{_mandir}/man1/*
%changelog
* Fri Oct 03 2025 Joram Knaack <joramk@gmail.com> - 2.4.30
- Updated to version 2.4.30
* Tue Apr 22 2025 Joram Knaack <joramk@gmail.com> - 2.4.29
- Updated to version 2.4.29
* Fri Nov 08 2024 Joram Knaack <joramk@gmail.com> - 2.4.28
- Updated to version 2.4.28
* Tue Jun 18 2024 Joram Knaack <joramk@gmail.com> - 2.4.27
- Updated to version 2.4.27
* Fri Apr 05 2024 Joram Knaack <joramk@gmail.com> - 2.4.26
- Updated to version 2.4.26
* Thu Dec 14 2023 Joram Knaack <joramk@gmail.com> - 2.4.25
- Updated to version 2.4.25
* Sat Aug 19 2023 Joram Knaack <joramk@gmail.com> - 2.4.24
- Updated to version 2.4.24
* Fri Jun 09 2023 Joram Knaack <joramk@gmail.com> - 2.4.23
- Updated to version 2.4.23
* Tue Feb 14 2023 Joram Knaack <joramk@gmail.com> - 2.4.22
- Updated to version 2.4.22
* Fri Jan 27 2023 Joram Knaack <joramk@gmail.com> - 2.4.21
- Updated to version 2.4.21
* Fri Dec 09 2022 Joram Knaack <joramk@gmail.com> - 2.4.20
- Updated to version 2.4.20
* Wed Sep 28 2022 Joram Knaack <joramk@gmail.com> - 2.4.19
- Updated to version 2.4.19
* Wed Jul 27 2022 Joram Knaack <joramk@gmail.com> - 2.4.18
- Updated to version 2.4.18
* Fri May 13 2022 Joram Knaack <joramk@gmail.com> - 2.4.17
- Updated to version 2.4.17
* Fri Apr 29 2022 Joram Knaack <joramk@gmail.com> - 2.4.16
- Updated to version 2.4.16
* Mon Mar 14 2022 Joram Knaack <joramk@gmail.com> - 2.4.15
- Updated to version 2.4.15
* Fri Feb 25 2022 Joram Knaack <joramk@gmail.com> - 2.4.14
- Updated to version 2.4.14
* Wed Feb 16 2022 Joram Knaack <joramk@gmail.com> - 2.4.13
- Updated to version 2.4.13
* Thu Jan 13 2022 Joram Knaack <joramk@gmail.com> - 2.4.12
- Updated to version 2.4.12
* Tue Jan 11 2022 Joram Knaack <joramk@gmail.com> - 2.4.12
- Updated to version 2.4.12
* Fri Jan 07 2022 Joram Knaack <joramk@gmail.com> - 2.4.11
- Updated to version 2.4.11
* Thu Dec 23 2021 Joram Knaack <joramk@gmail.com> - 2.4.10
- Updated to version 2.4.10
* Wed Nov 24 2021 Joram Knaack <joramk@gmail.com> - 2.4.9
- Updated to version 2.4.9
* Wed Nov 03 2021 Joram Knaack <joramk@gmail.com> - 2.4.8
- Updated to version 2.4.8
* Mon Oct 04 2021 Joram Knaack <joramk@gmail.com> - 2.4.7
- Updated to version 2.4.7
* Mon Oct 04 2021 Joram Knaack <joramk@gmail.com> - 2.4.6
- Updated to version 2.4.6
* Fri Oct 01 2021 Joram Knaack <joramk@gmail.com> - 2.4.5
- Updated to version 2.4.5
* Tue Sep 07 2021 Joram Knaack <joramk@gmail.com> - 2.4.4
- Updated to version 2.4.4
* Tue Aug 17 2021 Joram Knaack <joramk@gmail.com> - 2.4.3
- Updated to version 2.4.3
* Wed Jul 07 2021 Joram Knaack <joramk@gmail.com> - 2.4.2
- Updated to version 2.4.2
* Thu Jun 17 2021 Joram Knaack <joramk@gmail.com> - 2.4.1
- Updated to version 2.4.1
* Fri May 14 2021 Joram Knaack <joramk@gmail.com> - 2.4.0
- Updated to version 2.4.0
* Mon May 10 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev19
- Updated to version 2.4-dev19
* Wed May 05 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev18
- Updated to version 2.4-dev18
* Fri Apr 23 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev17
- Updated to version 2.4-dev17
* Fri Apr 09 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev16
- Updated to version 2.4-dev16
* Fri Apr 02 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev15
- Updated to version 2.4-dev15
* Sat Mar 27 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev14
- Updated to version 2.4-dev14
* Fri Mar 19 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev13
- Updated to version 2.4-dev13
* Sat Mar 13 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev12
- Updated to version 2.4-dev12
* Sat Mar 06 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev11
- Updated to version 2.4-dev11
* Sat Feb 27 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev10
- Updated to version 2.4-dev10
* Sat Feb 20 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev9
- Updated to version 2.4-dev9
* Sat Feb 13 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev8
- Updated to version 2.4-dev8
* Fri Feb 05 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev7
- Updated to version 2.4-dev7
* Fri Jan 22 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev6
- Updated to version 2.4-dev6
* Wed Jan 06 2021 Joram Knaack <joramk@gmail.com> - 2.4-dev5
- Updated to version 2.4-dev5
* Mon Dec 21 2020 Joram Knaack <joramk@gmail.com> - 2.4-dev4
- Updated to version 2.4-dev4
* Fri Dec 11 2020 Joram Knaack <joramk@gmail.com> - 2.4-dev3
- Updated to version 2.4-dev3
* Thu Dec 03 2020 Joram Knaack <joramk@gmail.com> - 2.4-dev2
- Updated to version 2.4-dev2