poky/meta/recipes-core/systemd/systemd/0006-src-basic-missing.h-check-for-missing-strndupa.patch
Chen Qi ada8a5d917 systemd: upgrade to 239
Upgrade systemd to 239.

1. Patch Changes
* Rebased Patches
  0002-binfmt-Don-t-install-dependency-links-at-install-tim.patch
  0003-use-lnr-wrapper-instead-of-looking-for-relative-opti.patch
  0006-Make-root-s-home-directory-configurable.patch
  0027-remove-nobody-user-group-checking.patch
  0011-socket-util-don-t-fail-if-libc-doesn-t-support-IDN.patch
  0013-add-fallback-parse_printf_format-implementation.patch
  0014-src-basic-missing.h-check-for-missing-strndupa.patch
  0015-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch
  0016-src-basic-missing.h-check-for-missing-__compar_fn_t-.patch
  0017-Include-netinet-if_ether.h.patch
  0019-Do-not-enable-nss-tests-if-nss-systemd-is-not-enable.patch
  0022-don-t-use-glibc-specific-qsort_r.patch
  0024-comparison_fn_t-is-glibc-specific-use-raw-signature-.patch
  0026-Use-uintmax_t-for-handling-rlim_t.patch
  0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch
  0031-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch
  0001-core-device.c-Change-the-default-device-timeout-to-2.patch
  0001-Remove-fstack-protector-flags-to-workaround-musl-bui.patch

* Dropped Patches and Reasons
  0001-Hide-__start_BUS_ERROR_MAP-and-__stop_BUS_ERROR_MAP.patch
    This patch is dropped because the problem has been fixed by
    binutils upstream. And this workaround could be dropped.
    https://sourceware.org/bugzilla/show_bug.cgi?id=18548

  0007-Revert-rules-remove-firmware-loading-rules.patch
  0008-Revert-udev-remove-userspace-firmware-loading-suppor.patch
    These two patches are dropped because they are for kernel < 3.7.
    But the current minimal requirement of kernel to build systemd
    is as below.
    REQUIREMENTS:
        Linux kernel >= 3.13
        Linux kernel >= 4.2 for unified cgroup hierarchy support
    So these two patches no long make any sense.
    Also remove non-exist firmware-path option

  0009-remove-duplicate-include-uchar.h.patch
  0010-check-for-uchar.h-in-meson.build.patch
    These two patches are dropped because musl has implemented
    uchar.h. See commit below from musl repo.
    """
    ab9672ae73248f51e30f4553c4b8878525e46383
    implement uchar.h (C11 UTF-16/32 conversion) interfaces
    """

  0018-check-for-missing-canonicalize_file_name.patch
    The above patch is dropped because current systemd does not need
    canonicalize_file_name.

  0025-Define-_PATH_WTMPX-and-_PATH_UTMPX-if-not-defined.patch
    The above patch is dropped because utmp makes no sense in musl.
    Check code below from musl.
    include/utmp.h:#define _PATH_UTMP "/dev/null/utmp"
    And utmp PACKAGECONFIG has been explicitly disabled for musl.
    So we don't need this patch.

  0032-memfd.patch
  0033-basic-macros-rename-noreturn-into-_noreturn_-8456.patch
  libmount.patch
  0034-Fix-format-truncation-compile-failure-by-typecasting.patch
    The above patches are dropped because they are backported patches.
    And current systemd has contained these patches.

  0036-time-util-fix-build-with-gcc8-Werror-format-truncati.patch
    The above patch is dropped because it has been merged and is now
    in new version.

* Newly Added Patch
  0005-include-gshadow-only-if-ENABLE_GSHADOW-is-1.patch
    This patch is added to fix build for musl.

  0019-Do-not-disable-buffering-when-writing-to-oom_score_a.patch
    This patch is added to fix the following error which caused system
    unable to boot up.
      systemd-udevd.service: Failed to adjust OOM setting: Invalid argument
      dbus.service: Failed to adjust OOM setting: Invalid argument

  0020-distinguish-XSI-compliant-strerror_r-from-GNU-specif.patch
    This patch is added to fix segment fault error on musl systems.

  0001-login-use-parse_uid-when-unmounting-user-runtime-dir.patch
    This patch is backported to solve a race condition between
    user-runtime-dir@xxx.service stop and user deletion.

2. PACKAGECONFIG and Dependency Changes
* Add a new PACKAGECONFIG item 'gshadow'. Enable it by default for glibc
  but disable it by default for musl. This is because musl does not provide
  gshadow.h.

* Add a new PACKAGECONFIG item 'portabled'. Default to disable it because
  it's still experimental, according to the announcement letter.
  """
  Currently, the support is still experimental, but this is expected to
  change soon. Reflecting this experimental state, the "portablectl" binary
  is not installed into /usr/bin yet.
  """

* Change 'kmod' from a hard dependency to a PACKAGECONFIG item. Default
  to enable it.

* Change 'acl' from a hard dependency to a PACKAGECONFIG item. Default
  to enable it.

* Remove 'readline' from DEPENDS. systemd does not need it.

