diff --git a/gnu/local.mk b/gnu/local.mk index 013e7d93c2..03e4db3ae0 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -34,6 +34,7 @@ # Copyright © 2020 Felix Gruber # Copyright © 2020 Ryan Prior # Copyright © 2020 Jan Wielkiewicz +# Copyright © 2020 Brice Waegeneire # # This file is part of GNU Guix. # @@ -1322,6 +1323,7 @@ dist_patch_DATA = \ %D%/packages/patches/openmpi-mtl-priorities.patch \ %D%/packages/patches/openocd-nrf52.patch \ %D%/packages/patches/openssh-hurd.patch \ + %D%/packages/patches/openresolv-restartcmd-guix.patch \ %D%/packages/patches/openssl-runpath.patch \ %D%/packages/patches/openssl-1.1-c-rehash-in.patch \ %D%/packages/patches/openssl-c-rehash-in.patch \ diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index e7c739f1a7..469ef7605d 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2020 Pierre Langlois ;;; Copyright © 2020 Arun Isaac ;;; Copyright © 2020 Leo Famulari +;;; Copyright © 2020 Brice Waegeneire ;;; ;;; This file is part of GNU Guix. ;;; @@ -1001,3 +1002,34 @@ (define-public maradns consists of a UDP-only authoritative DNS server for hosting domains, and a UDP and TCP-capable recursive DNS server for finding domains on the internet.") (license license:bsd-2))) + +(define-public openresolv + (package + (name "openresolv") + (version "3.10.0") + (source (origin + (method url-fetch) + (uri (string-append "https://roy.marples.name/downloads/openresolv/" + "openresolv-" version ".tar.xz")) + (sha256 + (base32 + "01ms6c087la4hk0f0w6n2vpsb7dg4kklah2rqyhz88p0vr9bqy20")) + (patches + (search-patches "openresolv-restartcmd-guix.patch")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No test suite + #:configure-flags + (list (string-append "--sysconfdir=/etc")) + #:make-flags + (list (string-append "SYSCONFDIR=/" (assoc-ref %outputs "out") "/etc")))) + (home-page "https://roy.marples.name/projects/openresolv/") + (synopsis "Resolvconf POSIX compliant implementation, a middleman for resolv.conf") + (description "openresolv is an implementation of @command{resolvconf}, the +middleman between the network configuration services and +@file{/etc/resolv.conf}. @command{resolvconf} itself is just a script that +stores, removes and lists a full @file{resolv.conf} generated for the +interface. It then calls all the helper scripts it knows about so it can +configure the real @file{/etc/resolv.conf} and optionally any local +nameservers other than libc.") + (license license:bsd-2))) diff --git a/gnu/packages/patches/openresolv-restartcmd-guix.patch b/gnu/packages/patches/openresolv-restartcmd-guix.patch new file mode 100644 index 0000000000..ad70ebd6f2 --- /dev/null +++ b/gnu/packages/patches/openresolv-restartcmd-guix.patch @@ -0,0 +1,34 @@ +From 7f0ce36828ec1e130bee857b8236ca091e4d8a2c Mon Sep 17 00:00:00 2001 +From: Brice Waegeneire +Date: Sat, 9 May 2020 15:52:06 +0200 +Subject: [PATCH] Add RESTARTCMD for Guix System. + +--- + +openresolv need to know how to restart the nscd service, this patch teach it +to do it on Guix System by using shepherd. + + resolvconf.in | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/resolvconf.in b/resolvconf.in +index 3cad04d..5ef5294 100644 +--- a/resolvconf.in ++++ b/resolvconf.in +@@ -369,6 +369,13 @@ detect_init() + then + /etc/rc.d/$1 restart + fi' ++ elif [ -e /gnu/store ] && [ -e /run/current-system/profile ]; then ++ # Guix System ++ RESTARTCMD=' ++ if /run/current-system/profile/bin/herd status $1 2>&1 ++ then ++ /run/current-system/profile/bin/herd restart $1 ++ fi' + else + for x in /etc/init.d/rc.d /etc/rc.d /etc/init.d; do + [ -d $x ] || continue +-- +2.26.0 +