gnu: Add chrony.

* gnu/packages/ntp.scm (chrony): New public variable.
This commit is contained in:
Tobias Geerinckx-Rice 2020-03-31 10:50:46 +02:00
parent 8c04471f24
commit 9f12e06bb3
No known key found for this signature in database
GPG key ID: 0DB0FF884F556D79

View file

@ -4,7 +4,7 @@
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
@ -28,7 +28,9 @@ (define-module (gnu packages ntp)
#:use-module (gnu packages base)
#:use-module (gnu packages libevent)
#:use-module (gnu packages linux)
#:use-module (gnu packages nettle)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages readline)
#:use-module (gnu packages tls)
#:use-module (guix build-system gnu)
#:use-module (guix download)
@ -38,6 +40,70 @@ (define-module (gnu packages ntp)
#:use-module (guix utils)
#:use-module (srfi srfi-1))
(define-public chrony
(package
(name "chrony")
(version "3.5")
(source
(origin
(method url-fetch)
(uri (string-append "https://download.tuxfamily.org/chrony/"
"chrony-" version ".tar.gz"))
(sha256
(base32 "1d9r2dhslll4kzdmxrj0qfgwq1b30d4l3s5cwr8yr93029dpj0jf"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((srfi srfi-26)
(guix build utils)
(guix build gnu-build-system))
#:configure-flags
(list "--enable-scfilter"
"--with-sendmail=sendmail"
"--with-user=chrony")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'stay-inside-out
;; Simply setting CHRONYVARDIR to something nonsensical at install
;; time would result in nonsense file names in man pages.
(lambda _
(substitute* "Makefile.in"
(("mkdir -p \\$\\(DESTDIR\\)\\$\\(CHRONYVARDIR\\)") ":"))
#t))
(add-after 'install 'install-more-documentation
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/" ,name "-" ,version)))
(for-each (cut install-file <> doc)
(list "README" "FAQ"))
(copy-recursively "examples" (string-append doc "/examples"))
#t))))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("libcap" ,libcap)
("libseccomp" ,libseccomp)
("nettle" ,nettle)))
(home-page "https://chrony.tuxfamily.org/")
(synopsis "System clock synchronisation service that speaks NTP")
(description
"Chrony keeps your system time accurate. It synchronises your computer's
clock with @acronym{NTP, Network Time Protocol} servers, reference clocks such
as GPS receivers, or even manual input of the correct time from a wristwatch.
Chrony will determine the rate at which the computer gains or loses time, and
compensate for it. It can also operate as an NTPv4 (RFC 5905) server and peer
to tell time to other computers on the network.
It's designed to perform well even under adverse conditions: congested
networks, unreliable clocks drifting with changes in temperature, and devices
or virtual machines that are frequently turned off and connect to the Internet
for only a few minutes at a time.
Typical accuracy when synchronised over the Internet is several milliseconds.
On a local network this can reach tens of microseconds. With hardware
time-stamping or reference clock, sub-microsecond accuracy is possible.")
(license l:gpl2)))
(define-public ntp
(package
(name "ntp")