Hey Stefan,
thank you for working on this so urgently.
This builds on my system and I merged the patches.
Best, -Michael
On Sun, 2018-10-21 at 21:35 +0200, Stefan Schantl wrote:
Signed-off-by: Stefan Schantl stefan.schantl@ipfire.org
...-whether-struct-statx-is-defined-in-.patch | 105 ++++++++++++++++++ ...-meson-rename-Ddebug-to-Ddebug-extra.patch | 43 +++++++ ...ine_begins-to-accept-word-matching-f.patch | 48 ++++++++ .../systemd-231-ipfire-disable-tests.patch | 58 ---------- systemd/systemd.nm | 65 ++++++----- 5 files changed, 234 insertions(+), 85 deletions(-) create mode 100644 systemd/patches/0001-build-sys-Detect-whether-struct-statx-is-defined-in-.patch create mode 100644 systemd/patches/0002-meson-rename-Ddebug-to-Ddebug-extra.patch create mode 100644 systemd/patches/0003-bus-socket-Fix-line_begins-to-accept-word-matching-f.patch delete mode 100644 systemd/patches/systemd-231-ipfire-disable-tests.patch
diff --git a/systemd/patches/0001-build-sys-Detect-whether-struct-statx-is-defined-in-.patch b/systemd/patches/0001-build-sys-Detect-whether-struct-statx-is-defined-in-.patch new file mode 100644 index 000000000..5a2cf2372 --- /dev/null +++ b/systemd/patches/0001-build-sys-Detect-whether-struct-statx-is-defined-in-.patch @@ -0,0 +1,105 @@ +From 75720bff62a84896e9a0654afc7cf9408cf89a38 Mon Sep 17 00:00:00 2001 +From: Filipe Brandenburger filbranden@google.com +Date: Sun, 15 Jul 2018 22:43:35 -0700 +Subject: [PATCH] build-sys: Detect whether struct statx is defined in
- sys/stat.h
+MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit
+Starting with glibc 2.27.9000-36.fc29, include file sys/stat.h will have a +definition for struct statx, in which case include file linux/stat.h should be +avoided, in order to prevent a duplicate definition.
- In file included from ../src/basic/missing.h:18,
from ../src/basic/util.h:28,
from ../src/basic/hashmap.h:10,
from ../src/shared/bus-util.h:12,
from ../src/libsystemd/sd-bus/bus-creds.c:11:
- /usr/include/linux/stat.h:99:8: error: redefinition of ‘struct statx’
struct statx {
^~~~~
- In file included from /usr/include/sys/stat.h:446,
from ../src/basic/util.h:19,
from ../src/basic/hashmap.h:10,
from ../src/shared/bus-util.h:12,
from ../src/libsystemd/sd-bus/bus-creds.c:11:
- /usr/include/bits/statx.h:36:8: note: originally defined here
struct statx
^~~~~
+Extend our meson.build to look for struct statx when only sys/stat.h is +included and, in that case, do not include linux/stat.h anymore.
+Tested that systemd builds correctly when using a glibc version that includes a +definition for struct statx.
+glibc Fedora RPM update: +https://src.fedoraproject.org/rpms/glibc/c/28cb5d31fc1e5887912283c889689c470...
+glibc upstream commit: +https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=fd70af45528d59a00eb31... +---
- meson.build | 5 +++++
- src/basic/missing.h | 5 ++++-
- src/basic/xattr-util.c | 1 -
- 3 files changed, 9 insertions(+), 2 deletions(-)
+diff --git a/meson.build b/meson.build +index dd904c7148..68423bdfa5 100644 +--- a/meson.build ++++ b/meson.build +@@ -425,6 +425,7 @@ decl_headers = '''
- #include <sys/stat.h>
- '''
- # FIXME: key_serial_t is only defined in keyutils.h, this is bound to fail
++# FIXME: these should use -D_GNU_SOURCE, since that is defined at build time
- foreach decl : ['char16_t',
'char32_t',
+@@ -439,6 +440,10 @@ foreach decl : ['char16_t',
conf.set10('HAVE_' + decl.underscorify().to_upper(), have)
- endforeach
++conf.set10('HAVE_STRUCT_STATX_IN_SYS_STAT_H', cc.sizeof('struct statx', prefix : ''' ++#include <sys/stat.h> ++''', args : '-D_GNU_SOURCE') > 0) ++
- foreach decl : [['IFLA_INET6_ADDR_GEN_MODE', 'linux/if_link.h'],
['IN6_ADDR_GEN_MODE_STABLE_PRIVACY', 'linux/if_link.h'],
['IFLA_VRF_TABLE', 'linux/if_link.h'],
+diff --git a/src/basic/missing.h b/src/basic/missing.h +index 71a07d0574..14ad3d4914 100644 +--- a/src/basic/missing.h ++++ b/src/basic/missing.h +@@ -15,7 +15,6 @@
- #include <linux/neighbour.h>
- #include <linux/oom.h>
- #include <linux/rtnetlink.h>
+-#include <linux/stat.h>
- #include <net/ethernet.h>
- #include <stdlib.h>
- #include <sys/resource.h>
+@@ -25,6 +24,10 @@
- #include <uchar.h>
- #include <unistd.h>
++#if !HAVE_STRUCT_STATX_IN_SYS_STAT_H ++#include <linux/stat.h> ++#endif ++
- #if HAVE_AUDIT
- #include <libaudit.h>
- #endif
+diff --git a/src/basic/xattr-util.c b/src/basic/xattr-util.c +index c5c55ea846..0ee0979837 100644 +--- a/src/basic/xattr-util.c ++++ b/src/basic/xattr-util.c +@@ -2,7 +2,6 @@
- #include <errno.h>
- #include <fcntl.h>
+-#include <linux/stat.h>
- #include <stdint.h>
- #include <stdlib.h>
- #include <string.h>
diff --git a/systemd/patches/0002-meson-rename-Ddebug-to-Ddebug-extra.patch b/systemd/patches/0002-meson-rename-Ddebug-to-Ddebug-extra.patch new file mode 100644 index 000000000..81402af55 --- /dev/null +++ b/systemd/patches/0002-meson-rename-Ddebug-to-Ddebug-extra.patch @@ -0,0 +1,43 @@ +From 8f6b442a78d0b485f044742ad90b2e8271b4e68e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= zbyszek@in.waw.pl +Date: Sun, 19 Aug 2018 19:11:30 +0200 +Subject: [PATCH] meson: rename -Ddebug to -Ddebug-extra
+Meson added -Doptimization and -Ddebug options, which obviously causes +a conflict with our -Ddebug options. Let's rename it.
+Fixes #9883. +---
- meson.build | 2 +-
- meson_options.txt | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
+diff --git a/meson.build b/meson.build +index f79ac4b12..2209c935a 100644 +--- a/meson.build ++++ b/meson.build +@@ -763,7 +763,7 @@ substs.set('DEBUGTTY', get_option('debug-tty'))
- enable_debug_hashmap = false
- enable_debug_mmap_cache = false
+-foreach name : get_option('debug') ++foreach name : get_option('debug-extra')
if name == 'hashmap'
enable_debug_hashmap = true
elif name == 'mmap-cache'
+diff --git a/meson_options.txt b/meson_options.txt +index e3140c8c1..7b1f61bf4 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -45,7 +45,7 @@ option('debug-shell', type : 'string', value : '/bin/sh',
description : 'path to debug shell binary')
- option('debug-tty', type : 'string', value : '/dev/tty9',
description : 'specify the tty device for debug shell')
+-option('debug', type : 'array', choices : ['hashmap', 'mmap-cache'], value : [], ++option('debug-extra', type : 'array', choices : ['hashmap', 'mmap-cache'], value : [],
description : 'enable extra debugging')
- option('memory-accounting-default', type : 'boolean',
description : 'enable MemoryAccounting= by default')
+-- +2.14.4
diff --git a/systemd/patches/0003-bus-socket-Fix-line_begins-to-accept-word-matching-f.patch b/systemd/patches/0003-bus-socket-Fix-line_begins-to-accept-word-matching-f.patch new file mode 100644 index 000000000..1b9df6dfc --- /dev/null +++ b/systemd/patches/0003-bus-socket-Fix-line_begins-to-accept-word-matching-f.patch @@ -0,0 +1,48 @@ +From 3f10c66270b74530339b3f466c43874bb40c210f Mon Sep 17 00:00:00 2001 +From: Filipe Brandenburger filbranden@google.com +Date: Tue, 17 Jul 2018 11:32:40 -0700 +Subject: [PATCH] bus-socket: Fix line_begins() to accept word matching full
- string
+The switch to memory_startswith() changed the logic to only look for a space or +NUL byte after the matched word, but matching the full size should also be +acceptable.
+This changed the behavior of parsing of "AUTH\r\n", where m will be set to 4, +since even though the word will match, the check for it being followed by ' ' +or NUL will make line_begins() return false.
+Tested:
+- Using netcat to connect to the private socket directly:
- $ echo -ne '\0AUTH\r\n' | sudo nc -U /run/systemd/private
- REJECTED EXTERNAL ANONYMOUS
+- Running the Ignition blackbox test:
- $ sudo sh -c 'PATH=$PWD/bin/amd64:$PATH ./tests.test'
- PASS
+Fixes: d27b725abf64a19a6b2f99332b663f17ad046771 +---
- src/libsystemd/sd-bus/bus-socket.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
+diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c +index be491c957..a785a247c 100644 +--- a/src/libsystemd/sd-bus/bus-socket.c ++++ b/src/libsystemd/sd-bus/bus-socket.c +@@ -246,10 +246,7 @@ static bool line_begins(const char *s, size_t m, const char *word) {
const char *p;
p = memory_startswith(s, m, word);
+- if (!p) +- return false; +- +- return IN_SET(*p, 0, ' '); ++ return p && (p == (s + m) || *p == ' ');
- }
- static int verify_anonymous_token(sd_bus *b, const char *p, size_t l) {
+-- +2.14.4
diff --git a/systemd/patches/systemd-231-ipfire-disable-tests.patch b/systemd/patches/systemd-231-ipfire-disable-tests.patch deleted file mode 100644 index cd4bbe928..000000000 --- a/systemd/patches/systemd-231-ipfire-disable-tests.patch +++ /dev/null @@ -1,58 +0,0 @@ -diff -Nur a/Makefile.am b/Makefile.am ---- a/Makefile.am 2016-07-25 21:49:47.000000000 +0200 -+++ b/Makefile.am 2016-09-23 08:34:47.924257243 +0200 -@@ -1480,9 +1480,7 @@
- test-job-type \
- test-env-util \
- test-strbuf \
-- test-strv \
- test-path \
-- test-path-util \
- test-strxcpyx \
- test-siphash24 \
- test-unit-name \
-@@ -1541,7 +1539,6 @@
- test-capability \
- test-async \
- test-ratelimit \
-- test-condition \
- test-uid-range \
- test-locale-util \
- test-execute \
-@@ -3586,11 +3583,9 @@
- tests += \
- test-dhcp-option \
-- test-dhcp-client \
- test-dhcp-server \
- test-ipv4ll \
- test-ndisc-rs \
-- test-dhcp6-client \
- test-lldp
- # ------------------------------------------------------------------------------
-@@ -4298,16 +4293,11 @@
- catalog-remove-hook
- tests += \
-- test-journal \
- test-journal-enum \
- test-journal-send \
- test-journal-syslog \
- test-journal-match \
-- test-journal-stream \
- test-journal-init \
-- test-journal-verify \ -- test-journal-interleaving \ -- test-journal-flush \
- test-mmap-cache \
- test-catalog \
- test-audit-type
-@@ -6518,7 +6508,6 @@
- test-libudev-sym.c
- tests += \
-- test-libsystemd-sym \
- test-libudev-sym
- .PHONY: cppcheck
diff --git a/systemd/systemd.nm b/systemd/systemd.nm index a95228f15..368ecdf0e 100644 --- a/systemd/systemd.nm +++ b/systemd/systemd.nm @@ -4,8 +4,8 @@ ###############################################################################
name = systemd -version = 233 -release = 3 +version = 239 +release = 1
maintainer = Stefan Schantl stefan.schantl@ipfire.org groups = System/Base @@ -35,8 +35,6 @@ build /usr/bin/tree /usr/bin/umount
autoconf
attr-devel cryptsetup-luks-devel >= 1.4.2 dbus-develautomake
@@ -55,9 +53,10 @@ build libcap-devel libgcrypt-devel libmount-devel
libuuid-devel m4libtool
meson
pam-devel pciutils-devel python3-develninja >= 1.5
@@ -70,30 +69,36 @@ build
export LD_LIBRARY_PATH = %{DIR_APP}/.libs
- configure_options += \
PYTHON=%{python3} \
--with-sysvinit-path= \
--with-sysvrcnd-path= \
--enable-zlib \
--disable-smack \
--disable-backlight \
--disable-firstboot \
--disable-hibernate \
--disable-importd \
--disable-libiptc \
--disable-machined \
--disable-networkd \
--disable-resolved \
--disable-sysusers \
--disable-timesyncd \
--disable-timedated \
--disable-polkit \
--disable-static
configure_options = \
-Dsysvinit-path= \
-Dsysvrcnd-path= \
-Dzlib=true \
-Dsmack=false \
-Dbacklight=false \
-Dfirstboot=false \
-Dhibernate=false \
-Dimportd=false \
-Dlibiptc=false \
-Dmachined=false \
-Dnetworkd=false \
-Dresolve=false \
-Dportabled=false \
-Dsysusers=false \
-Dtimesyncd=false \
-Dtimedated=false \
-Dpolkit=false \
-Dstatic=false
prepare_cmds %{create_groups}
end
build
# Call meson and pass configure options.
meson --buildtype=plain %{configure_options} . build
./autogen.sh
# Call ninja to start build
ninja -v %{PARALLELISMFLAGS} -C build
end
test
@@ -104,10 +109,16 @@ build systemd-machine-id-setup
# Run the testsuite.
make check || true
endninja test -v %{PARALLELISMFLAGS} -C build || true
- install_cmds
- install
# Export destdir.
export DESTDIR=%{BUILDROOT}
# Call ninja to perform installation
ninja install -v %{PARALLELISMFLAGS} -C build
- # Create folder in log to store the journal. mkdir -pv %{BUILDROOT}/var/log/journal