On Tuesday, May 25, 2021, Alexander Kanavin <alex.kanavin@gmail.com> wrote:I have to ask: should musl patches for systemd be maintained separately? It's a big pile, they aren't accepted by upstream, they aren't tested on the AB (hence I didn't even notice the breakage), and they cause rebase problems at every version upgrade.I would propose that a separate recipe is made that takes the sources from a repo, rather than carry the patches in oe-core.It’s fine as it isAlexOn Tue, 25 May 2021 at 03:41, Khem Raj <raj.khem@gmail.com> wrote:since master-next broke my CI, I have sent a fix on top of this.
Please include that
On Mon, May 24, 2021 at 5:18 PM Khem Raj <raj.khem@gmail.com> wrote:
>
> Fails to compile for musl
>
> https://errors.yoctoproject.org/Errors/Details/585507/
>
> src/basic/percent-util.c source file needs to include
>
> #include "missing_stdlib.h"
>
> like other files in 0005-src-basic-missing.h-check-for-missing-strndupa.patch
>
> On Mon, May 24, 2021 at 2:14 AM Alexander Kanavin
> <alex.kanavin@gmail.com> wrote:
> >
> > Drop backports:
> > 48fff0a2af3f62acd446ebec8081b039b72caad8.patch
> > 7c5fd25119a495009ea62f79e5daec34cc464628.patch
> > 0001-analyze-resolve-executable-path-if-it-is-relative.patch
> > 0001-analyze-resolve-executable-path-if-it-is-relative.patch
> >
> > Drop 0027-proc-dont-trigger-mount-error-with-invalid-options-o.patch
> > as difficult to rebase; please resend if you feel strongly that
> > it is needed.
> >
> > Rebase the big pile of musl patches.
> >
> > Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > ---
> > ...f0a2af3f62acd446ebec8081b039b72caad8.patch | 179 --------------
> > ...d25119a495009ea62f79e5daec34cc464628.patch | 53 ----
> > ...md-boot_247.6.bb => systemd-boot_248.3.bb} | 0
> > meta/recipes-core/systemd/systemd.inc | 6 +-
> > ...ve-executable-path-if-it-is-relative.patch | 39 ---
> > ...chvt-as-non-root-user-without-polkit.patch | 227 ------------------
> > ...002-don-t-use-glibc-specific-qsort_r.patch | 29 ++-
> > ...dd-__compare_fn_t-and-comparison_fn_.patch | 26 +-
> > ...k-parse_printf_format-implementation.patch | 46 ++--
> > ...missing.h-check-for-missing-strndupa.patch | 204 ++++++++++++----
> > .../0006-Include-netinet-if_ether.h.patch | 56 +++--
> > ...OB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch | 17 +-
> > ...008-add-missing-FTW_-macros-for-musl.patch | 8 +-
> > ..._register_atfork-for-non-glibc-build.patch | 12 +-
> > ...10-Use-uintmax_t-for-handling-rlim_t.patch | 18 +-
> > ...sable-tests-for-missing-typedefs-in-.patch | 9 +-
> > ...T_SYMLINK_NOFOLLOW-flag-to-faccessat.patch | 19 +-
> > ...patible-basename-for-non-glibc-syste.patch | 11 +-
> > ...uffering-when-writing-to-oom_score_a.patch | 12 +-
> > ...compliant-strerror_r-from-GNU-specif.patch | 46 ++--
> > ...S_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch | 8 +-
> > ...ype.h-add-__compar_d_fn_t-definition.patch | 8 +-
> > ...definition-of-prctl_mm_map-structure.patch | 8 +-
> > .../systemd/0019-Handle-missing-LOCK_EX.patch | 10 +-
> > ...ible-pointer-type-struct-sockaddr_un.patch | 12 +-
> > .../0021-test-json.c-define-M_PIl.patch | 8 +-
> > ...-not-disable-buffer-in-writing-files.patch | 116 ++++-----
> > .../0025-Handle-__cpu_mask-usage.patch | 8 +-
> > .../systemd/0026-Handle-missing-gshadow.patch | 20 +-
> > ...r-mount-error-with-invalid-options-o.patch | 97 --------
> > ...l.h-Define-MIPS-ABI-defines-for-musl.patch | 16 +-
> > .../{systemd_247.6.bb => systemd_248.3.bb} | 11 +-
> > 32 files changed, 388 insertions(+), 951 deletions(-)
> > delete mode 100644 meta/recipes-core/systemd/files/48fff0a2af3f62acd446ebec8081b039b72caad8.patch
> > delete mode 100644 meta/recipes-core/systemd/files/7c5fd25119a495009ea62f79e5daec34cc464628.patch
> > rename meta/recipes-core/systemd/{systemd-boot_247.6.bb => systemd-boot_248.3.bb} (100%)
> > delete mode 100644 meta/recipes-core/systemd/systemd/0001-analyze-resolve-executable-path-if-it-is-relative.patch
> > delete mode 100644 meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch
> > delete mode 100644 meta/recipes-core/systemd/systemd/0027-proc-dont-trigger-mount-error-with-invalid-options-o.patch
> > rename meta/recipes-core/systemd/{systemd_247.6.bb => systemd_248.3.bb} (99%)
> >
> > diff --git a/meta/recipes-core/systemd/files/48fff0a2af3f62acd446ebec8081b039b72caad8.patch b/meta/recipes-core/systemd/files/48fff0a2af3f62acd446ebec8081b039b72caad8.patch
> > deleted file mode 100644
> > index e3ce296741..0000000000
> > --- a/meta/recipes-core/systemd/files/48fff0a2af3f62acd446ebec8081b039b72caad8.patch
> > +++ /dev/null
> > @@ -1,179 +0,0 @@
> > -From 48fff0a2af3f62acd446ebec8081b039b72caad8 Mon Sep 17 00:00:00 2001
> > -From: Daan De Meyer <daan.j.demeyer@gmail.com>
> > -Date: Fri, 12 Mar 2021 22:09:44 +0000
> > -Subject: [PATCH] boot: Move console declarations to missing_efi.h
> > -
> > -These were added to eficonex.h in gnu-efi 3.0.13. Let's move them
> > -to missing_efi.h behind an appropriate guard to fix the build with
> > -recent versions of gnu-efi.
> > -
> > -(cherry picked from commit 95ba433a5f34baf92921fb58051bc8241f908c0e)
> > -
> > -Upstream-Status: Backport
> > -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > ----
> > - src/boot/efi/console.c | 57 --------------------------------
> > - src/boot/efi/console.h | 6 +---
> > - src/boot/efi/missing_efi.h | 67 ++++++++++++++++++++++++++++++++++++++
> > - 3 files changed, 68 insertions(+), 62 deletions(-)
> > -
> > -diff --git a/src/boot/efi/console.c b/src/boot/efi/console.c
> > -index 2dd4543d51..1d6dfeeea2 100644
> > ---- a/src/boot/efi/console.c
> > -+++ b/src/boot/efi/console.c
> > -@@ -9,63 +9,6 @@
> > - #define SYSTEM_FONT_WIDTH 8
> > - #define SYSTEM_FONT_HEIGHT 19
> > -
> > --#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
> > -- { 0xdd9e7534, 0x7762, 0x4698, { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } }
> > --
> > --struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
> > --
> > --typedef EFI_STATUS (EFIAPI *EFI_INPUT_RESET_EX)(
> > -- struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -- BOOLEAN ExtendedVerification
> > --);
> > --
> > --typedef UINT8 EFI_KEY_TOGGLE_STATE;
> > --
> > --typedef struct {
> > -- UINT32 KeyShiftState;
> > -- EFI_KEY_TOGGLE_STATE KeyToggleState;
> > --} EFI_KEY_STATE;
> > --
> > --typedef struct {
> > -- EFI_INPUT_KEY Key;
> > -- EFI_KEY_STATE KeyState;
> > --} EFI_KEY_DATA;
> > --
> > --typedef EFI_STATUS (EFIAPI *EFI_INPUT_READ_KEY_EX)(
> > -- struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -- EFI_KEY_DATA *KeyData
> > --);
> > --
> > --typedef EFI_STATUS (EFIAPI *EFI_SET_STATE)(
> > -- struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -- EFI_KEY_TOGGLE_STATE *KeyToggleState
> > --);
> > --
> > --typedef EFI_STATUS (EFIAPI *EFI_KEY_NOTIFY_FUNCTION)(
> > -- EFI_KEY_DATA *KeyData
> > --);
> > --
> > --typedef EFI_STATUS (EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY)(
> > -- struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -- EFI_KEY_DATA KeyData,
> > -- EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,
> > -- VOID **NotifyHandle
> > --);
> > --
> > --typedef EFI_STATUS (EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY)(
> > -- struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -- VOID *NotificationHandle
> > --);
> > --
> > --typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL {
> > -- EFI_INPUT_RESET_EX Reset;
> > -- EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx;
> > -- EFI_EVENT WaitForKeyEx;
> > -- EFI_SET_STATE SetState;
> > -- EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify;
> > -- EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify;
> > --} EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
> > --
> > - EFI_STATUS console_key_read(UINT64 *key, BOOLEAN wait) {
> > - EFI_GUID EfiSimpleTextInputExProtocolGuid = EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID;
> > - static EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *TextInputEx;
> > -diff --git a/src/boot/efi/console.h b/src/boot/efi/console.h
> > -index 41df3a406e..2c69af552a 100644
> > ---- a/src/boot/efi/console.h
> > -+++ b/src/boot/efi/console.h
> > -@@ -1,11 +1,7 @@
> > - /* SPDX-License-Identifier: LGPL-2.1-or-later */
> > - #pragma once
> > -
> > --#define EFI_SHIFT_STATE_VALID 0x80000000
> > --#define EFI_RIGHT_CONTROL_PRESSED 0x00000004
> > --#define EFI_LEFT_CONTROL_PRESSED 0x00000008
> > --#define EFI_RIGHT_ALT_PRESSED 0x00000010
> > --#define EFI_LEFT_ALT_PRESSED 0x00000020
> > -+#include "missing_efi.h"
> > -
> > - #define EFI_CONTROL_PRESSED (EFI_RIGHT_CONTROL_PRESSED|EFI_LEFT_CONTROL_PRESSED)
> > - #define EFI_ALT_PRESSED (EFI_RIGHT_ALT_PRESSED|EFI_LEFT_ALT_PRESSED)
> > -diff --git a/src/boot/efi/missing_efi.h b/src/boot/efi/missing_efi.h
> > -index 1b838af2a4..b6aae1eb5b 100644
> > ---- a/src/boot/efi/missing_efi.h
> > -+++ b/src/boot/efi/missing_efi.h
> > -@@ -53,3 +53,70 @@ typedef struct _EFI_RNG_PROTOCOL {
> > - } EFI_RNG_PROTOCOL;
> > -
> > - #endif
> > -+
> > -+#ifndef EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID
> > -+
> > -+#define EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL_GUID \
> > -+ { 0xdd9e7534, 0x7762, 0x4698, { 0x8c, 0x14, 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa } }
> > -+
> > -+#define EFI_SHIFT_STATE_VALID 0x80000000
> > -+#define EFI_RIGHT_CONTROL_PRESSED 0x00000004
> > -+#define EFI_LEFT_CONTROL_PRESSED 0x00000008
> > -+#define EFI_RIGHT_ALT_PRESSED 0x00000010
> > -+#define EFI_LEFT_ALT_PRESSED 0x00000020
> > -+
> > -+struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
> > -+
> > -+typedef EFI_STATUS (EFIAPI *EFI_INPUT_RESET_EX)(
> > -+ struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -+ BOOLEAN ExtendedVerification
> > -+);
> > -+
> > -+typedef UINT8 EFI_KEY_TOGGLE_STATE;
> > -+
> > -+typedef struct {
> > -+ UINT32 KeyShiftState;
> > -+ EFI_KEY_TOGGLE_STATE KeyToggleState;
> > -+} EFI_KEY_STATE;
> > -+
> > -+typedef struct {
> > -+ EFI_INPUT_KEY Key;
> > -+ EFI_KEY_STATE KeyState;
> > -+} EFI_KEY_DATA;
> > -+
> > -+typedef EFI_STATUS (EFIAPI *EFI_INPUT_READ_KEY_EX)(
> > -+ struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -+ EFI_KEY_DATA *KeyData
> > -+);
> > -+
> > -+typedef EFI_STATUS (EFIAPI *EFI_SET_STATE)(
> > -+ struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -+ EFI_KEY_TOGGLE_STATE *KeyToggleState
> > -+);
> > -+
> > -+typedef EFI_STATUS (EFIAPI *EFI_KEY_NOTIFY_FUNCTION)(
> > -+ EFI_KEY_DATA *KeyData
> > -+);
> > -+
> > -+typedef EFI_STATUS (EFIAPI *EFI_REGISTER_KEYSTROKE_NOTIFY)(
> > -+ struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -+ EFI_KEY_DATA KeyData,
> > -+ EFI_KEY_NOTIFY_FUNCTION KeyNotificationFunction,
> > -+ VOID **NotifyHandle
> > -+);
> > -+
> > -+typedef EFI_STATUS (EFIAPI *EFI_UNREGISTER_KEYSTROKE_NOTIFY)(
> > -+ struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL *This,
> > -+ VOID *NotificationHandle
> > -+);
> > -+
> > -+typedef struct _EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL {
> > -+ EFI_INPUT_RESET_EX Reset;
> > -+ EFI_INPUT_READ_KEY_EX ReadKeyStrokeEx;
> > -+ EFI_EVENT WaitForKeyEx;
> > -+ EFI_SET_STATE SetState;
> > -+ EFI_REGISTER_KEYSTROKE_NOTIFY RegisterKeyNotify;
> > -+ EFI_UNREGISTER_KEYSTROKE_NOTIFY UnregisterKeyNotify;
> > -+} EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL;
> > -+
> > -+#endif
> > diff --git a/meta/recipes-core/systemd/files/7c5fd25119a495009ea62f79e5daec34cc464628.patch b/meta/recipes-core/systemd/files/7c5fd25119a495009ea62f79e5daec34cc464628.patch
> > deleted file mode 100644
> > index ae449791f1..0000000000
> > --- a/meta/recipes-core/systemd/files/7c5fd25119a495009ea62f79e5daec34cc464628.patch
> > +++ /dev/null
> > @@ -1,53 +0,0 @@
> > -From 7c5fd25119a495009ea62f79e5daec34cc464628 Mon Sep 17 00:00:00 2001
> > -From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
> > -Date: Mon, 12 Apr 2021 14:03:32 +0200
> > -Subject: [PATCH] meson: do not fail if rsync is not installed with meson
> > - 0.57.2
> > -
> > -https://github.com/mesonbuild/meson/issues/8641
> > -
> > -Our CI started to fail. Even if the change is reverted in meson,
> > -we need a quick workaround here.
> > -
> > -Upstream-Status: Backport
> > -Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
> > ----
> > - man/meson.build | 25 ++++++++++++++-----------
> > - 1 file changed, 14 insertions(+), 11 deletions(-)
> > -
> > -diff --git a/man/meson.build b/man/meson.build
> > -index 3cae8446cda..f9c4b83dc81 100644
> > ---- a/man/meson.build
> > -+++ b/man/meson.build
> > -@@ -184,17 +184,20 @@ html = custom_target(
> > - depends : html_pages,
> > - command : ['echo'])
> > -
> > --run_target(
> > -- 'doc-sync',
> > -- depends : man_pages + html_pages,
> > -- command : ['rsync', '-rlv',
> > -- '--delete-excluded',
> > -- '--include=man',
> > -- '--include=*.html',
> > -- '--exclude=*',
> > -- '--omit-dir-times',
> > -- meson.current_build_dir(),
> > -- get_option('www-target')])
> > -+rsync = find_program('rsync', required : false)
> > -+if rsync.found()
> > -+ run_target(
> > -+ 'doc-sync',
> > -+ depends : man_pages + html_pages,
> > -+ command : [rsync, '-rlv',
> > -+ '--delete-excluded',
> > -+ '--include=man',
> > -+ '--include=*.html',
> > -+ '--exclude=*',
> > -+ '--omit-dir-times',
> > -+ meson.current_build_dir(),
> > -+ get_option('www-target')])
> > -+endif
> > -
> > - ############################################################
> > -
> > diff --git a/meta/recipes-core/systemd/systemd-boot_247.6.bb b/meta/recipes-core/systemd/systemd-boot_248.3.bb
> > similarity index 100%
> > rename from meta/recipes-core/systemd/systemd-boot_247.6.bb
> > rename to meta/recipes-core/systemd/systemd-boot_248.3.bb
> > diff --git a/meta/recipes-core/systemd/systemd.inc b/meta/recipes-core/systemd/systemd.inc
> > index 88dddb309c..0524a25008 100644
> > --- a/meta/recipes-core/systemd/systemd.inc
> > +++ b/meta/recipes-core/systemd/systemd.inc
> > @@ -14,11 +14,9 @@ LICENSE = "GPLv2 & LGPLv2.1"
> > LIC_FILES_CHKSUM = "file://LICENSE.GPL2;md5=751419260aa954499f7abaabaa882bbe \
> > file://LICENSE.LGPL2.1;md5=4fbd65380cdd255951079008b364516c"
> >
> > -SRCREV = "17472dca0160cbe7b807ca648475fd70d0d62fe5"
> > -SRCBRANCH = "v247-stable"
> > +SRCREV = "37c4cfde0ce613f0f00544d3f4e2e72bf93d9c76"
> > +SRCBRANCH = "v248-stable"
> > SRC_URI = "git://github.com/systemd/systemd-stable.git;protocol=git;branch=${SRCBRANCH} \
> > - file://7c5fd25119a495009ea62f79e5daec34cc464628.patch \
> > - file://48fff0a2af3f62acd446ebec8081b039b72caad8.patch \
> > "
> >
> > S = "${WORKDIR}/git"
> > diff --git a/meta/recipes-core/systemd/systemd/0001-analyze-resolve-executable-path-if-it-is-relative.patch b/meta/recipes-core/systemd/systemd/0001-analyze-resolve-executable-path-if-it-is-relative.patch
> > deleted file mode 100644
> > index fd7f94a61d..0000000000
> > --- a/meta/recipes-core/systemd/systemd/0001-analyze-resolve-executable-path-if-it-is-relative.patch
> > +++ /dev/null
> > @@ -1,39 +0,0 @@
> > -From b9b7a8e3825f0433e120f7a6d7d5d635a839cab9 Mon Sep 17 00:00:00 2001
> > -From: Mingli Yu <mingli.yu@windriver.com>
> > -Date: Thu, 21 Jan 2021 06:19:44 +0000
> > -Subject: [PATCH] analyze: resolve executable path if it is relative
> > -
> > -Upstream-Status: Backport [https://github.com/systemd/systemd/commit/f1fb046a985521f7d4a662f02546686ff20b7e5d]
> > -
> > -Signed-off-by: Mingli Yu <mingli.yu@windriver.com>
> > ----
> > - src/analyze/analyze-verify.c | 7 +++++--
> > - 1 file changed, 5 insertions(+), 2 deletions(-)
> > -
> > -diff --git a/src/analyze/analyze-verify.c b/src/analyze/analyze-verify.c
> > -index a9c89173bf..969523df18 100644
> > ---- a/src/analyze/analyze-verify.c
> > -+++ b/src/analyze/analyze-verify.c
> > -@@ -115,14 +115,17 @@ static int verify_socket(Unit *u) {
> > - }
> > -
> > - int verify_executable(Unit *u, const ExecCommand *exec) {
> > -+ int r;
> > -+
> > - if (!exec)
> > - return 0;
> > -
> > - if (exec->flags & EXEC_COMMAND_IGNORE_FAILURE)
> > - return 0;
> > -
> > -- if (access(exec->path, X_OK) < 0)
> > -- return log_unit_error_errno(u, errno, "Command %s is not executable: %m", exec->path);
> > -+ r = find_executable_full(exec->path, false, NULL);
> > -+ if (r < 0)
> > -+ return log_unit_error_errno(u, r, "Command %s is not executable: %m", exec->path);
> > -
> > - return 0;
> > - }
> > ---
> > -2.26.2
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch b/meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch
> > deleted file mode 100644
> > index 89ef39bc3e..0000000000
> > --- a/meta/recipes-core/systemd/systemd/0001-logind-Restore-chvt-as-non-root-user-without-polkit.patch
> > +++ /dev/null
> > @@ -1,227 +0,0 @@
> > -From 150d9cade6d475570395cb418b824524dead9577 Mon Sep 17 00:00:00 2001
> > -From: Joshua Watt <JPEWhacker@gmail.com>
> > -Date: Fri, 30 Oct 2020 08:15:43 -0500
> > -Subject: [PATCH] logind: Restore chvt as non-root user without polkit
> > -
> > -4acf0cfd2f ("logind: check PolicyKit before allowing VT switch") broke
> > -the ability to write user sessions that run graphical sessions (e.g.
> > -weston/X11). This was partially amended in 19bb87fbfa ("login: allow
> > -non-console sessions to change vt") by changing the default PolicyKit
> > -policy so that non-root users are again allowed to switch the VT. This
> > -makes the policy when PolKit is not enabled (as on many embedded
> > -systems) match the default PolKit policy and allows launching graphical
> > -sessions as a non-root user.
> > -
> > -Closes #17473
> > ----
> > - src/login/logind-dbus.c | 11 ++-------
> > - src/login/logind-polkit.c | 26 +++++++++++++++++++++
> > - src/login/logind-polkit.h | 10 ++++++++
> > - src/login/logind-seat-dbus.c | 41 ++++-----------------------------
> > - src/login/logind-session-dbus.c | 11 ++-------
> > - src/login/meson.build | 1 +
> > - 6 files changed, 46 insertions(+), 54 deletions(-)
> > - create mode 100644 src/login/logind-polkit.c
> > - create mode 100644 src/login/logind-polkit.h
> > -
> > -diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
> > -index 0f83ed99bc..a3765d88ba 100644
> > ---- a/src/login/logind-dbus.c
> > -+++ b/src/login/logind-dbus.c
> > -@@ -30,6 +30,7 @@
> > - #include "format-util.h"
> > - #include "fs-util.h"
> > - #include "logind-dbus.h"
> > -+#include "logind-polkit.h"
> > - #include "logind-seat-dbus.h"
> > - #include "logind-session-dbus.h"
> > - #include "logind-user-dbus.h"
> > -@@ -1047,15 +1048,7 @@ static int method_activate_session_on_seat(sd_bus_message *message, void *userda
> > - return sd_bus_error_setf(error, BUS_ERROR_SESSION_NOT_ON_SEAT,
> > - "Session %s not on seat %s", session_name, seat_name);
> > -
> > -- r = bus_verify_polkit_async(
> > -- message,
> > -- CAP_SYS_ADMIN,
> > -- "org.freedesktop.login1.chvt",
> > -- NULL,
> > -- false,
> > -- UID_INVALID,
> > -- &m->polkit_registry,
> > -- error);
> > -+ r = check_polkit_chvt(message, m, error);
> > - if (r < 0)
> > - return r;
> > - if (r == 0)
> > -diff --git a/src/login/logind-polkit.c b/src/login/logind-polkit.c
> > -new file mode 100644
> > -index 0000000000..9072570cc6
> > ---- /dev/null
> > -+++ b/src/login/logind-polkit.c
> > -@@ -0,0 +1,26 @@
> > -+/* SPDX-License-Identifier: LGPL-2.1+ */
> > -+
> > -+#include "bus-polkit.h"
> > -+#include "logind-polkit.h"
> > -+#include "missing_capability.h"
> > -+#include "user-util.h"
> > -+
> > -+int check_polkit_chvt(sd_bus_message *message, Manager *manager, sd_bus_error *error) {
> > -+#if ENABLE_POLKIT
> > -+ return bus_verify_polkit_async(
> > -+ message,
> > -+ CAP_SYS_ADMIN,
> > -+ "org.freedesktop.login1.chvt",
> > -+ NULL,
> > -+ false,
> > -+ UID_INVALID,
> > -+ &manager->polkit_registry,
> > -+ error);
> > -+#else
> > -+ /* Allow chvt when polkit is not present. This allows a service to start a graphical session as a
> > -+ * non-root user when polkit is not compiled in, matching the default polkit policy */
> > -+ return 1;
> > -+#endif
> > -+}
> > -+
> > -+
> > -diff --git a/src/login/logind-polkit.h b/src/login/logind-polkit.h
> > -new file mode 100644
> > -index 0000000000..476c077a8a
> > ---- /dev/null
> > -+++ b/src/login/logind-polkit.h
> > -@@ -0,0 +1,10 @@
> > -+/* SPDX-License-Identifier: LGPL-2.1+ */
> > -+#pragma once
> > -+
> > -+#include "sd-bus.h"
> > -+
> > -+#include "bus-object.h"
> > -+#include "logind.h"
> > -+
> > -+int check_polkit_chvt(sd_bus_message *message, Manager *manager, sd_bus_error *error);
> > -+
> > -diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c
> > -index a945132284..f22e9e2734 100644
> > ---- a/src/login/logind-seat-dbus.c
> > -+++ b/src/login/logind-seat-dbus.c
> > -@@ -9,6 +9,7 @@
> > - #include "bus-polkit.h"
> > - #include "bus-util.h"
> > - #include "logind-dbus.h"
> > -+#include "logind-polkit.h"
> > - #include "logind-seat-dbus.h"
> > - #include "logind-seat.h"
> > - #include "logind-session-dbus.h"
> > -@@ -179,15 +180,7 @@ static int method_activate_session(sd_bus_message *message, void *userdata, sd_b
> > - if (session->seat != s)
> > - return sd_bus_error_setf(error, BUS_ERROR_SESSION_NOT_ON_SEAT, "Session %s not on seat %s", name, s->id);
> > -
> > -- r = bus_verify_polkit_async(
> > -- message,
> > -- CAP_SYS_ADMIN,
> > -- "org.freedesktop.login1.chvt",
> > -- NULL,
> > -- false,
> > -- UID_INVALID,
> > -- &s->manager->polkit_registry,
> > -- error);
> > -+ r = check_polkit_chvt(message, s->manager, error);
> > - if (r < 0)
> > - return r;
> > - if (r == 0)
> > -@@ -215,15 +208,7 @@ static int method_switch_to(sd_bus_message *message, void *userdata, sd_bus_erro
> > - if (to <= 0)
> > - return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid virtual terminal");
> > -
> > -- r = bus_verify_polkit_async(
> > -- message,
> > -- CAP_SYS_ADMIN,
> > -- "org.freedesktop.login1.chvt",
> > -- NULL,
> > -- false,
> > -- UID_INVALID,
> > -- &s->manager->polkit_registry,
> > -- error);
> > -+ r = check_polkit_chvt(message, s->manager, error);
> > - if (r < 0)
> > - return r;
> > - if (r == 0)
> > -@@ -243,15 +228,7 @@ static int method_switch_to_next(sd_bus_message *message, void *userdata, sd_bus
> > - assert(message);
> > - assert(s);
> > -
> > -- r = bus_verify_polkit_async(
> > -- message,
> > -- CAP_SYS_ADMIN,
> > -- "org.freedesktop.login1.chvt",
> > -- NULL,
> > -- false,
> > -- UID_INVALID,
> > -- &s->manager->polkit_registry,
> > -- error);
> > -+ r = check_polkit_chvt(message, s->manager, error);
> > - if (r < 0)
> > - return r;
> > - if (r == 0)
> > -@@ -271,15 +248,7 @@ static int method_switch_to_previous(sd_bus_message *message, void *userdata, sd
> > - assert(message);
> > - assert(s);
> > -
> > -- r = bus_verify_polkit_async(
> > -- message,
> > -- CAP_SYS_ADMIN,
> > -- "org.freedesktop.login1.chvt",
> > -- NULL,
> > -- false,
> > -- UID_INVALID,
> > -- &s->manager->polkit_registry,
> > -- error);
> > -+ r = check_polkit_chvt(message, s->manager, error);
> > - if (r < 0)
> > - return r;
> > - if (r == 0)
> > -diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c
> > -index ccc5ac8df2..57c8a4e900 100644
> > ---- a/src/login/logind-session-dbus.c
> > -+++ b/src/login/logind-session-dbus.c
> > -@@ -11,6 +11,7 @@
> > - #include "fd-util.h"
> > - #include "logind-brightness.h"
> > - #include "logind-dbus.h"
> > -+#include "logind-polkit.h"
> > - #include "logind-seat-dbus.h"
> > - #include "logind-session-dbus.h"
> > - #include "logind-session-device.h"
> > -@@ -192,15 +193,7 @@ int bus_session_method_activate(sd_bus_message *message, void *userdata, sd_bus_
> > - assert(message);
> > - assert(s);
> > -
> > -- r = bus_verify_polkit_async(
> > -- message,
> > -- CAP_SYS_ADMIN,
> > -- "org.freedesktop.login1.chvt",
> > -- NULL,
> > -- false,
> > -- UID_INVALID,
> > -- &s->manager->polkit_registry,
> > -- error);
> > -+ r = check_polkit_chvt(message, s->manager, error);
> > - if (r < 0)
> > - return r;
> > - if (r == 0)
> > -diff --git a/src/login/meson.build b/src/login/meson.build
> > -index 0a7d3d5440..7e46be2add 100644
> > ---- a/src/login/meson.build
> > -+++ b/src/login/meson.build
> > -@@ -26,6 +26,7 @@ liblogind_core_sources = files('''
> > - logind-device.h
> > - logind-inhibit.c
> > - logind-inhibit.h
> > -+ logind-polkit.c
> > - logind-seat-dbus.c
> > - logind-seat-dbus.h
> > - logind-seat.c
> > ---
> > -2.28.0
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch b/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
> > index d856bcb583..4cdf66e767 100644
> > --- a/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
> > +++ b/meta/recipes-core/systemd/systemd/0002-don-t-use-glibc-specific-qsort_r.patch
> > @@ -1,7 +1,7 @@
> > -From 66ece0b870b3a34fdabc48b88437e6cc354e9fce Mon Sep 17 00:00:00 2001
> > +From 159c53612444ec1df492bae528a5a88a275b93bf Mon Sep 17 00:00:00 2001
> > From: Chen Qi <Qi.Chen@windriver.com>
> > Date: Mon, 25 Feb 2019 13:41:41 +0800
> > -Subject: [PATCH 02/26] don't use glibc-specific qsort_r
> > +Subject: [PATCH] don't use glibc-specific qsort_r
> >
> > Upstream-Status: Inappropriate [musl specific]
> >
> > @@ -12,6 +12,7 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
> > [Rebased for v247]
> > Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > +
> > ---
> > src/basic/sort-util.h | 14 ------------
> > src/libsystemd/sd-hwdb/hwdb-util.c | 19 +++++++++++-----
> > @@ -19,14 +20,13 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > 3 files changed, 38 insertions(+), 31 deletions(-)
> >
> > diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
> > -index 1d194a1f04..3394c9eb72 100644
> > +index 49586a4a24..d92a5ab0ed 100644
> > --- a/src/basic/sort-util.h
> > +++ b/src/basic/sort-util.h
> > -@@ -54,17 +54,3 @@ static inline void _qsort_safe(void *base, size_t nmemb, size_t size, __compar_f
> > - int (*_func_)(const typeof(p[0])*, const typeof(p[0])*) = func; \
> > +@@ -55,18 +55,4 @@ static inline void _qsort_safe(void *base, size_t nmemb, size_t size, __compar_f
> > _qsort_safe((p), (n), sizeof((p)[0]), (__compar_fn_t) _func_); \
> > })
> > --
> > +
> > -static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_d_fn_t compar, void *userdata) {
> > - if (nmemb <= 1)
> > - return;
> > @@ -40,11 +40,13 @@ index 1d194a1f04..3394c9eb72 100644
> > - int (*_func_)(const typeof(p[0])*, const typeof(p[0])*, typeof(userdata)) = func; \
> > - qsort_r_safe((p), (n), sizeof((p)[0]), (__compar_d_fn_t) _func_, userdata); \
> > - })
> > +-
> > + int cmp_int(const int *a, const int *b);
> > diff --git a/src/libsystemd/sd-hwdb/hwdb-util.c b/src/libsystemd/sd-hwdb/hwdb-util.c
> > -index 4c94ba9c88..95495dba6d 100644
> > +index fd45ff0f54..ac4b63c49b 100644
> > --- a/src/libsystemd/sd-hwdb/hwdb-util.c
> > +++ b/src/libsystemd/sd-hwdb/hwdb-util.c
> > -@@ -126,9 +126,13 @@ static void trie_free(struct trie *trie) {
> > +@@ -126,9 +126,13 @@ static struct trie* trie_free(struct trie *trie) {
> >
> > DEFINE_TRIVIAL_CLEANUP_FUNC(struct trie*, trie_free);
> >
> > @@ -85,10 +87,10 @@ index 4c94ba9c88..95495dba6d 100644
> > }
> >
> > diff --git a/src/shared/format-table.c b/src/shared/format-table.c
> > -index a13a198b7a..bce10bc607 100644
> > +index dccb796b26..c3ab8ac296 100644
> > --- a/src/shared/format-table.c
> > +++ b/src/shared/format-table.c
> > -@@ -1243,30 +1243,32 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t
> > +@@ -1290,30 +1290,32 @@ static int cell_data_compare(TableData *a, size_t index_a, TableData *b, size_t
> > return CMP(index_a, index_b);
> > }
> >
> > @@ -131,7 +133,7 @@ index a13a198b7a..bce10bc607 100644
> > }
> >
> > /* Order identical lines by the order there were originally added in */
> > -@@ -1844,7 +1846,12 @@ int table_print(Table *t, FILE *f) {
> > +@@ -1952,7 +1954,12 @@ int table_print(Table *t, FILE *f) {
> > for (size_t i = 0; i < n_rows; i++)
> > sorted[i] = i * t->n_columns;
> >
> > @@ -145,7 +147,7 @@ index a13a198b7a..bce10bc607 100644
> > }
> >
> > if (t->display_map)
> > -@@ -2440,7 +2447,12 @@ int table_to_json(Table *t, JsonVariant **ret) {
> > +@@ -2580,7 +2587,12 @@ int table_to_json(Table *t, JsonVariant **ret) {
> > for (size_t i = 0; i < n_rows; i++)
> > sorted[i] = i * t->n_columns;
> >
> > @@ -159,6 +161,3 @@ index a13a198b7a..bce10bc607 100644
> > }
> >
> > if (t->display_map)
> > ---
> > -2.27.0
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch b/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
> > index f43a22aa8b..9b1768d9ca 100644
> > --- a/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
> > +++ b/meta/recipes-core/systemd/systemd/0003-missing_type.h-add-__compare_fn_t-and-comparison_fn_.patch
> > @@ -1,7 +1,7 @@
> > -From 9f0d5996bbb2db3679a4075fa8301750b786c03b Mon Sep 17 00:00:00 2001
> > +From 4afb8adc83348bf75964fc10af7902e04dd62637 Mon Sep 17 00:00:00 2001
> > From: Chen Qi <Qi.Chen@windriver.com>
> > Date: Mon, 25 Feb 2019 13:55:12 +0800
> > -Subject: [PATCH 03/26] missing_type.h: add __compare_fn_t and comparison_fn_t
> > +Subject: [PATCH] missing_type.h: add __compare_fn_t and comparison_fn_t
> >
> > Make it work with musl where comparison_fn_t and __compare_fn_t
> > is not provided.
> > @@ -13,11 +13,12 @@ Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
> > Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > [Rebased for v242]
> > Signed-off-by: Andrej Valek <andrej.valek@siemens.com>
> > +
> > ---
> > - src/basic/missing_type.h | 9 +++++++++
> > - src/basic/sort-util.h | 1 +
> > - src/core/kmod-setup.c | 1 +
> > - src/journal/catalog.c | 1 +
> > + src/basic/missing_type.h | 9 +++++++++
> > + src/basic/sort-util.h | 1 +
> > + src/core/kmod-setup.c | 1 +
> > + src/libsystemd/sd-journal/catalog.c | 1 +
> > 4 files changed, 12 insertions(+)
> >
> > diff --git a/src/basic/missing_type.h b/src/basic/missing_type.h
> > @@ -38,7 +39,7 @@ index f6233090a9..aeaf6ad5ec 100644
> > +typedef int (*__compar_fn_t)(const void *, const void *);
> > +#endif
> > diff --git a/src/basic/sort-util.h b/src/basic/sort-util.h
> > -index 3394c9eb72..d9cb2aecb6 100644
> > +index d92a5ab0ed..a63867c716 100644
> > --- a/src/basic/sort-util.h
> > +++ b/src/basic/sort-util.h
> > @@ -4,6 +4,7 @@
> > @@ -61,10 +62,10 @@ index 8a7f82812a..a56f12f47f 100644
> >
> > #if HAVE_KMOD
> > #include "module-util.h"
> > -diff --git a/src/journal/catalog.c b/src/journal/catalog.c
> > -index 0f6ad8a29e..4e1077ade4 100644
> > ---- a/src/journal/catalog.c
> > -+++ b/src/journal/catalog.c
> > +diff --git a/src/libsystemd/sd-journal/catalog.c b/src/libsystemd/sd-journal/catalog.c
> > +index aea3241d18..75e6c56a28 100644
> > +--- a/src/libsystemd/sd-journal/catalog.c
> > ++++ b/src/libsystemd/sd-journal/catalog.c
> > @@ -28,6 +28,7 @@
> > #include "string-util.h"
> > #include "strv.h"
> > @@ -73,6 +74,3 @@ index 0f6ad8a29e..4e1077ade4 100644
> >
> > const char * const catalog_file_dirs[] = {
> > "/usr/local/lib/systemd/catalog/",
> > ---
> > -2.27.0
> > -
> > diff --git a/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch b/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
> > index bdd64a0252..dc40a2fe8d 100644
> > --- a/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
> > +++ b/meta/recipes-core/systemd/systemd/0004-add-fallback-parse_printf_format-implementation.patch
> > @@ -1,7 +1,7 @@
> > -From f3dbe29f7620a063af4d8eb3ea7c48ecd410200d Mon Sep 17 00:00:00 2001
> > -From: Chen Qi <Qi.Chen@windriver.com>
> > -Date: Mon, 25 Feb 2019 14:04:21 +0800
> > -Subject: [PATCH 04/26] add fallback parse_printf_format implementation
> > +From 6c18e5f9373da3e3b38f2c5727e2aefe07fcbbd9 Mon Sep 17 00:00:00 2001
> > +From: Alexander Kanavin <alex.kanavin@gmail.com>
> > +Date: Sat, 22 May 2021 20:26:24 +0200
> > +Subject: [PATCH] [PATCH] add fallback parse_printf_format implementation
> >
> > Upstream-Status: Inappropriate [musl specific]
> >
> > @@ -11,21 +11,21 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > [rebased for systemd 243]
> > Signed-off-by: Scott Murray <scott.murray@konsulko.com>
> > ---
> > - meson.build | 1 +
> > - src/basic/meson.build | 5 +
> > - src/basic/parse-printf-format.c | 273 ++++++++++++++++++++++++++++++++
> > - src/basic/parse-printf-format.h | 57 +++++++
> > - src/basic/stdio-util.h | 2 +-
> > - src/journal/journal-send.c | 2 +-
> > + meson.build | 1 +
> > + src/basic/meson.build | 5 +
> > + src/basic/parse-printf-format.c | 273 +++++++++++++++++++++++
> > + src/basic/parse-printf-format.h | 57 +++++
> > + src/basic/stdio-util.h | 2 +-
> > + src/libsystemd/sd-journal/journal-send.c | 2 +-
> > 6 files changed, 338 insertions(+), 2 deletions(-)
> > create mode 100644 src/basic/parse-printf-format.c
> > create mode 100644 src/basic/parse-printf-format.h
> >
> > diff --git a/meson.build b/meson.build
> > -index f406d595e6..6aa47fc755 100644
> > +index 27186d63a3..2abb7b3188 100644
> > --- a/meson.build
> > +++ b/meson.build
> > -@@ -646,6 +646,7 @@ endif
> > +@@ -675,6 +675,7 @@ endif
> > foreach header : ['crypt.h',
> > 'linux/memfd.h',
> > 'linux/vm_sockets.h',
> > @@ -34,21 +34,21 @@ index f406d595e6..6aa47fc755 100644
> > 'valgrind/memcheck.h',
> > 'valgrind/valgrind.h',
> > diff --git a/src/basic/meson.build b/src/basic/meson.build
> > -index 1183ea83ad..aa5c958850 100644
> > +index 60ef801a25..aba2172edd 100644
> > --- a/src/basic/meson.build
> > +++ b/src/basic/meson.build
> > -@@ -322,6 +322,11 @@ foreach item : [['af', af_list_txt, 'af', ''],
> > - endforeach
> > +@@ -341,6 +341,11 @@ endforeach
> >
> > basic_sources += generated_gperf_headers
> > -+
> > +
> > +if conf.get('HAVE_PRINTF_H') != 1
> > + basic_sources += [files('parse-printf-format.c')]
> > +endif
> > +
> > - basic_gcrypt_sources = files(
> > - 'gcrypt-util.c',
> > - 'gcrypt-util.h')
> > ++
> > + ############################################################
> > +
> > + arch_list = [
> > diff --git a/src/basic/parse-printf-format.c b/src/basic/parse-printf-format.c
> > new file mode 100644
> > index 0000000000..49437e5445
> > @@ -410,10 +410,10 @@ index 6dc1e72312..cea76b36cf 100644
> >
> > #define snprintf_ok(buf, len, fmt, ...) \
> > ((size_t) snprintf(buf, len, fmt, __VA_ARGS__) < (len))
> > -diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c
> > +diff --git a/src/libsystemd/sd-journal/journal-send.c b/src/libsystemd/sd-journal/journal-send.c
> > index fd3fd7ef9c..e8e6ad555b 100644
> > ---- a/src/journal/journal-send.c
> > -+++ b/src/journal/journal-send.c
> > +--- a/src/libsystemd/sd-journal/journal-send.c
> > ++++ b/src/libsystemd/sd-journal/journal-send.c
> > @@ -2,7 +2,6 @@
> >
> > #include <errno.h>
> > @@ -431,5 +431,5 @@ index fd3fd7ef9c..e8e6ad555b 100644
> > #define SNDBUF_SIZE (8*1024*1024)
> >
> > --
> > -2.27.0
> > +2.24.0
> >
> > diff --git a/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch b/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch
> > index d63e3c0d09..a0d757b3f3 100644
> > --- a/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch
> > +++ b/meta/recipes-core/systemd/systemd/0005-src-basic-missing.h-check-for-missing-strndupa.patch
> > @@ -1,7 +1,7 @@
> > -From 5aeae0ea89f5af74ed5d95bed1d87a03b3801ff0 Mon Sep 17 00:00:00 2001
> > +From 6b0732ac7164914ce16e231e35980b849bdfc4c8 Mon Sep 17 00:00:00 2001
> > From: Chen Qi <Qi.Chen@windriver.com>
> > Date: Mon, 25 Feb 2019 14:18:21 +0800
> > -Subject: [PATCH 05/26] src/basic/missing.h: check for missing strndupa
> > +Subject: [PATCH] src/basic/missing.h: check for missing strndupa
> >
> > include missing.h for definition of strndupa
> >
> > @@ -17,6 +17,7 @@ Signed-off-by: Alex Kiernan <alex.kiernan@gmail.com>
> > [rebased for systemd 244]
> > [Rebased for v247]
> > Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > +
> > ---
> > meson.build | 1 +
> > src/backlight/backlight.c | 1 +
> > @@ -25,6 +26,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > src/basic/log.c | 1 +
> > src/basic/missing_stdlib.h | 12 ++++++++++++
> > src/basic/mkdir.c | 1 +
> > + src/basic/mountpoint-util.c | 1 +
> > src/basic/parse-util.c | 1 +
> > src/basic/path-lookup.c | 1 +
> > src/basic/proc-cmdline.c | 1 +
> > @@ -41,12 +43,12 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > src/coredump/coredump-vacuum.c | 1 +
> > src/journal-remote/journal-remote-main.c | 1 +
> > src/journal/journalctl.c | 1 +
> > - src/journal/sd-journal.c | 1 +
> > src/libsystemd/sd-bus/bus-message.c | 1 +
> > src/libsystemd/sd-bus/bus-objects.c | 1 +
> > src/libsystemd/sd-bus/bus-socket.c | 1 +
> > src/libsystemd/sd-bus/sd-bus.c | 1 +
> > src/libsystemd/sd-bus/test-bus-benchmark.c | 1 +
> > + src/libsystemd/sd-journal/sd-journal.c | 1 +
> > src/locale/keymap-util.c | 1 +
> > src/login/pam_systemd.c | 1 +
> > src/network/generator/network-generator.c | 1 +
> > @@ -68,18 +70,22 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > src/udev/udev-builtin-path_id.c | 1 +
> > src/udev/udev-event.c | 1 +
> > src/udev/udev-rules.c | 1 +
> > - 50 files changed, 61 insertions(+)
> > + 51 files changed, 62 insertions(+)
> >
> > +diff --git a/meson.build b/meson.build
> > +index 2abb7b3188..c97f09062b 100644
> > --- a/meson.build
> > +++ b/meson.build
> > -@@ -535,6 +535,7 @@ foreach ident : [
> > - #include <sys/wait.h>'''],
> > - ['mallinfo', '''#include <malloc.h>'''],
> > +@@ -550,6 +550,7 @@ foreach ident : [
> > + ['execveat', '''#include <unistd.h>'''],
> > ['close_range', '''#include <unistd.h>'''],
> > + ['epoll_pwait2', '''#include <sys/epoll.h>'''],
> > + ['strndupa' , '''#include <string.h>'''],
> > ]
> >
> > have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
> > +diff --git a/src/backlight/backlight.c b/src/backlight/backlight.c
> > +index 86927be62e..a34be158a0 100644
> > --- a/src/backlight/backlight.c
> > +++ b/src/backlight/backlight.c
> > @@ -19,6 +19,7 @@
> > @@ -90,6 +96,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static int help(void) {
> > _cleanup_free_ char *link = NULL;
> > +diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c
> > +index 8dd3f8cd95..50c1ae1b2b 100644
> > --- a/src/basic/cgroup-util.c
> > +++ b/src/basic/cgroup-util.c
> > @@ -38,6 +38,7 @@
> > @@ -100,9 +108,11 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static int cg_enumerate_items(const char *controller, const char *path, FILE **_f, const char *item) {
> > _cleanup_free_ char *fs = NULL;
> > +diff --git a/src/basic/env-util.c b/src/basic/env-util.c
> > +index c110a750a5..e1f091b01e 100644
> > --- a/src/basic/env-util.c
> > +++ b/src/basic/env-util.c
> > -@@ -15,6 +15,7 @@
> > +@@ -18,6 +18,7 @@
> > #include "string-util.h"
> > #include "strv.h"
> > #include "utf8.h"
> > @@ -110,6 +120,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > /* We follow bash for the character set. Different shells have different rules. */
> > #define VALID_BASH_ENV_NAME_CHARS \
> > +diff --git a/src/basic/log.c b/src/basic/log.c
> > +index 595db0c395..daff8eb68a 100644
> > --- a/src/basic/log.c
> > +++ b/src/basic/log.c
> > @@ -36,6 +36,7 @@
> > @@ -120,6 +132,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > #define SNDBUF_SIZE (8*1024*1024)
> >
> > +diff --git a/src/basic/missing_stdlib.h b/src/basic/missing_stdlib.h
> > +index 8c76f93eb2..9068bfb4f0 100644
> > --- a/src/basic/missing_stdlib.h
> > +++ b/src/basic/missing_stdlib.h
> > @@ -11,3 +11,15 @@
> > @@ -138,6 +152,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > + (char *)memcpy(__new, __old, __len); \
> > + })
> > +#endif
> > +diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
> > +index f91f8f7a08..fb31596216 100644
> > --- a/src/basic/mkdir.c
> > +++ b/src/basic/mkdir.c
> > @@ -14,6 +14,7 @@
> > @@ -148,9 +164,23 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > int mkdir_safe_internal(
> > const char *path,
> > +diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
> > +index 1d617e87b2..346f9a47d7 100644
> > +--- a/src/basic/mountpoint-util.c
> > ++++ b/src/basic/mountpoint-util.c
> > +@@ -12,6 +12,7 @@
> > + #include "missing_stat.h"
> > + #include "missing_syscall.h"
> > + #include "mkdir.h"
> > ++#include "missing_stdlib.h"
> > + #include "mountpoint-util.h"
> > + #include "parse-util.h"
> > + #include "path-util.h"
> > +diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
> > +index b79c885dfd..6dabda5691 100644
> > --- a/src/basic/parse-util.c
> > +++ b/src/basic/parse-util.c
> > -@@ -22,6 +22,7 @@
> > +@@ -19,6 +19,7 @@
> > #include "stat-util.h"
> > #include "string-util.h"
> > #include "strv.h"
> > @@ -158,6 +188,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > int parse_boolean(const char *v) {
> > if (!v)
> > +diff --git a/src/basic/path-lookup.c b/src/basic/path-lookup.c
> > +index e53c2302b1..ca1d40ccbe 100644
> > --- a/src/basic/path-lookup.c
> > +++ b/src/basic/path-lookup.c
> > @@ -15,6 +15,7 @@
> > @@ -168,6 +200,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > int xdg_user_runtime_dir(char **ret, const char *suffix) {
> > const char *e;
> > +diff --git a/src/basic/proc-cmdline.c b/src/basic/proc-cmdline.c
> > +index 410b8a3eb5..f2c4355609 100644
> > --- a/src/basic/proc-cmdline.c
> > +++ b/src/basic/proc-cmdline.c
> > @@ -15,6 +15,7 @@
> > @@ -178,6 +212,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > int proc_cmdline(char **ret) {
> > const char *e;
> > +diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
> > +index ccab71f7d2..8f9eee8d36 100644
> > --- a/src/basic/procfs-util.c
> > +++ b/src/basic/procfs-util.c
> > @@ -11,6 +11,7 @@
> > @@ -188,6 +224,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > int procfs_tasks_get_limit(uint64_t *ret) {
> > _cleanup_free_ char *value = NULL;
> > +diff --git a/src/basic/selinux-util.c b/src/basic/selinux-util.c
> > +index ee9e34ed47..96c1e9362d 100644
> > --- a/src/basic/selinux-util.c
> > +++ b/src/basic/selinux-util.c
> > @@ -27,6 +27,7 @@
> > @@ -197,7 +235,9 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > +#include "missing_stdlib.h"
> >
> > #if HAVE_SELINUX
> > - DEFINE_TRIVIAL_CLEANUP_FUNC(context_t, context_free);
> > + DEFINE_TRIVIAL_CLEANUP_FUNC_FULL(context_t, context_free, NULL);
> > +diff --git a/src/basic/time-util.c b/src/basic/time-util.c
> > +index 78d0390a00..47c38ca691 100644
> > --- a/src/basic/time-util.c
> > +++ b/src/basic/time-util.c
> > @@ -27,6 +27,7 @@
> > @@ -208,6 +248,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static clockid_t map_clock_id(clockid_t c) {
> >
> > +diff --git a/src/boot/bless-boot.c b/src/boot/bless-boot.c
> > +index 97ad1e0cb5..9d60f3cc79 100644
> > --- a/src/boot/bless-boot.c
> > +++ b/src/boot/bless-boot.c
> > @@ -18,6 +18,7 @@
> > @@ -218,16 +260,20 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static char **arg_path = NULL;
> >
> > +diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c
> > +index 04d2ba34f3..651ca9412e 100644
> > --- a/src/core/dbus-cgroup.c
> > +++ b/src/core/dbus-cgroup.c
> > -@@ -16,6 +16,7 @@
> > - #include "fileio.h"
> > +@@ -17,6 +17,7 @@
> > #include "limits-util.h"
> > #include "path-util.h"
> > + #include "percent-util.h"
> > +#include "missing_stdlib.h"
> >
> > BUS_DEFINE_PROPERTY_GET(bus_property_get_tasks_max, "t", TasksMax, tasks_max_resolve);
> >
> > +diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c
> > +index 5239c41d67..0f604efe98 100644
> > --- a/src/core/dbus-execute.c
> > +++ b/src/core/dbus-execute.c
> > @@ -41,6 +41,7 @@
> > @@ -238,9 +284,11 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > BUS_DEFINE_PROPERTY_GET_ENUM(bus_property_get_exec_output, exec_output, ExecOutput);
> > static BUS_DEFINE_PROPERTY_GET_ENUM(property_get_exec_input, exec_input, ExecInput);
> > +diff --git a/src/core/dbus-util.c b/src/core/dbus-util.c
> > +index 44a2ccfca0..3926ccfa4a 100644
> > --- a/src/core/dbus-util.c
> > +++ b/src/core/dbus-util.c
> > -@@ -7,6 +7,7 @@
> > +@@ -9,6 +9,7 @@
> > #include "unit-printf.h"
> > #include "user-util.h"
> > #include "unit.h"
> > @@ -248,16 +296,20 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > int bus_property_get_triggered_unit(
> > sd_bus *bus,
> > +diff --git a/src/core/execute.c b/src/core/execute.c
> > +index 922913e7af..f82fc294c0 100644
> > --- a/src/core/execute.c
> > +++ b/src/core/execute.c
> > @@ -96,6 +96,7 @@
> > - #include "unit.h"
> > + #include "unit-serialize.h"
> > #include "user-util.h"
> > #include "utmp-wtmp.h"
> > +#include "missing_stdlib.h"
> >
> > #define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC)
> > #define IDLE_TIMEOUT2_USEC (1*USEC_PER_SEC)
> > +diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c
> > +index a56f12f47f..6b8729ef67 100644
> > --- a/src/core/kmod-setup.c
> > +++ b/src/core/kmod-setup.c
> > @@ -11,6 +11,7 @@
> > @@ -268,6 +320,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > #if HAVE_KMOD
> > #include "module-util.h"
> > +diff --git a/src/core/service.c b/src/core/service.c
> > +index 4c5bfb17fb..8c05f36119 100644
> > --- a/src/core/service.c
> > +++ b/src/core/service.c
> > @@ -41,6 +41,7 @@
> > @@ -278,6 +332,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static const UnitActiveState state_translation_table[_SERVICE_STATE_MAX] = {
> > [SERVICE_DEAD] = UNIT_INACTIVE,
> > +diff --git a/src/coredump/coredump-vacuum.c b/src/coredump/coredump-vacuum.c
> > +index 95c3fca661..d4a9f27b08 100644
> > --- a/src/coredump/coredump-vacuum.c
> > +++ b/src/coredump/coredump-vacuum.c
> > @@ -16,6 +16,7 @@
> > @@ -288,9 +344,11 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > #define DEFAULT_MAX_USE_LOWER (uint64_t) (1ULL*1024ULL*1024ULL) /* 1 MiB */
> > #define DEFAULT_MAX_USE_UPPER (uint64_t) (4ULL*1024ULL*1024ULL*1024ULL) /* 4 GiB */
> > +diff --git a/src/journal-remote/journal-remote-main.c b/src/journal-remote/journal-remote-main.c
> > +index ae1d43756a..24de98c9f3 100644
> > --- a/src/journal-remote/journal-remote-main.c
> > +++ b/src/journal-remote/journal-remote-main.c
> > -@@ -22,6 +22,7 @@
> > +@@ -24,6 +24,7 @@
> > #include "stat-util.h"
> > #include "string-table.h"
> > #include "strv.h"
> > @@ -298,9 +356,11 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > #define PRIV_KEY_FILE CERTIFICATE_ROOT "/private/journal-remote.pem"
> > #define CERT_FILE CERTIFICATE_ROOT "/certs/journal-remote.pem"
> > +diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c
> > +index 76d05c1eee..0beb77b2e5 100644
> > --- a/src/journal/journalctl.c
> > +++ b/src/journal/journalctl.c
> > -@@ -73,6 +73,7 @@
> > +@@ -72,6 +72,7 @@
> > #include "unit-name.h"
> > #include "user-util.h"
> > #include "varlink.h"
> > @@ -308,19 +368,11 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE)
> > #define PROCESS_INOTIFY_INTERVAL 1024 /* Every 1,024 messages processed */
> > ---- a/src/journal/sd-journal.c
> > -+++ b/src/journal/sd-journal.c
> > -@@ -40,6 +40,7 @@
> > - #include "string-util.h"
> > - #include "strv.h"
> > - #include "syslog-util.h"
> > -+#include "missing_stdlib.h"
> > -
> > - #define JOURNAL_FILES_MAX 7168
> > -
> > +diff --git a/src/libsystemd/sd-bus/bus-message.c b/src/libsystemd/sd-bus/bus-message.c
> > +index b25064b672..b3bbe63a91 100644
> > --- a/src/libsystemd/sd-bus/bus-message.c
> > +++ b/src/libsystemd/sd-bus/bus-message.c
> > -@@ -21,6 +21,7 @@
> > +@@ -20,6 +20,7 @@
> > #include "strv.h"
> > #include "time-util.h"
> > #include "utf8.h"
> > @@ -328,9 +380,11 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored);
> >
> > +diff --git a/src/libsystemd/sd-bus/bus-objects.c b/src/libsystemd/sd-bus/bus-objects.c
> > +index bfd42aea7d..daefc56e3e 100644
> > --- a/src/libsystemd/sd-bus/bus-objects.c
> > +++ b/src/libsystemd/sd-bus/bus-objects.c
> > -@@ -13,6 +13,7 @@
> > +@@ -12,6 +12,7 @@
> > #include "set.h"
> > #include "string-util.h"
> > #include "strv.h"
> > @@ -338,6 +392,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static int node_vtable_get_userdata(
> > sd_bus *bus,
> > +diff --git a/src/libsystemd/sd-bus/bus-socket.c b/src/libsystemd/sd-bus/bus-socket.c
> > +index 832526cc1b..7bff701806 100644
> > --- a/src/libsystemd/sd-bus/bus-socket.c
> > +++ b/src/libsystemd/sd-bus/bus-socket.c
> > @@ -28,6 +28,7 @@
> > @@ -348,29 +404,47 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > #define SNDBUF_SIZE (8*1024*1024)
> >
> > +diff --git a/src/libsystemd/sd-bus/sd-bus.c b/src/libsystemd/sd-bus/sd-bus.c
> > +index e719c74370..ac2a605680 100644
> > --- a/src/libsystemd/sd-bus/sd-bus.c
> > +++ b/src/libsystemd/sd-bus/sd-bus.c
> > @@ -41,6 +41,7 @@
> > - #include "process-util.h"
> > #include "string-util.h"
> > #include "strv.h"
> > + #include "user-util.h"
> > +#include "missing_stdlib.h"
> >
> > #define log_debug_bus_message(m) \
> > do { \
> > +diff --git a/src/libsystemd/sd-bus/test-bus-benchmark.c b/src/libsystemd/sd-bus/test-bus-benchmark.c
> > +index 13c08fe295..9aae83486e 100644
> > --- a/src/libsystemd/sd-bus/test-bus-benchmark.c
> > +++ b/src/libsystemd/sd-bus/test-bus-benchmark.c
> > @@ -14,6 +14,7 @@
> > - #include "missing_resource.h"
> > + #include "string-util.h"
> > #include "time-util.h"
> > #include "util.h"
> > +#include "missing_stdlib.h"
> >
> > #define MAX_SIZE (2*1024*1024)
> >
> > +diff --git a/src/libsystemd/sd-journal/sd-journal.c b/src/libsystemd/sd-journal/sd-journal.c
> > +index c90b4c926e..0efdccff5d 100644
> > +--- a/src/libsystemd/sd-journal/sd-journal.c
> > ++++ b/src/libsystemd/sd-journal/sd-journal.c
> > +@@ -40,6 +40,7 @@
> > + #include "string-util.h"
> > + #include "strv.h"
> > + #include "syslog-util.h"
> > ++#include "missing_stdlib.h"
> > +
> > + #define JOURNAL_FILES_MAX 7168
> > +
> > +diff --git a/src/locale/keymap-util.c b/src/locale/keymap-util.c
> > +index d2f0566dbc..3b7746557e 100644
> > --- a/src/locale/keymap-util.c
> > +++ b/src/locale/keymap-util.c
> > -@@ -21,6 +21,7 @@
> > +@@ -24,6 +24,7 @@
> > #include "string-util.h"
> > #include "strv.h"
> > #include "tmpfile-util.h"
> > @@ -378,6 +452,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static bool startswith_comma(const char *s, const char *prefix) {
> > s = startswith(s, prefix);
> > +diff --git a/src/login/pam_systemd.c b/src/login/pam_systemd.c
> > +index 2021c31bd5..58eb09808d 100644
> > --- a/src/login/pam_systemd.c
> > +++ b/src/login/pam_systemd.c
> > @@ -31,6 +31,7 @@
> > @@ -388,6 +464,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > #include "pam-util.h"
> > #include "parse-util.h"
> > #include "path-util.h"
> > +diff --git a/src/network/generator/network-generator.c b/src/network/generator/network-generator.c
> > +index ae673ddf5b..a79e5114ca 100644
> > --- a/src/network/generator/network-generator.c
> > +++ b/src/network/generator/network-generator.c
> > @@ -13,6 +13,7 @@
> > @@ -398,6 +476,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > /*
> > # .network
> > +diff --git a/src/nspawn/nspawn-settings.c b/src/nspawn/nspawn-settings.c
> > +index d4619bead5..0e832fd994 100644
> > --- a/src/nspawn/nspawn-settings.c
> > +++ b/src/nspawn/nspawn-settings.c
> > @@ -16,6 +16,7 @@
> > @@ -408,19 +488,23 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > Settings *settings_new(void) {
> > Settings *s;
> > +diff --git a/src/nss-mymachines/nss-mymachines.c b/src/nss-mymachines/nss-mymachines.c
> > +index 44715bb3e5..bc1e688b5e 100644
> > --- a/src/nss-mymachines/nss-mymachines.c
> > +++ b/src/nss-mymachines/nss-mymachines.c
> > -@@ -19,6 +19,7 @@
> > +@@ -21,6 +21,7 @@
> > #include "nss-util.h"
> > #include "signal-util.h"
> > #include "string-util.h"
> > +#include "missing_stdlib.h"
> >
> > - NSS_GETHOSTBYNAME_PROTOTYPES(mymachines);
> > - NSS_GETPW_PROTOTYPES(mymachines);
> > + static void setup_logging(void) {
> > + /* We need a dummy function because log_parse_environment is a macro. */
> > +diff --git a/src/portable/portable.c b/src/portable/portable.c
> > +index f201f52531..c78ad0f471 100644
> > --- a/src/portable/portable.c
> > +++ b/src/portable/portable.c
> > -@@ -31,6 +31,7 @@
> > +@@ -32,6 +32,7 @@
> > #include "strv.h"
> > #include "tmpfile-util.h"
> > #include "user-util.h"
> > @@ -428,9 +512,11 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static const char profile_dirs[] = CONF_PATHS_NULSTR("systemd/portable/profile");
> >
> > +diff --git a/src/resolve/resolvectl.c b/src/resolve/resolvectl.c
> > +index 52bbae3293..4ccbae09c4 100644
> > --- a/src/resolve/resolvectl.c
> > +++ b/src/resolve/resolvectl.c
> > -@@ -37,6 +37,7 @@
> > +@@ -41,6 +41,7 @@
> > #include "terminal-util.h"
> > #include "utf8.h"
> > #include "verbs.h"
> > @@ -438,6 +524,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static int arg_family = AF_UNSPEC;
> > static int arg_ifindex = 0;
> > +diff --git a/src/shared/bus-get-properties.c b/src/shared/bus-get-properties.c
> > +index feb6d3807f..eb11d29e50 100644
> > --- a/src/shared/bus-get-properties.c
> > +++ b/src/shared/bus-get-properties.c
> > @@ -4,6 +4,7 @@
> > @@ -448,6 +536,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > int bus_property_get_bool(
> > sd_bus *bus,
> > +diff --git a/src/shared/bus-unit-procs.c b/src/shared/bus-unit-procs.c
> > +index b76125e551..2e0892242f 100644
> > --- a/src/shared/bus-unit-procs.c
> > +++ b/src/shared/bus-unit-procs.c
> > @@ -10,6 +10,7 @@
> > @@ -458,9 +548,11 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > struct CGroupInfo {
> > char *cgroup_path;
> > +diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c
> > +index a75178068b..3de06e2bd5 100644
> > --- a/src/shared/bus-unit-util.c
> > +++ b/src/shared/bus-unit-util.c
> > -@@ -44,6 +44,7 @@
> > +@@ -45,6 +45,7 @@
> > #include "unit-def.h"
> > #include "user-util.h"
> > #include "utf8.h"
> > @@ -468,6 +560,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > int bus_parse_unit_info(sd_bus_message *message, UnitInfo *u) {
> > assert(message);
> > +diff --git a/src/shared/bus-util.c b/src/shared/bus-util.c
> > +index 64ca67993c..31e3d148ea 100644
> > --- a/src/shared/bus-util.c
> > +++ b/src/shared/bus-util.c
> > @@ -21,6 +21,7 @@
> > @@ -478,6 +572,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static int name_owner_change_callback(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
> > sd_event *e = userdata;
> > +diff --git a/src/shared/dns-domain.c b/src/shared/dns-domain.c
> > +index e43aa12882..cec9b413c1 100644
> > --- a/src/shared/dns-domain.c
> > +++ b/src/shared/dns-domain.c
> > @@ -17,6 +17,7 @@
> > @@ -488,6 +584,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > int dns_label_unescape(const char **name, char *dest, size_t sz, DNSLabelFlags flags) {
> > const char *n;
> > +diff --git a/src/shared/journal-importer.c b/src/shared/journal-importer.c
> > +index b2785f0552..5f00902882 100644
> > --- a/src/shared/journal-importer.c
> > +++ b/src/shared/journal-importer.c
> > @@ -14,6 +14,7 @@
> > @@ -498,6 +596,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > enum {
> > IMPORTER_STATE_LINE = 0, /* waiting to read, or reading line */
> > +diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c
> > +index e63c59bd94..dd9773c009 100644
> > --- a/src/shared/logs-show.c
> > +++ b/src/shared/logs-show.c
> > @@ -41,6 +41,7 @@
> > @@ -508,6 +608,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > /* up to three lines (each up to 100 characters) or 300 characters, whichever is less */
> > #define PRINT_LINE_THRESHOLD 3
> > +diff --git a/src/shared/pager.c b/src/shared/pager.c
> > +index 4bbad7e37b..eefcdd068c 100644
> > --- a/src/shared/pager.c
> > +++ b/src/shared/pager.c
> > @@ -26,6 +26,7 @@
> > @@ -518,6 +620,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static pid_t pager_pid = 0;
> >
> > +diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c
> > +index 5d5bf7f21d..f1002ffa6c 100644
> > --- a/src/shared/uid-range.c
> > +++ b/src/shared/uid-range.c
> > @@ -9,6 +9,7 @@
> > @@ -528,6 +632,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static bool uid_range_intersect(UidRange *range, uid_t start, uid_t nr) {
> > assert(range);
> > +diff --git a/src/socket-proxy/socket-proxyd.c b/src/socket-proxy/socket-proxyd.c
> > +index 6e3ee0d76b..7727e33d95 100644
> > --- a/src/socket-proxy/socket-proxyd.c
> > +++ b/src/socket-proxy/socket-proxyd.c
> > @@ -26,6 +26,7 @@
> > @@ -538,6 +644,8 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > #define BUFFER_SIZE (256 * 1024)
> >
> > +diff --git a/src/test/test-hexdecoct.c b/src/test/test-hexdecoct.c
> > +index c9d318b8d1..fcb8d40805 100644
> > --- a/src/test/test-hexdecoct.c
> > +++ b/src/test/test-hexdecoct.c
> > @@ -6,6 +6,7 @@
> > @@ -548,19 +656,23 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > static void test_hexchar(void) {
> > assert_se(hexchar(0xa) == 'a');
> > +diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c
> > +index 09cc1c3bd8..8a7d3152a7 100644
> > --- a/src/udev/udev-builtin-path_id.c
> > +++ b/src/udev/udev-builtin-path_id.c
> > @@ -22,6 +22,7 @@
> > - #include "strv.h"
> > #include "sysexits.h"
> > #include "udev-builtin.h"
> > + #include "udev-util.h"
> > +#include "missing_stdlib.h"
> >
> > _printf_(2,3)
> > static void path_prepend(char **path, const char *fmt, ...) {
> > +diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c
> > +index 12597194a9..208b2458b5 100644
> > --- a/src/udev/udev-event.c
> > +++ b/src/udev/udev-event.c
> > -@@ -34,6 +34,7 @@
> > +@@ -33,6 +33,7 @@
> > #include "udev-util.h"
> > #include "udev-watch.h"
> > #include "user-util.h"
> > @@ -568,9 +680,11 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > typedef struct Spawn {
> > sd_device *device;
> > +diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c
> > +index 57ede6a197..dc59857765 100644
> > --- a/src/udev/udev-rules.c
> > +++ b/src/udev/udev-rules.c
> > -@@ -30,6 +30,7 @@
> > +@@ -31,6 +31,7 @@
> > #include "udev-rules.h"
> > #include "user-util.h"
> > #include "virt.h"
> > @@ -578,13 +692,3 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> >
> > #define RULES_DIRS (const char* const*) CONF_PATHS_STRV("udev/rules.d")
> >
> > ---- a/src/basic/mountpoint-util.c
> > -+++ b/src/basic/mountpoint-util.c
> > -@@ -10,6 +10,7 @@
> > - #include "fs-util.h"
> > - #include "missing_stat.h"
> > - #include "missing_syscall.h"
> > -+#include "missing_stdlib.h"
> > - #include "mountpoint-util.h"
> > - #include "parse-util.h"
> > - #include "path-util.h"
> > diff --git a/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch b/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
> > index a978558b42..54d714266e 100644
> > --- a/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
> > +++ b/meta/recipes-core/systemd/systemd/0006-Include-netinet-if_ether.h.patch
> > @@ -1,7 +1,7 @@
> > -From d3ed0da271738fd0fc3d3e4d82d6f5810334b05e Mon Sep 17 00:00:00 2001
> > +From 2069f0b0d5ab8f869aeba635a347e0b11d362b30 Mon Sep 17 00:00:00 2001
> > From: Khem Raj <raj.khem@gmail.com>
> > Date: Thu, 26 Oct 2017 22:10:42 -0700
> > -Subject: [PATCH 06/26] Include netinet/if_ether.h
> > +Subject: [PATCH] Include netinet/if_ether.h
> >
> > Fixes
> > /path/to/systemd/recipe-sysroot/usr/include/netinet/if_ether.h:101:8: error: redefinition of 'struct ethhdr'
> > @@ -31,6 +31,7 @@ Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
> > Signed-off-by: Scott Murray <scott.murray@konsulko.com>
> > [rebased for systemd 247]
> > Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > +
> > ---
> > src/libsystemd-network/sd-dhcp6-client.c | 1 -
> > src/libsystemd/sd-netlink/netlink-types.c | 1 +
> > @@ -56,7 +57,7 @@ Signed-off-by: Luca Boccassi <luca.boccassi@microsoft.com>
> > 21 files changed, 26 insertions(+), 8 deletions(-)
> >
> > diff --git a/src/libsystemd-network/sd-dhcp6-client.c b/src/libsystemd-network/sd-dhcp6-client.c
> > -index 66f87c4b95..de1264ae46 100644
> > +index 410bfda10e..e70ed8be92 100644
> > --- a/src/libsystemd-network/sd-dhcp6-client.c
> > +++ b/src/libsystemd-network/sd-dhcp6-client.c
> > @@ -5,7 +5,6 @@
> > @@ -68,7 +69,7 @@ index 66f87c4b95..de1264ae46 100644
> >
> > #include "sd-dhcp6-client.h"
> > diff --git a/src/libsystemd/sd-netlink/netlink-types.c b/src/libsystemd/sd-netlink/netlink-types.c
> > -index 6fb6c147d9..8eda02d202 100644
> > +index ed7b9a8cd1..112c0b09e4 100644
> > --- a/src/libsystemd/sd-netlink/netlink-types.c
> > +++ b/src/libsystemd/sd-netlink/netlink-types.c
> > @@ -3,6 +3,7 @@
> > @@ -80,7 +81,7 @@ index 6fb6c147d9..8eda02d202 100644
> > #include <linux/netlink.h>
> > #include <linux/rtnetlink.h>
> > diff --git a/src/machine/machine-dbus.c b/src/machine/machine-dbus.c
> > -index bb67beb665..f5780f1aec 100644
> > +index e7c4ed3c7c..3a1e4f9072 100644
> > --- a/src/machine/machine-dbus.c
> > +++ b/src/machine/machine-dbus.c
> > @@ -3,6 +3,7 @@
> > @@ -92,7 +93,7 @@ index bb67beb665..f5780f1aec 100644
> > /* When we include libgen.h because we need dirname() we immediately
> > * undefine basename() since libgen.h defines it as a macro to the POSIX
> > diff --git a/src/network/netdev/bond.c b/src/network/netdev/bond.c
> > -index e27f36067b..8868f1da5d 100644
> > +index cf7ca88d6f..34ab468191 100644
> > --- a/src/network/netdev/bond.c
> > +++ b/src/network/netdev/bond.c
> > @@ -1,5 +1,6 @@
> > @@ -103,7 +104,7 @@ index e27f36067b..8868f1da5d 100644
> > #include "bond.h"
> > #include "bond-util.h"
> > diff --git a/src/network/netdev/bridge.c b/src/network/netdev/bridge.c
> > -index 1f59cd8b42..5fdbae7e99 100644
> > +index 38432f1578..79ccfe578e 100644
> > --- a/src/network/netdev/bridge.c
> > +++ b/src/network/netdev/bridge.c
> > @@ -1,5 +1,6 @@
> > @@ -114,7 +115,7 @@ index 1f59cd8b42..5fdbae7e99 100644
> >
> > #include "bridge.h"
> > diff --git a/src/network/netdev/macsec.c b/src/network/netdev/macsec.c
> > -index 82e71c3920..fbae86e216 100644
> > +index 77c5f8c4e7..04be1b4ab2 100644
> > --- a/src/network/netdev/macsec.c
> > +++ b/src/network/netdev/macsec.c
> > @@ -1,5 +1,6 @@
> > @@ -125,19 +126,19 @@ index 82e71c3920..fbae86e216 100644
> > #include <linux/if_ether.h>
> > #include <linux/if_macsec.h>
> > diff --git a/src/network/netdev/netdev-gperf.gperf b/src/network/netdev/netdev-gperf.gperf
> > -index 4e89761f2c..91251fa6ec 100644
> > +index 8abe044890..3c54c58928 100644
> > --- a/src/network/netdev/netdev-gperf.gperf
> > +++ b/src/network/netdev/netdev-gperf.gperf
> > -@@ -2,6 +2,7 @@
> > +@@ -3,6 +3,7 @@
> > #if __GNUC__ >= 7
> > _Pragma("GCC diagnostic ignored \"-Wimplicit-fallthrough\"")
> > #endif
> > +#include <netinet/if_ether.h>
> > #include <stddef.h>
> > #include "bareudp.h"
> > - #include "bond.h"
> > + #include "batadv.h"
> > diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c
> > -index 9f390b5781..62aeafb1e4 100644
> > +index b31f0fa81a..c80e1ff537 100644
> > --- a/src/network/netdev/netdev.c
> > +++ b/src/network/netdev/netdev.c
> > @@ -1,5 +1,6 @@
> > @@ -148,7 +149,7 @@ index 9f390b5781..62aeafb1e4 100644
> > #include <netinet/in.h>
> > #include <unistd.h>
> > diff --git a/src/network/networkd-brvlan.c b/src/network/networkd-brvlan.c
> > -index e53c73c30c..9bf0771b84 100644
> > +index 2847b336c9..4d6af8c642 100644
> > --- a/src/network/networkd-brvlan.c
> > +++ b/src/network/networkd-brvlan.c
> > @@ -4,6 +4,7 @@
> > @@ -160,7 +161,7 @@ index e53c73c30c..9bf0771b84 100644
> > #include <stdbool.h>
> >
> > diff --git a/src/network/networkd-dhcp-common.c b/src/network/networkd-dhcp-common.c
> > -index 9f58121350..554d006cb8 100644
> > +index 00d055cf8d..65821c1d31 100644
> > --- a/src/network/networkd-dhcp-common.c
> > +++ b/src/network/networkd-dhcp-common.c
> > @@ -1,7 +1,8 @@
> > @@ -171,9 +172,9 @@ index 9f58121350..554d006cb8 100644
> > +#include <net/if_arp.h>
> > +#include <net/if.h>
> >
> > + #include "bus-error.h"
> > #include "dhcp-internal.h"
> > - #include "dhcp6-internal.h"
> > -@@ -10,6 +11,7 @@
> > +@@ -11,6 +12,7 @@
> > #include "networkd-dhcp-common.h"
> > #include "networkd-link.h"
> > #include "networkd-manager.h"
> > @@ -182,7 +183,7 @@ index 9f58121350..554d006cb8 100644
> > #include "parse-util.h"
> > #include "socket-util.h"
> > diff --git a/src/network/networkd-dhcp-server.c b/src/network/networkd-dhcp-server.c
> > -index cf279c640d..bae541029b 100644
> > +index 5cdf432c27..93cffb9863 100644
> > --- a/src/network/networkd-dhcp-server.c
> > +++ b/src/network/networkd-dhcp-server.c
> > @@ -1,8 +1,8 @@
> > @@ -197,7 +198,7 @@ index cf279c640d..bae541029b 100644
> > #include "sd-dhcp-server.h"
> >
> > diff --git a/src/network/networkd-dhcp4.c b/src/network/networkd-dhcp4.c
> > -index f3c1e5f609..e4ef6eca63 100644
> > +index 23dc3a45db..7ae6c2467a 100644
> > --- a/src/network/networkd-dhcp4.c
> > +++ b/src/network/networkd-dhcp4.c
> > @@ -1,9 +1,9 @@
> > @@ -212,7 +213,7 @@ index f3c1e5f609..e4ef6eca63 100644
> > #include "escape.h"
> > #include "alloc-util.h"
> > diff --git a/src/network/networkd-dhcp6.c b/src/network/networkd-dhcp6.c
> > -index 5c077c1ec8..fa98042aa5 100644
> > +index aa077d6219..4f6ce22059 100644
> > --- a/src/network/networkd-dhcp6.c
> > +++ b/src/network/networkd-dhcp6.c
> > @@ -3,9 +3,9 @@
> > @@ -227,7 +228,7 @@ index 5c077c1ec8..fa98042aa5 100644
> > #include "sd-dhcp6-client.h"
> >
> > diff --git a/src/network/networkd-link.c b/src/network/networkd-link.c
> > -index 3bfe636691..e0c68c8ad3 100644
> > +index 8219d95b0d..c92230453b 100644
> > --- a/src/network/networkd-link.c
> > +++ b/src/network/networkd-link.c
> > @@ -1,8 +1,8 @@
> > @@ -241,7 +242,7 @@ index 3bfe636691..e0c6