Sorry, but that is not a good answer. If the next version upgrade is a pain because of those patches, I will actually make a patch that drops them.

Alex

On Tue, 25 May 2021 at 15:52, Khem Raj <raj.khem@gmail.com> wrote:


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 is 
 

Alex

On 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