File apache-trafficserver.spec of Package apache-trafficserver
#
# spec file for package apache-trafficserver
#
# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%bcond_with docs
%ifarch aarch64 x86_64
%bcond_without lua
%else
%bcond_with lua
%endif
Name: apache-trafficserver
Version: 9.2.11
Release: 0
Summary: A fast, scalable and extensible HTTP/1.1 compliant caching proxy server
License: Apache-2.0
Group: Productivity/Networking/Web/Proxy
URL: https://trafficserver.apache.org
Source: https://www.apache.org/dist/trafficserver/trafficserver-%{version}.tar.bz2
Source1: https://www.apache.org/dist/trafficserver/trafficserver-%{version}.tar.bz2.asc
Source2: apache-trafficserver.keyring
Source10: apache-trafficserver-tmpfiles.conf
Source11: apache-trafficserver.service.override
Source100: %{name}-rpmlintrc
Patch0: apache-trafficserver-perl-vendor-install.patch
Patch1: apache-trafficserver8-remove-bundled-yamlcpp.patch
Patch2: apache-trafficserver9-docs-sys-plantuml.patch
Patch3: apache-trafficserver8-fix-build-machine.patch
Patch4: apache-trafficserver9-docs-split-manpages.patch
Patch5: apache-trafficserver9-docs-remove-git.patch
Patch6: https://github.com/apache/trafficserver/pull/8586.patch#/apache-trafficserver9-ignore-cycle-check-on-tr-conn.patch
Patch7: apache-trafficserver-harden.service.patch
Patch8: apache-trafficserver-harden-245.service.patch
Patch9: apache-trafficserver9-localhost-is-always-self.patch
%if 0%{?sle_version} && 0%{?sle_version} < 150700
BuildRequires: gcc14-c++
%else
BuildRequires: gcc-c++ >= 8.1
%endif
%if 0%{?fedora} || 0%{?rhel}
BuildRequires: python3
%else
BuildRequires: python3-base
%endif
%if %{with docs}
BuildRequires: doxygen
BuildRequires: graphviz
BuildRequires: plantuml
BuildRequires: java-headless
BuildRequires: noto-sans-fonts
BuildRequires: python3-Sphinx >= 2.0.1
BuildRequires: python3-sphinxcontrib-plantuml
%endif
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bison
BuildRequires: flex
BuildRequires: libtool
BuildRequires: make
BuildRequires: memory-constraints
BuildRequires: pkgconfig
BuildRequires: pkgconfig(hwloc)
BuildRequires: pkgconfig(Magick++)
BuildRequires: pkgconfig(libbrotlienc)
BuildRequires: pkgconfig(libcap)
BuildRequires: pkgconfig(libcurl) >= 7.19
BuildRequires: pkgconfig(libcrypto) >= 1.0.2
BuildRequires: pkgconfig(libunwind)
BuildRequires: pkgconfig(ncursesw)
BuildRequires: pkgconfig(libpcre)
BuildRequires: perl-ExtUtils-MakeMaker
BuildRequires: pkgconfig(liblzma)
BuildRequires: pkgconfig(yaml-cpp)
BuildRequires: pkgconfig(libmaxminddb)
BuildRequires: pkgconfig(cjose)
BuildRequires: pkgconfig(jansson)
%{?systemd_requires}
%if %{with lua}
BuildRequires: pkgconfig(luajit) >= 2.0.4
%endif
Recommends: %{name}-plugins
# No 32-bit.
ExcludeArch: %ix86 s390 %arm %mips32
# No big endian
ExcludeArch: ppc64 s390x
%description
Apache Traffic Server software is a fast, scalable and extensible HTTP/1.1 compliant caching proxy server.
Formerly a commercial product, Yahoo! donated it to the Apache Foundation, and it is now an Apache TLP.
%package -n perl-Apache-TS
Summary: A collection of Perl interfaces to manage Apache Traffic Server
Group: Development/Libraries/Perl
Requires: perl-URI
Requires: perl-base = %{perl_version}
%if 0%{?suse_version}
%{perl_requires}
%endif
%description -n perl-Apache-TS
A collection of Perl interfaces to manage Apache Traffic Server and push contents.
%if %{with docs}
%package docs
Summary: Documentations and man pages for %{name}
Group: Productivity/Networking/Web/Proxy
BuildArch: noarch
%description docs
Apache Traffic Server software is a fast, scalable and extensible HTTP/1.1 compliant caching proxy server.
This package contains man pages from the package. They're separated as the namings are prone to collisions.
%endif
%package libs9
Summary: Library files for %{name}
Group: Productivity/Networking/Web/Proxy
%description libs9
Apache Traffic Server software is a fast, scalable and extensible HTTP/1.1 compliant caching proxy server.
This package contains libraries needed for running and building plugins with it.
%package devel
Summary: Development files for %{name}
Group: Development/Libraries/C and C++
Requires: %{name}-libs9 = %{version}
Requires: hwloc-devel
Requires: libbrotli-devel
Requires: libcap-devel
Requires: libopenssl-devel
Requires: pcre-devel
Requires: tcl-devel
Requires: yaml-cpp-devel
Requires: zlib-devel
%description devel
Apache Traffic Server software is a fast, scalable and extensible HTTP/1.1 compliant caching proxy server.
This package contains headers, libtool library files and pkgconfig files needed for building programs and plugins with it.
%prep
%autosetup -n trafficserver-%{version} -p1
rm -rf lib/yamlcpp
# ATS utilities embeds compilation timestamp, causing unnecessary rebuild. This will fix them to source time.
date_string=$(date -r %{SOURCE0} -u '+"%%Y-%%m-%%d"')
time_string=$(date -r %{SOURCE0} -u '+"%%T"')
for file in $(grep -rl -e __DATE__ -e __TIME__ .); do
sed -i -e "s#__DATE__#$date_string#g" -e "s#__TIME__#$time_string#g" $file
done
autoreconf -fiv
%build
%if 0%{?sle_version} && 0%{?sle_version} < 150700
export CXX=g++-14
export CC=gcc-14
%endif
%configure \
--enable-layout=Arch \
--sysconfdir=%{_sysconfdir}/%{name} \
--libexecdir=%{_libexecdir}/%{name} \
--with-yaml-cpp=/usr \
--with-jansson=/usr \
--with-cjose=/usr \
--enable-experimental-plugins \
%if %{with docs}
--enable-docs \
%endif
make %{?_smp_mflags}
%check
%limit_build -m 1600
make %{?_smp_mflags} check
%install
%make_install
mkdir -p %{buildroot}%{_sbindir}
rm -f %{buildroot}%{_bindir}/trafficserver
sed -i "s#%{_bindir}/env bash#$(which bash)#" %{buildroot}%{_bindir}/tsxs
sed -i "s#%{_bindir}/env perl#$(which perl)#" %{buildroot}%{_bindir}/tspush
%if 0%{?suse_version}
%perl_process_packlist
%else
if test -d %{buildroot}%{perl_vendorarch}/auto; then
find %{buildroot}%{perl_vendorarch}/auto -name .packlist -print0 | xargs -0 -r rm
fi
rm -f %{buildroot}/%{perl_archlib}/perllocal.pod
%endif
install -D -m 644 %{SOURCE11} %{buildroot}%{_sysconfdir}/systemd/system/apache-trafficserver.service.d/00-relax-hardening.conf
install -D -m 644 rc/trafficserver.service %{buildroot}%{_unitdir}/apache-trafficserver.service
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcapache-trafficserver
# Unit test plugins
rm -f %{buildroot}%{_libdir}/plugin_v{1,2}.{so,la}
rm -f %{buildroot}%{_libdir}/plugin_{init,instinit}_fail.{so,la}
rm -f %{buildroot}%{_libdir}/plugin_missing_{deleteinstance,doremap,init,newinstance}.{so,la}
rm -f %{buildroot}%{_libdir}/plugin_{required_cb,testing_calls}.{so,la}
# Delete libtool stuff
find %{buildroot}%{_libexecdir}/%{name}/ -name '*.la' -print -delete
# Managed by systemd through Logs/State/RuntimeDirectory
rmdir %{buildroot}%{_localstatedir}/lib/trafficserver
rmdir %{buildroot}%{_localstatedir}/log/trafficserver
%pre
%if 0%{?suse_version}
%service_add_pre apache-trafficserver.service
%endif
%post
%if 0%{?suse_version}
%service_add_post apache-trafficserver.service
%endif
%preun
%if 0%{?suse_version}
%service_del_preun apache-trafficserver.service
%endif
%postun
%if 0%{?suse_version}
%service_del_postun apache-trafficserver.service
%endif
%post libs9 -p /sbin/ldconfig
%postun libs9 -p /sbin/ldconfig
%files
%license LICENSE
%config(noreplace) %attr(-,daemon,daemon) %{_sysconfdir}/%{name}
%config(noreplace) %attr(-,root,root) %{_sysconfdir}/systemd
%dir %{_libexecdir}/%{name}
%{_bindir}/traffic_*
%{_sbindir}/rcapache-trafficserver
%{_unitdir}/apache-trafficserver.service
# Managed by systemd through Logs/State/RuntimeDirectory
%files libs9
%{_libdir}/libts*.so.*
%files -n perl-Apache-TS
%{_bindir}/tspush
%{perl_vendorlib}/Apache
%{perl_vendorarch}/auto/Apache
%{_mandir}/man3/Apache::TS*.3pm%{ext_man}
%files devel
%{_bindir}/tsxs
%{_includedir}/tscpp
%{_includedir}/ts
%{_libdir}/libts*.so
%{_libdir}/libts*.la
%{_libdir}/pkgconfig/trafficserver.pc
%if %{with docs}
%files docs
%{_mandir}/man1/*
%{_mandir}/man3/*
%{_mandir}/man5/*
%{_mandir}/man8/*
%exclude %{_mandir}/man3/Apache::TS*.3pm%{ext_man}
%endif
%package plugins
Summary: Plugins for %{name}
Group: Productivity/Networking/Web/Proxy
Requires: %{name} = %{version}
%description plugins
Apache Traffic Server software is a fast, scalable and extensible HTTP/1.1 compliant caching proxy server.
This package contains plugins for use with it.
%files plugins
%{_libexecdir}/%{name}/authproxy.so
%{_libexecdir}/%{name}/background_fetch.so
%{_libexecdir}/%{name}/cache_promote.so
%{_libexecdir}/%{name}/cache_range_requests.so
%{_libexecdir}/%{name}/cachekey.so
%{_libexecdir}/%{name}/certifier.so
%{_libexecdir}/%{name}/combo_handler.so
%{_libexecdir}/%{name}/compress.so
%{_libexecdir}/%{name}/conf_remap.so
%{_libexecdir}/%{name}/escalate.so
%{_libexecdir}/%{name}/esi.so
%{_libexecdir}/%{name}/generator.so
%{_libexecdir}/%{name}/healthchecks.so
%{_libexecdir}/%{name}/libloader.so
%{_libexecdir}/%{name}/multiplexer.so
%{_libexecdir}/%{name}/prefetch.so
%{_libexecdir}/%{name}/regex_remap.so
%{_libexecdir}/%{name}/regex_revalidate.so
%{_libexecdir}/%{name}/remap_purge.so
%{_libexecdir}/%{name}/s3_auth.so
%{_libexecdir}/%{name}/server_push_preload.so
%{_libexecdir}/%{name}/stats_over_http.so
%{_libexecdir}/%{name}/tcpinfo.so
%{_libexecdir}/%{name}/xdebug.so
%package plugins-experimental
Summary: Experimental plugins for %{name}
Group: Productivity/Networking/Web/Proxy
Requires: %{name} = %{version}
Provides: %{name}-plugin-geoip_acl = %{version}
%description plugins-experimental
This package contains experimental plugins for Apache Traffic Server.
%files plugins-experimental
%{_libexecdir}/%{name}/access_control.so
%{_libexecdir}/%{name}/acme.so
%{_libexecdir}/%{name}/block_errors.so
%{_libexecdir}/%{name}/cache_fill.so
%{_libexecdir}/%{name}/cert_reporting_tool.so
%{_libexecdir}/%{name}/collapsed_forwarding.so
%{_libexecdir}/%{name}/cookie_remap.so
%{_libexecdir}/%{name}/custom_redirect.so
%{_libexecdir}/%{name}/fq_pacing.so
%{_libexecdir}/%{name}/geoip_acl.so
%{_libexecdir}/%{name}/header_freq.so
%{_libexecdir}/%{name}/hook-trace.so
%{_libexecdir}/%{name}/http_stats.so
%{_libexecdir}/%{name}/icap.so
%{_libexecdir}/%{name}/inliner.so
%{_libexecdir}/%{name}/ja3_fingerprint.so
%{_libexecdir}/%{name}/memory_profile.so
%{_libexecdir}/%{name}/metalink.so
%{_libexecdir}/%{name}/money_trace.so
%{_libexecdir}/%{name}/mp4.so
%{_libexecdir}/%{name}/parent_select.so
%{_libexecdir}/%{name}/rate_limit.so
%{_libexecdir}/%{name}/redo_cache_lookup.so
%{_libexecdir}/%{name}/remap_stats.so
%{_libexecdir}/%{name}/slice.so
%{_libexecdir}/%{name}/sslheaders.so
%{_libexecdir}/%{name}/statichit.so
%{_libexecdir}/%{name}/stream_editor.so
%{_libexecdir}/%{name}/system_stats.so
%{_libexecdir}/%{name}/tls_bridge.so
%{_libexecdir}/%{name}/traffic_dump.so
%{_libexecdir}/%{name}/tsmemcache.so
%{_libexecdir}/%{name}/url_sig.so
%package plugin-header_rewrite
Summary: Plugin header_rewrite for %{name}
Group: Productivity/Networking/Web/Proxy
Requires: %{name} = %{version}
%description plugin-header_rewrite
This package contains the header_rewrite plugin for Apache Traffic Server.
%files plugin-header_rewrite
%{_libexecdir}/%{name}/header_rewrite.so
%package plugin-uri_signing
Summary: Experimental Plugin uri_signing for %{name}
Group: Productivity/Networking/Web/Proxy
Requires: %{name} = %{version}
%description plugin-uri_signing
This package contains the experimental uri_signing plugin for Apache Traffic Server.
%files plugin-uri_signing
%{_libexecdir}/%{name}/uri_signing.so
%if %{with lua}
%package plugin-tslua
Summary: Plugin tslua for %{name}
Group: Productivity/Networking/Web/Proxy
Requires: %{name} = %{version}
%description plugin-tslua
This package contains the Lua plugin for Apache Traffic Server.
%files plugin-tslua
%{_libexecdir}/%{name}/tslua.so
%endif
%package plugin-webp_transform
Summary: Experimental Plugin magick/webp_transform for %{name}
Group: Productivity/Networking/Web/Proxy
Requires: %{name} = %{version}
%description plugin-webp_transform
This package contains the experimental magick and webp_transform plugin for Apache Traffic Server.
%files plugin-webp_transform
%{_libexecdir}/%{name}/webp_transform.so
%{_libexecdir}/%{name}/magick.so
%package plugin-maxmind_acl
Summary: Experimental Plugin maxmind_acl for %{name}
Group: Productivity/Networking/Web/Proxy
Requires: %{name} = %{version}
%description plugin-maxmind_acl
This package contains the experimental maxmind_acl plugin for Apache Traffic Server.
%files plugin-maxmind_acl
%{_libexecdir}/%{name}/maxmind_acl.so
%changelog