forked from pool/chrony
- Update to version 3.3 ed + Enhancements: Add burst option to server/pool directive Add stratum and tai options to refclock directive Add support for Nettle crypto library Add workaround for missing kernel receive timestamps on Linux Wait for late hardware transmit timestamps Improve source selection with unreachable sources Improve protection against replay attacks on symmetric mode Allow PHC refclock to use socket in /var/run/chrony Add shutdown command to stop chronyd Simplify format of response to manual list command Improve handling of unknown responses in chronyc + Bug fixes: Respond to NTPv1 client requests with zero mode Fix -x option to not require CAP_SYS_TIME under non-root user Fix acquisitionport directive to work with privilege separation Fix handling of socket errors on Linux to avoid high CPU usage Fix chronyc to not get stuck in infinite loop after clock step + make package build reproducible (boo#1047218) via https://www.mail-archive.com/chrony-dev@chrony.tuxfamily.org/msg01685.html OBS-URL: https://build.opensuse.org/request/show/626940 OBS-URL: https://build.opensuse.org/package/show/network:time/chrony?expand=0&rev=48
225 lines
7.9 KiB
RPMSpec
225 lines
7.9 KiB
RPMSpec
#
|
||
# spec file for package chrony
|
||
#
|
||
# Copyright (c) 2018 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/
|
||
#
|
||
|
||
|
||
%define vendorzone opensuse.
|
||
%global clknetsim_ver 71dbbc5
|
||
#Compat macro for new _fillupdir macro introduced in Nov 2017
|
||
%if ! %{defined _fillupdir}
|
||
%define _fillupdir %{_localstatedir}/adm/fillup-templates
|
||
%endif
|
||
Name: chrony
|
||
Version: 3.3
|
||
Release: 0
|
||
Summary: System Clock Synchronization Client and Server
|
||
License: GPL-2.0-only
|
||
Group: Productivity/Networking/Other
|
||
Url: https://chrony.tuxfamily.org/
|
||
Source: https://download.tuxfamily.org/chrony/chrony-%{version}.tar.gz
|
||
Source2: chrony.sysconfig
|
||
Source3: chrony.dhclient
|
||
Source4: chrony.helper
|
||
Source5: chrony-dnssrv@.service
|
||
Source6: chrony-dnssrv@.timer
|
||
Source7: https://download.tuxfamily.org/chrony/chrony-3.3-tar-gz-asc.txt#/chrony-%{version}.tar.gz.sig
|
||
# Simulator for test suite
|
||
Source10: https://github.com/mlichvar/clknetsim/archive/%{clknetsim_ver}/clknetsim-%{clknetsim_ver}.tar.gz
|
||
# PATCH-MISSING-TAG -- See http://wiki.opensuse.org/openSUSE:Packaging_Patches_guidelines
|
||
Patch0: chrony-config.patch
|
||
# Add NTP servers from DHCP when starting service
|
||
Patch1: chrony-service-helper.patch
|
||
Patch2: chrony-logrotate.patch
|
||
Patch5: chrony-fix-open.patch
|
||
BuildRequires: NetworkManager-devel
|
||
BuildRequires: bison
|
||
BuildRequires: gcc-c++
|
||
BuildRequires: libcap-devel
|
||
BuildRequires: libedit-devel
|
||
BuildRequires: mozilla-nss-devel
|
||
BuildRequires: pkgconfig
|
||
BuildRequires: pps-tools-devel
|
||
# The timezone package is needed for the "make check" tests. It can be
|
||
# removed if the call to make check is ever deleted.
|
||
BuildRequires: timezone
|
||
BuildRequires: pkgconfig(systemd)
|
||
Requires: logrotate
|
||
Requires(post): %fillup_prereq
|
||
Requires(pre): %{_sbindir}/groupadd
|
||
Requires(pre): %{_sbindir}/useradd
|
||
Provides: ntp-daemon
|
||
%ifarch s390 s390x ppc64le
|
||
BuildRequires: libseccomp-devel >= 2.2.0
|
||
%else
|
||
BuildRequires: libseccomp-devel
|
||
%endif
|
||
|
||
%description
|
||
Chrony is an implementation of the Network Time Protocol (NTP). It can
|
||
synchronize the system clock with NTP servers, reference clocks (e.g. a
|
||
GPS receiver), and manual input using wristwatch and keyboard. It can
|
||
also operate as an NTPv4 (RFC 5905) server and peer to provide a time
|
||
service to other computers in the network.
|
||
|
||
Chrony consists of two programs: chronyd and chronyc.
|
||
|
||
Chronyd is a daemon which runs in the background on the system. It
|
||
obtains measurements of the system clock’s offset relative to time
|
||
servers on other systems via the network and adjusts the system time
|
||
accordingly. For isolated systems, the user can periodically enter the
|
||
correct time by hand (using chronyc). In either case, chronyd
|
||
determines the rate at which the computer gains or loses time, and
|
||
compensates for this. Chronyd can act as either a client or a server.
|
||
|
||
Chronyc provides a user interface to chronyd for monitoring its
|
||
performance and configuring various settings. It can do so while
|
||
running on the same computer as the chronyd instance it is controlling
|
||
or a different computer.
|
||
|
||
%prep
|
||
%setup -q -a 10
|
||
%patch0 -p1
|
||
%patch1 -p1
|
||
%patch2 -p1
|
||
%patch5 -p1
|
||
|
||
# If this is an openSUSE build, use our vendor zone
|
||
# (2.*pool.ntp.org names include IPv6 addresses). If not
|
||
# an openSUSE build, comment out the pool statement
|
||
%if 0%{?is_opensuse}
|
||
sed -e 's|^\(pool \)\(pool.ntp.org\)|\12.%{vendorzone}\2|' \
|
||
< examples/chrony.conf.example2 > chrony.conf
|
||
%else
|
||
sed -e 's|^\pool|! pool|' \
|
||
< examples/chrony.conf.example2 > chrony.conf
|
||
%endif
|
||
|
||
cat << EOF >> chrony.conf
|
||
|
||
# Also include any directives found in configuration files in /etc/chrony.d
|
||
include /etc/chrony.d/*.conf
|
||
EOF
|
||
|
||
touch -r examples/chrony.conf.example2 chrony.conf
|
||
|
||
# regenerate the file from getdate.y
|
||
rm -f getdate.c
|
||
|
||
mv clknetsim-%{clknetsim_ver}* test/simulation/clknetsim
|
||
|
||
%build
|
||
# not autoconf:
|
||
export CFLAGS="%{optflags} -Wall -fpic -DPIC $(pkg-config --cflags libseccomp)"
|
||
export LDFLAGS="-pie -Wl,-z,relro,-z,now"
|
||
%configure \
|
||
--docdir="%{_docdir}/%{name}" \
|
||
%if %{with syscallfilter}
|
||
--enable-scfilter \
|
||
%endif
|
||
--with-user=chrony \
|
||
--with-hwclockfile=%{_sysconfdir}/adjtime \
|
||
--with-sendmail=%{_sbindir}/sendmail
|
||
make %{?_smp_mflags} all docs
|
||
|
||
%install
|
||
%make_install
|
||
install -Dpm 0644 chrony.conf \
|
||
%{buildroot}%{_sysconfdir}/chrony.conf
|
||
mkdir %{buildroot}%{_sysconfdir}/chrony.d
|
||
install -Dpm 0640 examples/chrony.keys.example \
|
||
%{buildroot}%{_sysconfdir}/chrony.keys
|
||
install -Dpm 0755 examples/chrony.nm-dispatcher \
|
||
%{buildroot}%{_sysconfdir}/NetworkManager/dispatcher.d/20-chrony
|
||
install -Dpm 0755 %{SOURCE3} \
|
||
%{buildroot}%{_sysconfdir}/dhcp/dhclient.d/chrony.sh
|
||
install -Dpm 0644 examples/chrony.logrotate \
|
||
%{buildroot}%{_sysconfdir}/logrotate.d/chrony
|
||
install -Dpm 0644 examples/chronyd.service \
|
||
%{buildroot}%{_unitdir}/chronyd.service
|
||
install -Dpm 0644 examples/chrony-wait.service \
|
||
%{buildroot}%{_unitdir}/chrony-wait.service
|
||
install -Dpm 0644 %{SOURCE5} \
|
||
%{buildroot}%{_unitdir}/chrony-dnssrv@.service
|
||
install -Dpm 0644 %{SOURCE6} \
|
||
%{buildroot}%{_unitdir}/chrony-dnssrv@.timer
|
||
|
||
install -d %{buildroot}%{sbindir}
|
||
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcchronyd
|
||
ln -s %{_sbindir}/service %{buildroot}%{_sbindir}/rcchrony-wait
|
||
|
||
install -d %{buildroot}%{_prefix}/lib/systemd/ntp-units.d
|
||
echo 'chronyd.service' > \
|
||
%{buildroot}%{_prefix}/lib/systemd/ntp-units.d/50-chronyd.list
|
||
|
||
install -Dpm 0644 %{SOURCE2} \
|
||
%{buildroot}%{_fillupdir}/sysconfig.chrony
|
||
install -Dpm 755 %{SOURCE4} \
|
||
%{buildroot}%{_datadir}/chrony-helper
|
||
|
||
install -d %{buildroot}%{_localstatedir}/log/chrony
|
||
touch %{buildroot}%{_localstatedir}/lib/chrony/{drift,rtc}
|
||
|
||
%check
|
||
# Set random seed to get deterministic results
|
||
export CLKNETSIM_RANDOM_SEED=24501
|
||
make %{?_smp_mflags} -C test/simulation/clknetsim
|
||
make %{?_smp_mflags} check
|
||
|
||
%pre
|
||
getent group %{name} >/dev/null || groupadd -r %{name}
|
||
getent passwd %{name} >/dev/null || useradd -r -g %{name} -d "%{_localstatedir}/lib/chrony" -s /bin/false -c "Chrony Daemon" %{name}
|
||
%service_add_pre chronyd.service chrony-wait.service
|
||
|
||
%preun
|
||
%service_del_preun chronyd.service chrony-wait.service
|
||
|
||
%post
|
||
%fillup_only %{name}
|
||
%service_add_post chronyd.service chrony-wait.service
|
||
|
||
%postun
|
||
%service_del_postun chronyd.service chrony-wait.service
|
||
|
||
%files
|
||
%license COPYING
|
||
%doc FAQ NEWS README
|
||
%doc examples
|
||
%config(noreplace) %attr(0640,root,%{name}) %{_sysconfdir}/chrony.conf
|
||
%config(noreplace) %attr(0640,root,%{name}) %verify(not md5 size mtime) %{_sysconfdir}/chrony.keys
|
||
%config(noreplace) %{_sysconfdir}/logrotate.d/chrony
|
||
%{_sysconfdir}/NetworkManager/dispatcher.d/20-chrony
|
||
%dir %{_sysconfdir}/chrony.d/
|
||
%dir %{_sysconfdir}/dhcp/
|
||
%dir %{_sysconfdir}/dhcp/dhclient.d/
|
||
%{_sysconfdir}/dhcp/dhclient.d/chrony.sh
|
||
%{_bindir}/chronyc
|
||
%{_sbindir}/chronyd
|
||
%{_datadir}/chrony-helper
|
||
%{_mandir}/man1/chronyc.1%{ext_man}
|
||
%{_mandir}/man5/chrony.conf.5%{ext_man}
|
||
%{_mandir}/man8/chronyd.8%{ext_man}
|
||
%{_prefix}/lib/systemd/ntp-units.d/*.list
|
||
%{_unitdir}/chrony*.service
|
||
%{_unitdir}/chrony*.timer
|
||
%{_sbindir}/rcchrony*
|
||
%{_fillupdir}/sysconfig.chrony
|
||
%dir %attr(750,chrony,chrony) %{_localstatedir}/lib/chrony
|
||
%ghost %attr(640,chrony,chrony) %{_localstatedir}/lib/chrony/drift
|
||
%ghost %attr(640,chrony,chrony) %{_localstatedir}/lib/chrony/rtc
|
||
%dir %attr(750,chrony,chrony) %{_localstatedir}/log/chrony
|
||
|
||
%changelog
|