[5/5] systemd: Update to version 239

Message ID 20181021193534.31718-5-stefan.schantl@ipfire.org
State Accepted
Headers
Series [1/5] python-setuputils: Update to 40.4.3 |

Commit Message

Stefan Schantl Oct. 22, 2018, 6:35 a.m. UTC
  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
  

Comments

Michael Tremer Oct. 22, 2018, 7:56 a.m. UTC | #1
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/28cb5d31fc1e5887912283c889689c47076278ae
> +
> +glibc upstream commit:
> +https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=fd70af45528d59a00eb3190ef6706cb299488fcd
> +---
> + 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
>
  

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/28cb5d31fc1e5887912283c889689c47076278ae
+
+glibc upstream commit:
+https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=fd70af45528d59a00eb3190ef6706cb299488fcd
+---
+ 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