[arch-commits] Commit in systemd/trunk (3 files)

Dave Reisner dreisner at archlinux.org
Wed Nov 9 17:51:28 UTC 2016


    Date: Wednesday, November 9, 2016 @ 17:51:27
  Author: dreisner
Revision: 280260

upgpkg: systemd 232-2

- Add git tag verification
- make RestrictAddressFamilies no-op on i686
- Revert nspawn changes which break DNS resolution

Added:
  systemd/trunk/0001-Revert-nspawn-try-to-bind-mount-resolved-s-resolv.co.patch
  systemd/trunk/0001-disable-RestrictAddressFamilies-on-i686.patch
Modified:
  systemd/trunk/PKGBUILD

-----------------------------------------------------------------+
 0001-Revert-nspawn-try-to-bind-mount-resolved-s-resolv.co.patch |   62 ++++++++++
 0001-disable-RestrictAddressFamilies-on-i686.patch              |   30 ++++
 PKGBUILD                                                        |   51 +++++++-
 3 files changed, 140 insertions(+), 3 deletions(-)

Added: 0001-Revert-nspawn-try-to-bind-mount-resolved-s-resolv.co.patch
===================================================================
--- 0001-Revert-nspawn-try-to-bind-mount-resolved-s-resolv.co.patch	                        (rev 0)
+++ 0001-Revert-nspawn-try-to-bind-mount-resolved-s-resolv.co.patch	2016-11-09 17:51:27 UTC (rev 280260)
@@ -0,0 +1,62 @@
+From 481712d9ee88395042f0640f272c1f87142bc0a8 Mon Sep 17 00:00:00 2001
+From: Dave Reisner <dreisner at archlinux.org>
+Date: Wed, 9 Nov 2016 11:14:03 -0500
+Subject: [PATCH] Revert "nspawn: try to bind mount resolved's resolv.conf
+ snippet into the container"
+
+This reverts commit 3539724c26a1b2b00c4eb3c004b635a4b8647de6.
+---
+ src/nspawn/nspawn.c | 27 ++++++++-------------------
+ 1 file changed, 8 insertions(+), 19 deletions(-)
+
+diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
+index c8b18bc..93df7c6 100644
+--- a/src/nspawn/nspawn.c
++++ b/src/nspawn/nspawn.c
+@@ -1309,35 +1309,24 @@ static int setup_resolv_conf(const char *dest) {
+         /* Fix resolv.conf, if possible */
+         where = prefix_roota(dest, "/etc/resolv.conf");
+ 
+-        if (access("/usr/lib/systemd/resolv.conf", F_OK) >= 0) {
+-                /* resolved is enabled on the host. In this, case bind mount its static resolv.conf file into the
+-                 * container, so that the container can use the host's resolver. Given that network namespacing is
+-                 * disabled it's only natural of the container also uses the host's resolver. It also has the big
+-                 * advantage that the container will be able to follow the host's DNS server configuration changes
+-                 * transparently. */
+-
+-                r = mount_verbose(LOG_WARNING, "/usr/lib/systemd/resolv.conf", where, NULL, MS_BIND, NULL);
+-                if (r >= 0)
+-                        return mount_verbose(LOG_ERR, NULL, where, NULL,
+-                                             MS_BIND|MS_REMOUNT|MS_RDONLY|MS_NOSUID|MS_NODEV, NULL);
+-        }
+-
+-        /* If that didn't work, let's copy the file */
+         r = copy_file("/etc/resolv.conf", where, O_TRUNC|O_NOFOLLOW, 0644, 0);
+         if (r < 0) {
+-                /* If the file already exists as symlink, let's suppress the warning, under the assumption that
+-                 * resolved or something similar runs inside and the symlink points there.
++                /* If the file already exists as symlink, let's
++                 * suppress the warning, under the assumption that
++                 * resolved or something similar runs inside and the
++                 * symlink points there.
+                  *
+-                 * If the disk image is read-only, there's also no point in complaining.
++                 * If the disk image is read-only, there's also no
++                 * point in complaining.
+                  */
+                 log_full_errno(IN_SET(r, -ELOOP, -EROFS) ? LOG_DEBUG : LOG_WARNING, r,
+-                               "Failed to copy /etc/resolv.conf to %s, ignoring: %m", where);
++                               "Failed to copy /etc/resolv.conf to %s: %m", where);
+                 return 0;
+         }
+ 
+         r = userns_lchown(where, 0, 0);
+         if (r < 0)
+-                log_warning_errno(r, "Failed to chown /etc/resolv.conf, ignoring: %m");
++                log_warning_errno(r, "Failed to chown /etc/resolv.conf: %m");
+ 
+         return 0;
+ }
+-- 
+2.10.2
+