* Remove 'libcgroup' from DEPENDS. The dependency on libcgroup has been
  removed from systemd a long time ago. We now remove this unnecessary
  dependency from DEPENDS.

3. update-alternatives changes
  The utilities like shutdown, poweroff, etc. are now created as symlinks
  at do_install. So there's no need to use update-alternatives mechanism
  anymore to create the symlinks now. In addtion, I don't think we now
  support multiple init systems at one running system, so there's really
  no need to use update-alternatives mechanism here.

  Also update the FILES_${PN} to include these files to avoid QA issue.

(From OE-Core rev: 597f4645faf61486eb1d2ab73f3d974460ab9466)

Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2018-07-18 10:18:42 +01:00

119 lines
3.4 KiB
Diff

From 03fd19fc87573276e0d359260c8fe591f5f0216a Mon Sep 17 00:00:00 2001
From: Chen Qi <Qi.Chen@windriver.com>
Date: Fri, 29 Jun 2018 16:34:50 +0800
Subject: [PATCH 06/19] src/basic/missing.h: check for missing strndupa
include missing.h for definition of strndupa
Upstream-Status: Inappropriate [musl specific]
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Chen Qi <Qi.Chen@windriver.com>
---
meson.build | 1 +
src/basic/missing.h | 11 +++++++++++
src/basic/mkdir.c | 1 +
src/basic/pager.c | 1 +
src/basic/parse-util.c | 1 +
src/basic/procfs-util.c | 1 +
src/shared/uid-range.c | 1 +
7 files changed, 17 insertions(+)
diff --git a/meson.build b/meson.build
index 8c16bc979..a734a295c 100644
--- a/meson.build
+++ b/meson.build
@@ -503,6 +503,7 @@ foreach ident : [
#include <unistd.h>'''],
['explicit_bzero' , '''#include <string.h>'''],
['reallocarray', '''#include <malloc.h>'''],
+ ['strndupa' , '''#include <string.h>'''],
]
have = cc.has_function(ident[0], prefix : ident[1], args : '-D_GNU_SOURCE')
diff --git a/src/basic/missing.h b/src/basic/missing.h
index 0e33abb9f..02397f1b6 100644
--- a/src/basic/missing.h
+++ b/src/basic/missing.h
@@ -1184,6 +1184,17 @@ struct input_mask {
typedef int32_t key_serial_t;
#endif
+#if ! HAVE_STRNDUPA
+#define strndupa(s, n) \
+ ({ \
+ const char *__old = (s); \
+ size_t __len = strnlen(__old, (n)); \
+ char *__new = (char *)alloca(__len + 1); \
+ __new[__len] = '\0'; \
+ (char *)memcpy(__new, __old, __len); \
+ })
+#endif
+
#ifndef KEYCTL_JOIN_SESSION_KEYRING
#define KEYCTL_JOIN_SESSION_KEYRING 1
#endif
diff --git a/src/basic/mkdir.c b/src/basic/mkdir.c
index 6ab1b4422..77c3e0863 100644
--- a/src/basic/mkdir.c
+++ b/src/basic/mkdir.c
@@ -13,6 +13,7 @@
#include "stat-util.h"
#include "stdio-util.h"
#include "user-util.h"
+#include "missing.h"
int mkdir_safe_internal(const char *path, mode_t mode, uid_t uid, gid_t gid, MkdirFlags flags, mkdir_func_t _mkdir) {
struct stat st;
diff --git a/src/basic/pager.c b/src/basic/pager.c
index f24126111..8223bff02 100644
--- a/src/basic/pager.c
+++ b/src/basic/pager.c
@@ -21,6 +21,7 @@
#include "string-util.h"
#include "strv.h"
#include "terminal-util.h"
+#include "missing.h"
static pid_t pager_pid = 0;
diff --git a/src/basic/parse-util.c b/src/basic/parse-util.c
index 6becf8587..52576f536 100644
--- a/src/basic/parse-util.c
+++ b/src/basic/parse-util.c
@@ -17,6 +17,7 @@
#include "parse-util.h"
#include "process-util.h"
#include "string-util.h"
+#include "missing.h"
int parse_boolean(const char *v) {
assert(v);
diff --git a/src/basic/procfs-util.c b/src/basic/procfs-util.c
index a159e344b..ebc427d6b 100644
--- a/src/basic/procfs-util.c
+++ b/src/basic/procfs-util.c
@@ -11,6 +11,7 @@
#include "procfs-util.h"
#include "stdio-util.h"
#include "string-util.h"
+#include "missing.h"
int procfs_tasks_get_limit(uint64_t *ret) {
_cleanup_free_ char *value = NULL;
diff --git a/src/shared/uid-range.c b/src/shared/uid-range.c
index 434ce6ff4..37093ab7b 100644
--- a/src/shared/uid-range.c
+++ b/src/shared/uid-range.c
@@ -8,6 +8,7 @@
#include "macro.h"
#include "uid-range.h"
#include "user-util.h"
+#include "missing.h"
static bool uid_range_intersect(UidRange *range, uid_t start, uid_t nr) {
assert(range);
--
2.11.0