From 0befa7b4845b99030808ed0395e83fca5385ee3f Mon Sep 17 00:00:00 2001 From: Tomas Krizek Date: May 29 2019 15:16:15 +0000 Subject: rebase to new upstream version 4.0.0 --- diff --git a/knot-resolver.spec b/knot-resolver.spec index 533da69..7b169b8 100644 --- a/knot-resolver.spec +++ b/knot-resolver.spec @@ -2,12 +2,13 @@ %{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}} %define GPG_CHECK 1 -%define VERSION 3.2.1 +%define VERSION 4.0.0 %define repodir %{_builddir}/%{name}-%{version} +%define NINJA ninja-build Name: knot-resolver Version: %{VERSION} -Release: 2%{?dist} +Release: 1%{?dist} Summary: Caching full DNS Resolver License: GPLv3 @@ -35,38 +36,47 @@ BuildRequires: gnupg2 BuildRequires: gcc BuildRequires: gcc-c++ +BuildRequires: meson BuildRequires: pkgconfig(cmocka) BuildRequires: pkgconfig(gnutls) BuildRequires: pkgconfig(libedit) -BuildRequires: pkgconfig(libknot) >= 2.7.2 -BuildRequires: pkgconfig(libzscanner) >= 2.7.2 -BuildRequires: pkgconfig(libdnssec) >= 2.7.2 +BuildRequires: pkgconfig(libknot) >= 2.8 +BuildRequires: pkgconfig(libzscanner) >= 2.8 +BuildRequires: pkgconfig(libdnssec) >= 2.8 BuildRequires: pkgconfig(libsystemd) BuildRequires: pkgconfig(libuv) BuildRequires: pkgconfig(luajit) >= 2.0 -BuildRequires: pkgconfig(systemd) + +Requires: systemd # Distro-dependent dependencies %if 0%{?rhel} BuildRequires: lmdb-devel # Lua 5.1 version of the libraries have different package names +Requires: lua-basexx Requires: lua-socket Requires: lua-sec -Requires(pre): shadow-utils +Requires: lua-filesystem +Requires(pre): shadow-utils %endif %if 0%{?fedora} BuildRequires: pkgconfig(lmdb) BuildRequires: python3-sphinx +Requires: lua5.1-basexx +Requires: lua5.1-cqueues +Requires: lua-filesystem-compat Requires: lua-socket-compat Requires: lua-sec-compat -Requires(pre): shadow-utils +Requires(pre): shadow-utils %endif %if 0%{?suse_version} +%define NINJA ninja BuildRequires: lmdb-devel BuildRequires: python3-Sphinx +Requires: lua51-luafilesystem Requires: lua51-luasocket Requires: lua51-luasec -Requires(pre): shadow +Requires(pre): shadow %endif %if "x%{?rhel}" == "x" @@ -77,15 +87,11 @@ BuildRequires: python3-breathe BuildRequires: python3-sphinx_rtd_theme %endif -Requires(post): systemd -Requires(preun): systemd -Requires(postun): systemd - %description -The Knot Resolver is a caching full resolver implementation written in C -and LuaJIT, including both a resolver library and a daemon. Modular -architecture of the library keeps the core tiny and efficient, and provides -a state-machine like API for extensions. +The Knot Resolver is a DNSSEC-enabled caching full resolver implementation +written in C and LuaJIT, including both a resolver library and a daemon. +Modular architecture of the library keeps the core tiny and efficient, and +provides a state-machine like API for extensions. The package is pre-configured as local caching resolver. To start using it, start a single kresd instance: @@ -108,6 +114,24 @@ Requires: %{name} = %{version}-%{release} Documentation for Knot Resolver %endif +%if "x%{?suse_version}" == "x" +%package module-http +Summary: HTTP/2 module for Knot Resolver +Requires: knot-resolver +%if 0%{?fedora} +Requires: lua5.1-http +Requires: lua5.1-mmdb +%else +Requires: lua-http +Requires: lua-mmdb +%endif + +%description module-http +HTTP/2 module for Knot Resolver has multiple uses. It enables use of +DNS-over-HTTP, can serve as API ednpoint for other modules or provide a web +interface for local visualization of the resolver cache and queries. +%endif + %prep %if 0%{GPG_CHECK} export GNUPGHOME=./gpg-keyring @@ -118,72 +142,76 @@ gpg2 --verify %{SOURCE1} %{SOURCE0} %setup -q -n %{name}-%{version} %build -%global build_paths PREFIX=%{_prefix} BINDIR=%{_bindir} LIBDIR=%{_libdir} INCLUDEDIR=%{_includedir} ETCDIR=%{_sysconfdir}/knot-resolver -%global build_flags V=1 CFLAGS="%{optflags}" LDFLAGS="%{?__global_ldflags}" %{build_paths} HAS_go=no -%make_build %{build_flags} - +CFLAGS="%{optflags}" LDFLAGS="%{?__global_ldflags}" meson build_rpm \ %if "x%{?rhel}" == "x" -# build documentation -make doc + -Ddoc=enabled \ + -Dsystemd_files=enabled \ +%else + -Dsystemd_files=nosocket \ +%endif + -Dclient=enabled \ + -Dunit_tests=enabled \ + -Dmanaged_ta=enabled \ + -Dinstall_kresd_conf=enabled \ + --buildtype=plain \ + --prefix="%{_prefix}" \ + --sbindir="%{_sbindir}" \ + --libdir="%{_libdir}" \ + --includedir="%{_includedir}" \ + --sysconfdir="%{_sysconfdir}" \ + +%{NINJA} -v -C build_rpm +%if "x%{?rhel}" == "x" +%{NINJA} -v -C build_rpm doc %endif %check -make %{?_smp_mflags} check +meson test -C build_rpm %install -%make_install %{build_flags} - -# move sample configuration files to documentation -install -m 0755 -d %{buildroot}%{_pkgdocdir} -mv %{buildroot}%{_sysconfdir}/knot-resolver/config.* %{buildroot}%{_pkgdocdir} -chmod 0644 %{buildroot}%{_pkgdocdir}/config.* - -# install configuration files -mkdir -p %{buildroot}%{_sysconfdir} -install -m 0755 -d %{buildroot}%{_sysconfdir}/knot-resolver -install -m 0644 -p %{repodir}/distro/common/kresd.conf %{buildroot}%{_sysconfdir}/knot-resolver/kresd.conf -install -m 0664 -p %{repodir}/distro/common/root.keys %{buildroot}%{_sysconfdir}/knot-resolver/root.keys - -# install systemd units and doc -mkdir -p %{buildroot}%{_unitdir} -install -m 0644 -p %{repodir}/distro/common/systemd/kresd@.service %{buildroot}%{_unitdir}/kresd@.service -install -m 0644 -p %{repodir}/distro/common/systemd/kresd.target %{buildroot}%{_unitdir}/kresd.target +DESTDIR="${RPM_BUILD_ROOT}" %{NINJA} -v -C build_rpm install + +# add kresd.target to multi-user.target.wants to support enabling kresd services install -m 0755 -d %{buildroot}%{_unitdir}/multi-user.target.wants ln -s ../kresd.target %{buildroot}%{_unitdir}/multi-user.target.wants/kresd.target -mkdir -p %{buildroot}%{_mandir}/man7 -install -m 0644 -p %{repodir}/distro/common/systemd/kresd.systemd.7 %{buildroot}%{_mandir}/man7/kresd.systemd.7 -%if 0%{?rhel} -# no socket activation for CentOS 7 (requires systemd.227) -mkdir -p %{buildroot}%{_unitdir}/kresd@.service.d -install -m 0644 -p %{repodir}/distro/common/systemd/drop-in/systemd-compat.conf %{buildroot}%{_unitdir}/kresd@.service.d/override.conf -%endif -%if "x%{?rhel}" == "x" -install -m 0644 -p %{repodir}/distro/common/systemd/kresd.socket %{buildroot}%{_unitdir}/kresd.socket -install -m 0644 -p %{repodir}/distro/common/systemd/kresd-control@.socket %{buildroot}%{_unitdir}/kresd-control@.socket -install -m 0644 -p %{repodir}/distro/common/systemd/kresd-tls.socket %{buildroot}%{_unitdir}/kresd-tls.socket -%endif +# install .tmpfiles.d dirs +install -m 0750 -d %{buildroot}%{_localstatedir}/cache/%{name} +install -m 0750 -d %{buildroot}/run/%{name} -# install tmpfiles.d -mkdir -p %{buildroot}%{_tmpfilesdir} -install -m 0644 -p %{repodir}/distro/common/tmpfiles/knot-resolver.conf %{buildroot}%{_tmpfilesdir}/knot-resolver.conf -mkdir -p %{buildroot}%{_rundir} -install -m 0750 -d %{buildroot}%{_rundir}/knot-resolver +# remove modules with missing dependencies +rm %{buildroot}%{_libdir}/knot-resolver/kres_modules/etcd.lua -# install cache -mkdir -p %{buildroot}%{_localstatedir}/cache -install -m 0750 -d %{buildroot}%{_localstatedir}/cache/knot-resolver +%if 0%{?suse_version} +rm %{buildroot}%{_libdir}/knot-resolver/kres_modules/experimental_dot_auth.lua +rm -r %{buildroot}%{_libdir}/knot-resolver/kres_modules/http +rm %{buildroot}%{_libdir}/knot-resolver/kres_modules/http*.lua +rm %{buildroot}%{_libdir}/knot-resolver/kres_modules/prometheus.lua +rm %{buildroot}%{_unitdir}/kresd@.service.d/module-http.conf +rm %{buildroot}%{_unitdir}/kresd-doh.socket +rm %{buildroot}%{_unitdir}/kresd-webmgmt.socket +%endif -# remove module with unsatisfied dependencies -rm -r %{buildroot}%{_libdir}/kdns_modules/{http,http.lua} +# rename doc directory for centos, opensuse +%if "x%{?fedora}" == "x" +install -m 755 -d %{buildroot}/%{_pkgdocdir} +mv %{buildroot}/%{_datadir}/doc/%{name}/* %{buildroot}/%{_pkgdocdir}/ +%endif %pre getent group knot-resolver >/dev/null || groupadd -r knot-resolver getent passwd knot-resolver >/dev/null || useradd -r -g knot-resolver -d %{_sysconfdir}/knot-resolver -s /sbin/nologin -c "Knot Resolver" knot-resolver %post +%if 0%{?fedora} +# use daemon-reload to update changed kresd.socket file in Knot Resolver 4.0.0 +systemctl daemon-reload +%systemd_post 'system-kresd.slice' +# https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets +%else %systemd_post 'kresd@*.service' /sbin/ldconfig +%endif %preun %systemd_preun 'kresd@*.service' kresd.target kresd.socket kresd-tls.socket @@ -191,33 +219,69 @@ getent passwd knot-resolver >/dev/null || useradd -r -g knot-resolver -d %{_sysc %postun # NOTE: this doesn't restart the services on CentOS 7 %systemd_postun_with_restart 'kresd@*.service' +%if 0%{?fedora} +# https://fedoraproject.org/wiki/Changes/Removing_ldconfig_scriptlets +%else /sbin/ldconfig +%endif %files -%license COPYING -%doc %{_pkgdocdir} +%dir %{_pkgdocdir} +%license %{_pkgdocdir}/COPYING +%doc %{_pkgdocdir}/AUTHORS +%doc %{_pkgdocdir}/NEWS +%doc %{_pkgdocdir}/examples %attr(775,root,knot-resolver) %dir %{_sysconfdir}/knot-resolver %attr(644,root,knot-resolver) %config(noreplace) %{_sysconfdir}/knot-resolver/kresd.conf %attr(664,root,knot-resolver) %config(noreplace) %{_sysconfdir}/knot-resolver/root.keys %attr(644,root,knot-resolver) %config(noreplace) %{_sysconfdir}/knot-resolver/root.hints %attr(644,root,knot-resolver) %config(noreplace) %{_sysconfdir}/knot-resolver/icann-ca.pem -%attr(750,knot-resolver,knot-resolver) %dir %{_localstatedir}/cache/knot-resolver -%{_unitdir}/kresd*.service +%{_unitdir}/kresd@.service %{_unitdir}/kresd.target +%dir %{_unitdir}/multi-user.target.wants %{_unitdir}/multi-user.target.wants/kresd.target -%if 0%{?rhel} -%{_unitdir}/kresd@.service.d/override.conf -%endif %if "x%{?rhel}" == "x" -%{_unitdir}/kresd*.socket +%dir %{_unitdir}/kresd@.service.d +%{_unitdir}/kresd.socket +%{_unitdir}/kresd-tls.socket +%{_unitdir}/kresd-control@.socket +%ghost /run/%{name}/ +%{_mandir}/man7/kresd.systemd.7.gz +%else +%{_mandir}/man7/kresd.systemd.nosocket.7.gz %endif %{_tmpfilesdir}/knot-resolver.conf +%attr(750,knot-resolver,knot-resolver) %dir %{_localstatedir}/cache/%{name} %{_sbindir}/kresd %{_sbindir}/kresc %{_libdir}/libkres.so.* -%{_libdir}/kdns_modules +%dir %{_libdir}/knot-resolver +%{_libdir}/knot-resolver/*.so +%{_libdir}/knot-resolver/*.lua +%dir %{_libdir}/knot-resolver/kres_modules +%{_libdir}/knot-resolver/kres_modules/*.so +%{_libdir}/knot-resolver/kres_modules/daf +%{_libdir}/knot-resolver/kres_modules/daf.lua +%{_libdir}/knot-resolver/kres_modules/detect_time_jump.lua +%{_libdir}/knot-resolver/kres_modules/detect_time_skew.lua +%{_libdir}/knot-resolver/kres_modules/dns64.lua +%if "x%{?suse_version}" == "x" +%{_libdir}/knot-resolver/kres_modules/experimental_dot_auth.lua +%endif +%{_libdir}/knot-resolver/kres_modules/graphite.lua +%{_libdir}/knot-resolver/kres_modules/policy.lua +%{_libdir}/knot-resolver/kres_modules/predict.lua +%{_libdir}/knot-resolver/kres_modules/prefill.lua +%{_libdir}/knot-resolver/kres_modules/priming.lua +%{_libdir}/knot-resolver/kres_modules/rebinding.lua +%{_libdir}/knot-resolver/kres_modules/renumber.lua +%{_libdir}/knot-resolver/kres_modules/serve_stale.lua +%{_libdir}/knot-resolver/kres_modules/ta_sentinel.lua +%{_libdir}/knot-resolver/kres_modules/ta_signal_query.lua +%{_libdir}/knot-resolver/kres_modules/ta_update.lua +%{_libdir}/knot-resolver/kres_modules/view.lua +%{_libdir}/knot-resolver/kres_modules/workarounds.lua %{_mandir}/man8/kresd.8.gz -%{_mandir}/man7/kresd.systemd.7.gz %files devel %{_includedir}/libkres @@ -226,10 +290,29 @@ getent passwd knot-resolver >/dev/null || useradd -r -g knot-resolver -d %{_sysc %if "x%{?rhel}" == "x" %files doc -%doc doc/html +%dir %{_pkgdocdir} +%doc %{_pkgdocdir}/html +%endif + +%if "x%{?suse_version}" == "x" +%files module-http +%if 0%{?fedora} +%{_unitdir}/kresd@.service.d/module-http.conf +%{_unitdir}/kresd-doh.socket +%{_unitdir}/kresd-webmgmt.socket +%endif +%{_libdir}/knot-resolver/kres_modules/http +%{_libdir}/knot-resolver/kres_modules/http*.lua +%{_libdir}/knot-resolver/kres_modules/prometheus.lua %endif %changelog +* Wed May 29 2019 Tomas Krizek - 4.0.0.-1 +- rebase to new upstream release 4.0.0 +- bump Knot DNS libraries to 2.8 (ABI compat) +- use new upstream build system - meson +- add knot-resolver-module-http package along with new lua dependecies + * Fri Feb 01 2019 Fedora Release Engineering - 3.2.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild diff --git a/sources b/sources index f76543f..44dcc08 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (knot-resolver-3.2.1.tar.xz) = 2ed79176183a685bf6365081706e68e4add05965a5f53a6f38ae4a5c204d29952eaf511ffbf18c646a0a843a032b425eb0592de27dafbf977d976946a3437351 -SHA512 (knot-resolver-3.2.1.tar.xz.asc) = a9e2b491e4b7e7e4e6c34f0e293fb6799a39c78a4a85c698549da0481e67c8b0ca7e14f66fb9e7f2281d661e9d21d15c3607724dd37ee0aa0aaa5cc7dbfa6f73 +SHA512 (knot-resolver-4.0.0.tar.xz) = e4c7e21ec36b5a733adf9f8e3751bbc347ce9ce7af8d71e8d5f3a7a87da673db753490c5257466e8433cd5fff1651046c8500ee59e91be8e55b1a16614eaf53a +SHA512 (knot-resolver-4.0.0.tar.xz.asc) = 260cc43c5a7f87ba039012f18c67c6217c681b08d7b526f7376aeb06f89a64d0e9a3045a1b46293f2c23f6a5fd7c5fd13baa86f1f8b7643be1bda94772db0bcf