;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
-;;; Copyright © 2016 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2016 ng0 <ng0@n0.is>
+;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net>
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
+;;; Copyright © 2019 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
+ #:use-module (gnu packages check)
#:use-module (gnu packages databases)
+ #:use-module (gnu packages documentation)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages datastructures)
#:use-module (gnu packages libevent)
#:use-module (gnu packages libidn)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages lua)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages nettle)
#:use-module (gnu packages networking)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-xyz)
+ #:use-module (gnu packages sphinx)
#:use-module (gnu packages swig)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
#:use-module (guix git-download)
#:use-module (guix utils)
#:use-module (guix build-system gnu)
+ #:use-module (guix build-system meson)
#:use-module (guix build-system trivial))
(define-public dnsmasq
(define-public isc-bind
(package
(name "bind")
- (version "9.12.2-P2")
+ (version "9.16.1")
(source (origin
(method url-fetch)
(uri (string-append
- "https://ftp.isc.org/isc/bind9/" version "/" name "-"
- version ".tar.gz"))
+ "https://ftp.isc.org/isc/bind9/" version
+ "/bind-" version ".tar.xz"))
(sha256
(base32
- "0gk9vwqlbdmn10m21f2awvmiccfbadvcwi8zsgm91awbx4k7h0l7"))))
+ "14ayswxnyaqwb935iqdi1w9ih3zs0a0va59j4cyi5f9mh7kxf4x9"))))
(build-system gnu-build-system)
(outputs `("out" "utils"))
(inputs
- ;; it would be nice to add GeoIP and gssapi once there is package
+ ;; It would be nice to add GeoIP and gssapi once there are packages.
`(("libcap" ,libcap)
+ ("libuv" ,libuv)
("libxml2" ,libxml2)
("openssl" ,openssl)
- ("p11-kit" ,p11-kit)))
- (native-inputs `(("perl" ,perl)
- ("net-tools" ,net-tools)))
+ ("p11-kit" ,p11-kit)
+ ("python" ,python)
+ ("python-ply" ,python-ply)))
+ (native-inputs
+ `(("perl" ,perl)
+ ("pkg-config" ,pkg-config)))
(arguments
`(#:configure-flags
- (list (string-append "--with-openssl="
- (assoc-ref %build-inputs "openssl"))
- (string-append "--with-pkcs11="
+ (list (string-append "--with-pkcs11="
(assoc-ref %build-inputs "p11-kit")))
#:phases
(modify-phases %standard-phases
"/share/man/man1/dig.1"
"/share/man/man1/host.1"
"/share/man/man1/nslookup.1"
- "/share/man/man1/nsupdate.1"))))
+ "/share/man/man1/nsupdate.1"))
+ #t))
;; When and if guix provides user namespaces for the build process,
;; then the following can be uncommented and the subsequent "force-test"
;; will not be necessary.
;; (system "bin/tests/system/ifconfig.sh up")))
(replace 'check
(lambda _
- (invoke "make" "force-test")
+ ;; XXX Even ‘make force-test’ tries to create network interfaces
+ ;; and fails. The only working target is the (trivial) fuzz test.
+ (with-directory-excursion "fuzz"
+ (invoke "make" "check"))
#t)))))
(synopsis "An implementation of the Domain Name System")
(description "BIND is an implementation of the @dfn{Domain Name System}
(define-public libasr
(package
(name "libasr")
- (version "201602131606")
+ (version "1.0.4")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.opensmtpd.org/archives/"
- name "-" version ".tar.gz"))
+ "libasr-" version ".tar.gz"))
(sha256
- (base32
- "18kdmbjsxrfai16d66qslp48b1zf7gr8him2jj5dcqgbsl44ls75"))))
+ (base32 "1d6s8njqhvayx2gp47409sp1fn8m608ws26hr1srfp6i23nnpyqr"))))
(build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'install-documentation
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (install-file "src/asr_run.3"
+ (string-append out "/share/man/man3"))
+ #t))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
- ("pkg-config" ,pkg-config)
- ("groff" ,groff)))
+ ("libtool" ,libtool)
+ ("pkg-config" ,pkg-config)))
(home-page "https://www.opensmtpd.org")
(synopsis "Asynchronous resolver library by the OpenBSD project")
(description
(define-public nsd
(package
(name "nsd")
- (version "4.1.25")
+ (version "4.2.4")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.nlnetlabs.nl/downloads/nsd/nsd-"
version ".tar.gz"))
(sha256
- (base32
- "0zyzjd3wmq258jiry62ci1z23qfd0rc5ggnpmybc60xvpddgynwg"))))
+ (base32 "0z7j3vwqqj0hh8n5irb2yqwzl45k4sn2wczbq1b1lqv5cxv6vgcy"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(define-public unbound
(package
(name "unbound")
- (version "1.8.1")
+ (version "1.10.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.unbound.net/downloads/unbound-"
version ".tar.gz"))
(sha256
- (base32
- "0p9w6spar5dfi7fplxjcq4394wldabaws0ns30cqq6sxqfwv6qn3"))))
+ (base32 "0mg9divpysr42sp0m693a70693dp8025v6c9dv1yabr4g1jlhbqm"))))
(build-system gnu-build-system)
(outputs '("out" "python"))
(native-inputs
`(("expat" ,expat)
("libevent" ,libevent)
("protobuf" ,protobuf)
- ("python" ,python-3)
("python-wrapper" ,python-wrapper)
("openssl" ,openssl)))
(arguments
`(#:configure-flags
- (list "--disable-static" ;save space and non-determinism in libunbound.a
+ (list "--disable-static" ; save space and non-determinism in libunbound.a
(string-append
"--with-ssl=" (assoc-ref %build-inputs "openssl"))
(string-append
(define-public yadifa
(package
(name "yadifa")
- (version "2.3.8")
+ (version "2.3.9")
(source
- (let ((build "7713"))
+ (let ((build "8497"))
(origin
(method url-fetch)
(uri
(string-append "http://cdn.yadifa.eu/sites/default/files/releases/"
- name "-" version "-" build ".tar.gz"))
+ "yadifa-" version "-" build ".tar.gz"))
(sha256
- (base32 "15xhzg4crjcxascwpz6y8qpqcgypzv2p9bspdskp4nx1x1y4316c")))))
+ (base32 "0xvyr91sfgzkpw6g3h893ldbwnki3w2472n56rr18w67qghs1sa5")))))
(build-system gnu-build-system)
(native-inputs
`(("which" ,which)))
"--enable-nsec"
"--enable-nsec3"
"--enable-tsig")))
- (home-page "http://www.yadifa.eu/")
+ (home-page "https://www.yadifa.eu/")
(synopsis "Authoritative DNS name server")
(description "YADIFA is an authoritative name server for the @dfn{Domain
Name System} (DNS). It aims for both higher performance and a smaller memory
(define-public knot
(package
(name "knot")
- (version "2.7.3")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://secure.nic.cz/files/knot-dns/"
- name "-" version ".tar.xz"))
- (sha256
- (base32
- "1pwjcv7hzhqawisibybma160k77a6f1v94xw6ay9c7j49vrw05w7"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Delete bundled libraries.
- (with-directory-excursion "src/contrib"
- (delete-file-recursively "lmdb"))
- #t))))
+ (version "2.9.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://secure.nic.cz/files/knot-dns/"
+ "knot-" version ".tar.xz"))
+ (sha256
+ (base32 "0zm0642hkb16sqkqpa84f89f3s0bw44m837r1nia8m89swvz3bgj"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ ;; Delete bundled libraries.
+ (with-directory-excursion "src/contrib"
+ (delete-file-recursively "lmdb"))
+ #t))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
license:public-domain ; src/contrib/fnv and possibly murmurhash3
license:gpl3+)))) ; everything else
-(define-public ddclient
+(define-public knot-resolver
(package
- (name "ddclient")
- (version "3.9.0")
+ (name "knot-resolver")
+ (version "4.3.0")
(source (origin
(method url-fetch)
- (uri (string-append "mirror://sourceforge/ddclient/ddclient/ddclient-"
- version "/ddclient-" version ".tar.gz"))
+ (uri (string-append "https://secure.nic.cz/files/knot-resolver/"
+ "knot-resolver-" version ".tar.xz"))
(sha256
(base32
- "0fwyhab8yga2yi1kdfkbqxa83wxhwpagmj1w1mwkg2iffh1fjjlw"))))
+ "09ffmqx79lv5psr433x4n946njgsn071b9b7161pcb9bmrqz380c"))))
+ (build-system meson-build-system)
+ (arguments
+ '(#:configure-flags '("-Ddoc=enabled")
+ #:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'disable-default-ta
+ (lambda _
+ ;; Disable the default managed root TA, since we don't have
+ ;; write access to the keyfile and its directory in store.
+ (substitute* "daemon/lua/sandbox.lua.in"
+ (("^trust_anchors\\.add_file.*") ""))
+ #t))
+ (add-after 'build 'build-doc
+ (lambda _
+ (invoke "ninja" "doc")))
+ (add-after 'install 'wrap-binary
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (lua-* (map cdr (filter
+ (lambda (input)
+ (string-prefix? "lua-" (car input)))
+ inputs)))
+ (lua-path (lambda (p)
+ (string-append p "/share/lua/5.1/?.lua")))
+ (lua-cpath (lambda (p)
+ (string-append p "/lib/lua/5.1/?.so"))))
+ (wrap-program (string-append out "/sbin/kresd")
+ `("LUA_PATH" ";" prefix ,(map lua-path lua-*))
+ `("LUA_CPATH" ";" prefix ,(map lua-cpath lua-*)))
+ #t))))))
+ (native-inputs
+ `(("cmocka" ,cmocka) ; for unit tests
+ ("doxygen" ,doxygen)
+ ("protobuf-c" ,protobuf-c)
+ ("pkg-config" ,pkg-config)
+ ("python-breathe" ,python-breathe)
+ ("python-sphinx" ,python-sphinx)
+ ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme)))
+ (inputs
+ `(("fstrm" ,fstrm)
+ ("gnutls" ,gnutls)
+ ("knot" ,knot)
+ ("libuv" ,libuv)
+ ("lmdb" ,lmdb)
+ ("luajit" ,luajit)
+ ;; TODO: Add optional lua modules: basexx, cqueues and psl.
+ ("lua-bitop" ,lua5.1-bitop)
+ ("lua-filesystem" ,lua5.1-filesystem)
+ ("lua-sec" ,lua5.1-sec)
+ ("lua-socket" ,lua5.1-socket)))
+ (home-page "https://www.knot-resolver.cz/")
+ (synopsis "Caching validating DNS resolver")
+ (description
+ "Knot Resolver is a caching full resolver implementation written in C and
+LuaJIT, both a resolver library and a daemon.")
+ (license (list license:gpl3+
+ ;; Some 'contrib' files are under MIT, CC0 and LGPL2.
+ license:expat
+ license:cc0
+ license:lgpl2.0))))
+
+(define-public ddclient
+ (package
+ (name "ddclient")
+ (version "3.9.1")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/ddclient/ddclient.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0hf377g4j9r9sac75xp17nk2h58mazswz4vkg4g2gl2yyhvzq91w"))))
(build-system trivial-build-system) ; no Makefile.PL
(native-inputs
`(("bash" ,bash)
- ("gzip" ,gzip)
- ("perl" ,perl)
- ("tar" ,tar)))
+ ("perl" ,perl)))
(inputs
`(("inetutils" ,inetutils) ; logger
("net-tools" ,net-tools)
(use-modules (guix build utils)
(ice-9 match)
(srfi srfi-26))
- ;; bootstrap
(setenv "PATH" (string-append
(assoc-ref %build-inputs "bash") "/bin" ":"
- (assoc-ref %build-inputs "tar") "/bin" ":"
- (assoc-ref %build-inputs "gzip") "/bin" ":"
(assoc-ref %build-inputs "perl") "/bin"))
- ;; extract source
- (invoke "tar" "xvf" (assoc-ref %build-inputs "source"))
- ;; package
- (with-directory-excursion (string-append ,name "-" ,version)
- (let* ((out (assoc-ref %outputs "out"))
- (bin (string-append out "/bin")))
- (let ((file "ddclient"))
- (substitute* file
- (("/usr/bin/perl") (which "perl"))
- ;; Strictly use ‘/etc/ddclient/ddclient.conf’.
- (("\\$\\{program\\}\\.conf") "/etc/ddclient/ddclient.conf")
- (("\\$etc\\$program.conf") "/etc/ddclient/ddclient.conf")
- ;; Strictly use ‘/var/cache/ddclient/ddclient.cache’
- (("\\$cachedir\\$program\\.cache")
- "/var/cache/ddclient/ddclient.cache"))
- (install-file file bin)
- (wrap-program (string-append bin "/" file)
- `("PATH" ":" =
- ("$PATH"
- ,@(map (lambda (input)
- (match input
- ((name . store)
- (string-append store "/bin"))))
- %build-inputs)))
- `("PERL5LIB" ":" =
- ,(delete
- ""
- (map (match-lambda
- (((? (cut string-prefix? "perl-" <>) name) . dir)
- (string-append dir "/lib/perl5/site_perl"))
- (_ ""))
- %build-inputs)))))
- (for-each (cut install-file <> (string-append out
- "/share/ddclient"))
- (find-files "." "sample.*$")))))))
- (home-page "https://sourceforge.net/projects/ddclient/")
+
+ ;; Copy the (read-only) source into the (writable) build directory.
+ (copy-recursively (assoc-ref %build-inputs "source") ".")
+
+ ;; Install.
+ (let* ((out (assoc-ref %outputs "out"))
+ (bin (string-append out "/bin")))
+ (let ((file "ddclient"))
+ (substitute* file
+ (("/usr/bin/perl") (which "perl"))
+ ;; Strictly use ‘/etc/ddclient/ddclient.conf’.
+ (("\\$\\{program\\}\\.conf") "/etc/ddclient/ddclient.conf")
+ (("\\$etc\\$program.conf") "/etc/ddclient/ddclient.conf")
+ ;; Strictly use ‘/var/cache/ddclient/ddclient.cache’
+ (("\\$cachedir\\$program\\.cache")
+ "/var/cache/ddclient/ddclient.cache"))
+ (install-file file bin)
+ (wrap-program (string-append bin "/" file)
+ `("PATH" ":" =
+ ("$PATH"
+ ,@(map (lambda (input)
+ (match input
+ ((name . store)
+ (string-append store "/bin"))))
+ %build-inputs)))
+ `("PERL5LIB" ":" =
+ ,(delete
+ ""
+ (map (match-lambda
+ (((? (cut string-prefix? "perl-" <>) name) . dir)
+ (string-append dir "/lib/perl5/site_perl"))
+ (_ ""))
+ %build-inputs)))))
+ (for-each (cut install-file <> (string-append out
+ "/share/ddclient"))
+ (find-files "." "sample.*$"))))))
+ (home-page "https://ddclient.net/")
(synopsis "Address updating utility for dynamic DNS services")
(description "This package provides a client to update dynamic IP
addresses with several dynamic DNS service providers, such as
a zero-config service that allows one to resolve host names to IP addresses in
local networks.")
(license license:lgpl2.1)))
+
+(define-public public-suffix-list
+ ;; Mozilla releases the official list here:
+ ;;
+ ;; https://publicsuffix.org/list/public_suffix_list.dat
+ ;;
+ ;; However, Mozilla syncs that file from the GitHub repository periodically,
+ ;; so its contents will change over time. If you update this commit, please
+ ;; make sure that the new commit refers to a list which is identical to the
+ ;; officially published list available from the URL above.
+ (let ((commit "9375b697baddb0827a5995c81bd3c75877a0b35d"))
+ (package
+ (name "public-suffix-list")
+ (version (git-version "0" "1" commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/publicsuffix/list.git")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1sm7pni01rnl4ldzi8z8nc4cbgq8nxda9gwc68v0s3ij7jd1jmik"))))
+ (build-system trivial-build-system)
+ (arguments
+ `(#:modules ((guix build utils))
+ #:builder
+ (begin
+ (use-modules (guix build utils))
+ (let* ((out (assoc-ref %outputs "out"))
+ ;; Install to /share because that is where "read-only
+ ;; architecture-independent data files" should go (see:
+ ;; (standards) Directory Variables). Include the version in
+ ;; the directory name so that if multiple versions are ever
+ ;; installed in the same profile, they will not conflict.
+ (destination (string-append
+ out "/share/public-suffix-list-" ,version))
+ (source (assoc-ref %build-inputs "source")))
+ (with-directory-excursion source
+ (install-file "public_suffix_list.dat" destination)
+ (install-file "LICENSE" destination))
+ #t))))
+ (home-page "https://publicsuffix.org/")
+ (synopsis "Database of current and historical DNS suffixes")
+ (description "This is the Public Suffix List maintained by Mozilla. A
+\"public suffix\" is one under which Internet users can (or historically
+could) directly register names in the Domain Name System (DNS). Some examples
+of public suffixes are .com, .co.uk and pvt.k12.ma.us. This is a list of all
+known public suffixes.")
+ (license license:mpl2.0))))