Backport the upstream fix for the limits.h override, which breaks GCC's <limits.h> include cycle (notably GCC 16.x) and fails musl builds. musl only.
Upstream fix: https://github.com/systemd/systemd/pull/43831 (cherry picked from commit 4e08fdf59ffcafef6ca2df6342101e7e82b6183b) Signed-off-by: Jaipaul Cheernam <[email protected]> --- Changes in v2: - Use the upstream fix from systemd PR #43831 (more accurate). .../0001-include-fix-limits.h-override.patch | 47 +++++++++++++++++++ meta/recipes-core/systemd/systemd_261.3.bb | 2 + 2 files changed, 49 insertions(+) create mode 100644 meta/recipes-core/systemd/systemd/0001-include-fix-limits.h-override.patch diff --git a/meta/recipes-core/systemd/systemd/0001-include-fix-limits.h-override.patch b/meta/recipes-core/systemd/systemd/0001-include-fix-limits.h-override.patch new file mode 100644 index 00000000000..6316b3ddf61 --- /dev/null +++ b/meta/recipes-core/systemd/systemd/0001-include-fix-limits.h-override.patch @@ -0,0 +1,47 @@ +From 4e08fdf59ffcafef6ca2df6342101e7e82b6183b Mon Sep 17 00:00:00 2001 +From: Yu Watanabe <[email protected]> +Date: Tue, 22 Sep 2026 01:55:01 +0900 +Subject: [PATCH] include: fix limits.h override + +This is especially necessary since GCC 16.x. + +Replaces #43824. + +(cherry picked from commit 4e08fdf59ffcafef6ca2df6342101e7e82b6183b) + +Upstream-Status: Backport [https://github.com/systemd/systemd/pull/43831] +Signed-off-by: Jaipaul Cheernam <[email protected]> +--- + src/include/musl/limits.h | 19 +++++++++++++++++++ + 1 file changed, 19 insertions(+) + +diff --git a/src/include/musl/limits.h b/src/include/musl/limits.h +index 9620a3b0acc..cffb8ddd274 100644 +--- a/src/include/musl/limits.h ++++ b/src/include/musl/limits.h +@@ -1,6 +1,25 @@ + /* SPDX-License-Identifier: LGPL-2.1-or-later */ + #pragma once + ++/* GCC introduces a spurious, tricky inclusion cycle: ++ * GCC's limits.h ++ * -> GCC's syslimits.h ++ * -> GCC's limits.h (again!!!) ++ * -> glibc/musl's limits.h ++ * -> define POSIX defines ++ * -> define ISO C defines ++ * This works only when GCC's limits.h is included first, but a user override breaks the cycle. Hence, we ++ * need to manually achieve the cycle here. If GCC is not used (e.g., Clang), then including the compiler's ++ * limits.h twice should be redundant but harmless. */ ++ ++/* First, get the POSIX defines from glibc/musl's limits.h. When the two macros below are defined, GCC's ++ * limits.h includes the next limits.h, that is, one from glibc/musl. */ ++#define _GCC_LIMITS_H_ ++#define _GCC_NEXT_LIMITS_H ++#include_next <limits.h> /* IWYU pragma: export */ ++ ++/* Next, get the ISO C defines from GCC's limits.h. */ ++#undef _GCC_LIMITS_H_ + #include_next <limits.h> /* IWYU pragma: export */ + + #include <assert.h> diff --git a/meta/recipes-core/systemd/systemd_261.3.bb b/meta/recipes-core/systemd/systemd_261.3.bb index 1a256a598a8..175f0a4834f 100644 --- a/meta/recipes-core/systemd/systemd_261.3.bb +++ b/meta/recipes-core/systemd/systemd_261.3.bb @@ -38,6 +38,8 @@ SRC_URI += "file://touchscreen.rules \ file://0003-Do-not-create-var-log-README.patch \ " +SRC_URI:append:libc-musl = " file://0001-include-fix-limits.h-override.patch" + PAM_PLUGINS = " \ pam-plugin-unix \ pam-plugin-loginuid \
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#246359): https://lists.openembedded.org/g/openembedded-core/message/246359 Mute This Topic: https://lists.openembedded.org/mt/121364962/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
