SHA256
1
0
forked from pool/dnsdist
dnsdist/dnsdist.spec

210 lines
5.6 KiB
RPMSpec

#
# spec file for package dnsdist
#
# Copyright (c) 2019 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#
%if 0%{?suse_version}
%bcond_without apparmor
%else
%bcond_with apparmor
%endif
#
# this should only be needed if we have to patch the ragel files
# in which case it might be faster to just run it locally and put the regenerated file into the tarball
%bcond_with dnsdist_ragel
%if 0%{?suse_version} >= 1550
%bcond_without dnsdist_lmdb
%else
%bcond_with dnsdist_lmdb
%endif
%if 0%{?suse_version} >= 1510
%bcond_without dnsdist_luajit
%else
%bcond_with dnsdist_luajit
%endif
%if 0%{?suse_version} && ! ( 0%{?suse_version} == 1315 && ! 0%{?is_opensuse} )
%bcond_without dnsdist_protobuf
%else
%bcond_with dnsdist_protobuf
%endif
# requires libh2o
%if 0%{?is_opensuse} && 0%{?suse_version} >= 1500
%bcond_without dnsdist_re2
%bcond_without dnsdist_doh
%else
%bcond_with dnsdist_re2
%bcond_with dnsdist_doh
%endif
Name: dnsdist
Version: 1.7.0
Release: 0
License: GPL-2.0
Summary: A highly DNS-, DoS- and abuse-aware loadbalancer
Url: http://www.powerdns.com/
Group: Productivity/Networking/DNS/Servers
Source0: https://downloads.powerdns.com/releases/dnsdist-%{version}.tar.bz2
Source1: https://downloads.powerdns.com/releases/dnsdist-%{version}.tar.bz2.sig
Source2: https://dnsdist.org/_static/dnsdist-keyblock.asc#/dnsdist.keyring
Source11: dnsdist.lua
Source12: usr.sbin.dnsdist
Source13: local.usr.sbin.dnsdist
%if %{with apparmor}
BuildRequires: apparmor-profiles
%endif
BuildRequires: boost-devel >= 1.35.0
BuildRequires: gcc-c++ >= 4.8
BuildRequires: libfstrm-devel
BuildRequires: gnutls-devel
BuildRequires: pkgconfig(libcap)
BuildRequires: pkgconfig(libnghttp2)
%if %{with dnsdist_doh}
BuildRequires: pkgconfig(libh2o-evloop)
%endif
%if %{with dnsdist_lmdb}
BuildRequires: lmdb-devel
%endif
BuildRequires: libsodium-devel
%if %{with dnsdist_protobuf}
BuildRequires: protobuf-devel
%endif
%if %{with dnsdist_luajit}
BuildRequires: luajit-devel
%else
BuildRequires: lua-devel
%endif
BuildRequires: net-snmp-devel
BuildRequires: pkgconfig
%if %{with dnsdist_ragel}
BuildRequires: ragel
%endif
%if %{with dnsdist_re2}
BuildRequires: re2-devel
%endif
BuildRequires: libedit-devel
%if 0%{?suse_version}
Requires(post): %fillup_prereq
%endif
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(libsystemd)
%{?systemd_ordering}
Requires(pre): shadow
%define home %{_var}/lib/%{name}
# dnsdist doesn't to run on archs with time_t size 4
ExcludeArch: %arm %ix86 ppc s390
%description
dnsdist is a highly DNS-, DoS- and abuse-aware loadbalancer. Its goal in life
is to route traffic to the best server, delivering top performance to
legitimate users while shunting or blocking abusive traffic.
dnsdist is dynamic, in the sense that its configuration can be changed at
runtime, and that its statistics can be queried from a console-like interface.
%prep
%autosetup -p1
%build
%configure \
--enable-dnstap \
--enable-dns-over-tls \
%if %{with dnsdist_doh}
--enable-dns-over-https \
%endif
--enable-dnscrypt \
%if %{with dnsdist_re2}
--with-re2 \
%endif
--with-ebpf \
--with-net-snmp \
--with-libcap \
%if %{with dnsdist_luajit}
--with-lua=luajit \
%endif
%if %{with dnsdist_lmdb}
--with-lmdb \
%endif
--disable-silent-rules \
--bindir=%{_sbindir} \
--sysconfdir=%{_sysconfdir}/%{name}/
make %{?_smp_mflags}
%install
make install DESTDIR=%{buildroot} %{?_smp_mflags}
#
%if 0%{?suse_version}
ln -sf %{_sbindir}/service %{buildroot}%{_sbindir}/rc%{name}
%endif
%if %{with apparmor}
install -D -m 0644 %{S:12} %{buildroot}%{_sysconfdir}/apparmor.d/usr.sbin.dnsdist
install -D -m 0644 %{S:13} %{buildroot}%{_sysconfdir}/apparmor.d/local/usr.sbin.dnsdist
%endif
install -Dd -m 0750 %{buildroot}%{_sysconfdir}/%{name}/ %{buildroot}%{home}/
install -m 0640 %{S:11} %{buildroot}%{_sysconfdir}/%{name}/dnsdist.conf
%pre
getent group %{name} >/dev/null || /usr/sbin/groupadd -r %{name}
getent passwd %{name} >/dev/null || \
/usr/sbin/useradd -g %{name} -s /bin/false -r -c "%{name}" -d %{home} %{name}
%if 0%{?suse_version}
%service_add_pre %{name}.service
%endif
%preun
%if 0%{?suse_version}
%service_del_preun %{name}.service %{name}@.service
%else
%systemd_preun %{name}.service %{name}@.service
%endif
%post
%if 0%{?suse_version}
%service_add_post %{name}.service %{name}@.service
%else
%systemd_post %{name}.service %{name}@.service
%endif
%postun
%if 0%{?suse_version}
%service_del_postun %{name}.service %{name}@.service
%else
%systemd_postun_with_restart %{name}.service %{name}@.service
%endif
%files
%defattr(-,root,root)
%doc README.md
%{_sbindir}/dnsdist
%{_mandir}/man1/dnsdist.1*
%{_unitdir}/%{name}*.service
%if 0%{?suse_version}
%{_sbindir}/rc%{name}
%endif
%if %{with apparmor}
%config(noreplace) %{_sysconfdir}/apparmor.d/usr.sbin.dnsdist
%config(noreplace) %{_sysconfdir}/apparmor.d/local/usr.sbin.dnsdist
%endif
%config(noreplace) %attr(-,root,%{name}) %{_sysconfdir}/%{name}/
%dir %attr(700,%{name},%{name}) %{home}
%changelog