Added: 0001-disable-RestrictAddressFamilies-on-i686.patch
===================================================================
--- 0001-disable-RestrictAddressFamilies-on-i686.patch	                        (rev 0)
+++ 0001-disable-RestrictAddressFamilies-on-i686.patch	2016-11-09 17:51:27 UTC (rev 280260)
@@ -0,0 +1,30 @@
+From ff59e06f9423af0532aaeedf931474823f764875 Mon Sep 17 00:00:00 2001
+From: Dave Reisner <dreisner at archlinux.org>
+Date: Wed, 9 Nov 2016 08:00:26 -0500
+Subject: [PATCH] disable RestrictAddressFamilies on i686
+
+Shit's broke, yo.
+
+https://github.com/systemd/systemd/issues/4575
+---
+ src/core/execute.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/core/execute.c b/src/core/execute.c
+index f666f7c..7d09154 100644
+--- a/src/core/execute.c
++++ b/src/core/execute.c
+@@ -1254,6 +1254,10 @@ static int apply_address_families(const Unit* u, const ExecContext *c) {
+         Iterator i;
+         int r;
+ 
++#if defined(__i386__)
++        return 0;
++#endif
++
+         assert(c);
+ 
+         if (skip_seccomp_unavailable(u, "RestrictAddressFamilies="))
+-- 
+2.10.2
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2016-11-09 16:45:38 UTC (rev 280259)
+++ PKGBUILD	2016-11-09 17:51:27 UTC (rev 280260)
@@ -4,7 +4,7 @@
 pkgbase=systemd
 pkgname=('systemd' 'libsystemd' 'systemd-sysvcompat')
 pkgver=232
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url="https://www.github.com/systemd/systemd"
 makedepends=('acl' 'cryptsetup' 'docbook-xsl' 'gperf' 'lz4' 'xz' 'pam' 'libelf'
@@ -19,7 +19,9 @@
         'arch.conf'
         'loader.conf'
         'splash-arch.bmp'
-        'udev-hwdb.hook')
+        'udev-hwdb.hook'
+        '0001-disable-RestrictAddressFamilies-on-i686.patch'
+        '0001-Revert-nspawn-try-to-bind-mount-resolved-s-resolv.co.patch')
 sha512sums=('SKIP'
             'f0d933e8c6064ed830dec54049b0a01e27be87203208f6ae982f10fb4eddc7258cb2919d594cbfb9a33e74c3510cfd682f3416ba8e804387ab87d1a217eb4b73'
             '5a3cf61bb0b8da6061c13fbfce7191c545ccf4c95c5bbf3e47f2b41225f35a4a366e691a04f90b76fd24536ea4cb29ff24585408d4a9972cd0f1279544604abb'
@@ -27,18 +29,61 @@
             '61032d29241b74a0f28446f8cf1be0e8ec46d0847a61dadb2a4f096e8686d5f57fe5c72bcf386003f6520bc4b5856c32d63bf3efe7eb0bc0deefc9f68159e648'
             'c416e2121df83067376bcaacb58c05b01990f4614ad9de657d74b6da3efa441af251d13bf21e3f0f71ddcb4c9ea658b81da3d915667dc5c309c87ec32a1cb5a5'
             '5a1d78b5170da5abe3d18fdf9f2c3a4d78f15ba7d1ee9ec2708c4c9c2e28973469bc19386f70b3cf32ffafbe4fcc4303e5ebbd6d5187a1df3314ae0965b25e75'
-            '888ab01bc6e09beb08d7126472c34c9e1aa35ea34e62a09e900ae34c93b1de2fcc988586efd8d0dc962393974f45c77b206d59a86cf53e370f061bf9a1b1a862')
+            '888ab01bc6e09beb08d7126472c34c9e1aa35ea34e62a09e900ae34c93b1de2fcc988586efd8d0dc962393974f45c77b206d59a86cf53e370f061bf9a1b1a862'
+            '89f9b2d3918c679ce4f76c2b10dc7fcb7e04f1925a5f92542f06891de2a123a91df7eb67fd4ce71506a8132f5440b3560b7bb667e1c1813944b115c1dfe35e3f'
+            'b993a42c5534582631f7b379d54f6abc37e3aaa56ecf869a6d86ff14ae5a52628f4e447b6a30751bc1c14c30cec63a5c6d0aa268362d235ed477b639cac3a219')
+validpgpkeys=(
+  '63CDA1E5D3FC22B998D20DD6327F26951A015CC4'  # Lennart Poettering
+)
 
 _backports=(
 )
 
+_validate_tag() {
+  local success fingerprint trusted status tag=v$pkgver
+
+  parse_gpg_statusfile /dev/stdin < <(git verify-tag --raw "$tag" 2>&1)
+
+  if (( ! success )); then
+    error 'failed to validate tag %s\n' "$tag"
+    return 1
+  fi
+
+  if ! in_array "$fingerprint" "${validpgpkeys[@]}" && (( ! trusted )); then
+    error 'unknown or untrusted public key: %s\n' "$fingerprint"
+    return 1
+  fi
+
+  case $status in
+    'expired')
+      warning 'the signature has expired'
+      ;;
+    'expiredkey')
+      warning 'the key has expired'
+      ;;
+  esac
+
+  return 0
+}
+
 prepare() {
   cd "$pkgbase"
 
+  _validate_tag || return
+
   if (( ${#_backports[*]} > 0 )); then
     git cherry-pick -n "${_backports[@]}"
   fi
 
+  # these patches aren't upstream, but they make v232 more useable.
+
+  # https://github.com/systemd/systemd/issues/4575
+  patch -Np1 <../0001-disable-RestrictAddressFamilies-on-i686.patch
+
+  # https://github.com/systemd/systemd/issues/4595
+  # https://github.com/systemd/systemd/issues/3826
+  patch -Np1 <../0001-Revert-nspawn-try-to-bind-mount-resolved-s-resolv.co.patch
+
   ./autogen.sh
 }
 



More information about the arch-commits mailing list