[systemd] Add patch to disable resolve.conf symlink (#1043119)

Colin Walters walters at fedoraproject.org
Mon Jul 7 19:02:23 UTC 2014


commit a1b71bbfb44e182b4d3fda25e416ced7dad517aa
Author: Colin Walters <walters at verbum.org>
Date:   Mon Jul 7 15:02:08 2014 -0400

    Add patch to disable resolve.conf symlink (#1043119)

 ...ve-symlink-creation-from-tmpfiles-to-daem.patch |   65 ++++++++++++++++++++
 systemd.spec                                       |   10 +++-
 2 files changed, 74 insertions(+), 1 deletions(-)
---
diff --git a/0001-resolved-Move-symlink-creation-from-tmpfiles-to-daem.patch b/0001-resolved-Move-symlink-creation-from-tmpfiles-to-daem.patch
new file mode 100644
index 0000000..35a97dd
--- /dev/null
+++ b/0001-resolved-Move-symlink-creation-from-tmpfiles-to-daem.patch
@@ -0,0 +1,65 @@
+From 7824f773110be8a0cecb89f650e13db03b58d1e1 Mon Sep 17 00:00:00 2001
+From: Colin Walters <walters at verbum.org>
+Date: Mon, 7 Jul 2014 08:27:43 -0400
+Subject: [PATCH] resolved: Move symlink creation from tmpfiles to daemon
+ runtime
+
+At least Fedora right now doesn't by default use resolved; the service
+is disabled by default in the 90-default.preset file.
+
+The change to unconditionally create the resolv.conf symlink broke
+Anaconda and related tools (lorax) which expect it to be a regular
+file.  In particular, Anaconda expects to be able to persist
+networking state from the installation environment to the target
+system.
+
+A simple fix is to just have resolved itself create it at runtime.
+---
+ src/resolve/resolved-manager.c | 12 +++++++++++-
+ tmpfiles.d/etc.conf            |  1 -
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git a/src/resolve/resolved-manager.c b/src/resolve/resolved-manager.c
+index 3ed0603..1a6b3ac 100644
+--- a/src/resolve/resolved-manager.c
++++ b/src/resolve/resolved-manager.c
+@@ -192,9 +192,11 @@ static void append_dns(FILE *f, void *dns, unsigned char family, unsigned *count
+ 
+ int manager_update_resolv_conf(Manager *m) {
+         const char *path = "/run/systemd/resolve/resolv.conf";
++        const char *etcresolv_path = "/etc/resolv.conf";
+         _cleanup_free_ char *temp_path = NULL;
+         _cleanup_fclose_ FILE *f = NULL;
+-         _cleanup_free_ unsigned *indices = NULL;
++        _cleanup_free_ unsigned *indices = NULL;
++        struct stat st;
+         Address *address;
+         unsigned count = 0;
+         int n, r, i;
+@@ -270,6 +272,14 @@ int manager_update_resolv_conf(Manager *m) {
+                 return r;
+         }
+ 
++        /* Create /etc/resolv.conf as a link only if it doesn't exist */
++        if (lstat(etcresolv_path, &st) < 0) {
++                r = symlink(path, etcresolv_path);
++                if (r < 0 && errno != EEXIST) {
++                        return r;
++                }
++        }
++
+         return 0;
+ }
+ 
+diff --git a/tmpfiles.d/etc.conf b/tmpfiles.d/etc.conf
+index e809dff..4937719 100644
+--- a/tmpfiles.d/etc.conf
++++ b/tmpfiles.d/etc.conf
+@@ -10,4 +10,3 @@
+ L /etc/os-release - - - - ../usr/lib/os-release
+ L /etc/localtime - - - - ../usr/share/zoneinfo/UTC
+ L+ /etc/mtab - - - - ../proc/self/mounts
+-L /etc/resolv.conf - - - - ../run/systemd/resolve/resolv.conf
+-- 
+1.8.3.1
+
diff --git a/systemd.spec b/systemd.spec
index 6277311..c5c8de1 100644
--- a/systemd.spec
+++ b/systemd.spec
@@ -16,7 +16,7 @@
 Name:           systemd
 Url:            http://www.freedesktop.org/wiki/Software/systemd
 Version:        215
-Release:        2%{?gitcommit:.git%{gitcommit}}%{?dist}
+Release:        3%{?gitcommit:.git%{gitcommit}}%{?dist}
 # For a breakdown of the licensing, see README
 License:        LGPLv2+ and MIT and GPLv2+
 Summary:        A System and Service Manager
@@ -40,6 +40,11 @@ Source6:        yum-protect-systemd.conf
 # GIT_DIR=~/src/systemd/.git git format-patch-ab -M -N --no-signature v215..v215-stable
 # i=1; for p in 0*patch;do printf "Patch%03d:       %s\n" $i $p; ((i++));done
 
+# Presently not accepted upstream, but we disable systemd-resolved in
+# the presets anyways, and this unbreaks anaconda/lorax/livecd-creator
+# etc.
+Patch0: 0001-resolved-Move-symlink-creation-from-tmpfiles-to-daem.patch
+
 # kernel-install patch for grubby, drop if grubby is obsolete
 Patch1000:      kernel-install-grubby.patch
 
@@ -760,6 +765,9 @@ getent passwd systemd-journal-gateway >/dev/null 2>&1 || useradd -r -l -u 191 -g
 %{_datadir}/systemd/gatewayd
 
 %changelog
+* Mon Jul 07 2014 Colin Walters <walters at redhat.com> - 215-3
+- Add patch to disable resolve.conf symlink (#1043119)
+
 * Sat Jul 06 2014 Zbigniew Jędrzejewski-Szmek <zbyszek at in.waw.pl> - 215-2
 - Move systemd-journal-remote to systemd-journal-gateway package (#1114688)
 - Disable /etc/mtab handling temporarily (#1116158)


More information about the scm-commits mailing list