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 - automake attr-devel cryptsetup-luks-devel >= 1.4.2 dbus-devel @@ -55,9 +53,10 @@ build libcap-devel libgcrypt-devel libmount-devel - libtool libuuid-devel m4 + meson + ninja >= 1.5 pam-devel pciutils-devel python3-devel @@ -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 + ninja test -v %{PARALLELISMFLAGS} -C build || true end
- 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