[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
05/08: gnu: isc-dhcp: Patch dhclient to support resolvconf.
From: |
guix-commits |
Subject: |
05/08: gnu: isc-dhcp: Patch dhclient to support resolvconf. |
Date: |
Sat, 18 Jan 2025 18:41:45 -0500 (EST) |
civodul pushed a commit to branch master
in repository guix.
commit 526b25e09e00709655c164e619ea64d1db3d8537
Author: B. Wilson <elaexuotee@wilsonb.com>
AuthorDate: Fri Jul 12 18:03:48 2024 +0900
gnu: isc-dhcp: Patch dhclient to support resolvconf.
* gnu/packages/patches/dhclient-script-resolvconf-support.patch: New patch.
* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/admin.scm (isc-dhcp): Patch dhclient-script and update
wrapper.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
---
gnu/packages/admin.scm | 21 +++++---
.../dhclient-script-resolvconf-support.patch | 58 ++++++++++++++++++++++
2 files changed, 71 insertions(+), 8 deletions(-)
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 7b4cf118f5..6cb0a2f9db 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -1572,7 +1572,9 @@ connection alive.")
version "/dhcp-" version ".tar.gz"))
(sha256
(base32
- "1ivkvhhvqxap6c51cli7pa6xn76ngxri1zbl45ishz4ranxidi0a"))))
+ "1ivkvhhvqxap6c51cli7pa6xn76ngxri1zbl45ishz4ranxidi0a"))
+ (patches (search-patches
+ "dhclient-script-resolvconf-support.patch"))))
(build-system gnu-build-system)
(arguments
`(#:parallel-build? #f
@@ -1666,12 +1668,13 @@ connection alive.")
(lambda* (#:key inputs outputs #:allow-other-keys)
;; Install the dhclient script for GNU/Linux and make sure
;; if finds all the programs it needs.
- (let* ((out (assoc-ref outputs "out"))
- (libexec (string-append out "/libexec"))
- (coreutils (assoc-ref inputs "coreutils*"))
- (inetutils (assoc-ref inputs "inetutils"))
- (grep (assoc-ref inputs "grep*"))
- (sed (assoc-ref inputs "sed*"))
+ (let* ((out (assoc-ref outputs "out"))
+ (libexec (string-append out "/libexec"))
+ (coreutils (assoc-ref inputs "coreutils*"))
+ (inetutils (assoc-ref inputs "inetutils"))
+ (grep (assoc-ref inputs "grep*"))
+ (resolvconf (assoc-ref inputs "resolvconf*"))
+ (sed (assoc-ref inputs "sed*"))
(debianutils (assoc-ref inputs "debianutils")))
(substitute* "client/scripts/linux"
(("/sbin/ip")
@@ -1687,7 +1690,8 @@ connection alive.")
,(map (lambda (dir)
(string-append dir "/bin:"
dir "/sbin"))
- (list inetutils coreutils grep sed
debianutils))))))))))
+ (list inetutils coreutils grep sed resolvconf
+ debianutils))))))))))
(native-inputs
(list config perl file))
@@ -1716,6 +1720,7 @@ connection alive.")
("coreutils*" ,coreutils)
("grep*" ,grep)
+ ("resolvconf*" ,openresolv)
("sed*" ,sed)))
(home-page "https://www.isc.org/dhcp/")
diff --git a/gnu/packages/patches/dhclient-script-resolvconf-support.patch
b/gnu/packages/patches/dhclient-script-resolvconf-support.patch
new file mode 100644
index 0000000000..b70abf22ee
--- /dev/null
+++ b/gnu/packages/patches/dhclient-script-resolvconf-support.patch
@@ -0,0 +1,58 @@
+Implement resolvconf support
+
+Due to the potential for multiple sources contenting for /etc/resolv.conf
+control, this patch replaces direct file munging with resolvconf indirection.
+
+--- a/client/scripts/linux 1970-01-01 09:00:01.000000000 +0900
++++ b/client/scripts/linux 1970-01-01 09:00:01.000000000 +0900
+@@ -36,11 +36,11 @@
+ # This updated version mostly follows Debian script by Andrew Pollock et al.
+ make_resolv_conf() {
+ local new_resolv_conf
++ new_resolv_conf=$(mktemp)
+
+ # DHCPv4
+ if [ -n "$new_domain_search" ] || [ -n "$new_domain_name" ] ||
+- [ -n "$new_domain_name_servers" ]; then
+- new_resolv_conf=/etc/resolv.conf.dhclient-new
++ [ -n "$new_domain_name_servers" ]; then
+ rm -f $new_resolv_conf
+
+ if [ -n "$new_domain_name" ]; then
+@@ -70,17 +70,12 @@
+ echo nameserver $nameserver >>$new_resolv_conf
+ done
+ else # keep 'old' nameservers
+- sed -n /^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p
/etc/resolv.conf >>$new_resolv_conf
++ resolvconf -l "$interface.dhcp" | sed -n
/^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p >>$new_resolv_conf
+ fi
+
+- if [ -f /etc/resolv.conf ]; then
+- chown --reference=/etc/resolv.conf $new_resolv_conf
+- chmod --reference=/etc/resolv.conf $new_resolv_conf
+- fi
+- mv -f $new_resolv_conf /etc/resolv.conf
++ resolvconf -a "$interface.dhpc" <"$new_resolv_conf"
+ # DHCPv6
+ elif [ -n "$new_dhcp6_domain_search" ] || [ -n "$new_dhcp6_name_servers"
]; then
+- new_resolv_conf=/etc/resolv.conf.dhclient-new
+ rm -f $new_resolv_conf
+
+ if [ -n "$new_dhcp6_domain_search" ]; then
+@@ -97,14 +92,10 @@
+ echo nameserver $nameserver >>$new_resolv_conf
+ done
+ else # keep 'old' nameservers
+- sed -n /^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p
/etc/resolv.conf >>$new_resolv_conf
++ resolvconf -l "$interface.dhcp6" | sed -n
/^\w*[Nn][Aa][Mm][Ee][Ss][Ee][Rr][Vv][Ee][Rr]/p >>$new_resolv_conf
+ fi
+
+- if [ -f /etc/resolv.conf ]; then
+- chown --reference=/etc/resolv.conf $new_resolv_conf
+- chmod --reference=/etc/resolv.conf $new_resolv_conf
+- fi
+- mv -f $new_resolv_conf /etc/resolv.conf
++ resolvconf -a "$interface.dhpc6" <"$new_resolv_conf"
+ fi
+ }
+
- branch master updated (42295555ca -> dc50af1ca5), guix-commits, 2025/01/18
- 03/08: gnu: emacs-ggtags: Update to 0.9.0-0.4e3630c., guix-commits, 2025/01/18
- 01/08: gnu: guile-zlib: Update to 0.2.2., guix-commits, 2025/01/18
- 02/08: gnu: Add tclap., guix-commits, 2025/01/18
- 04/08: grafts: Only compute necessary graft derivations., guix-commits, 2025/01/18
- 06/08: gnu: memtest86+: Update to 7.20., guix-commits, 2025/01/18
- 07/08: gnu: nginx: Update to 1.27.3., guix-commits, 2025/01/18
- 08/08: gnu: Add emacs-fedi., guix-commits, 2025/01/18
- 05/08: gnu: isc-dhcp: Patch dhclient to support resolvconf.,
guix-commits <=