diff mbox series

[1/1] package/systemd: add upstream build fix #8456

Message ID 20180403061138.17286-1-chemobejk@gmail.com
State Accepted
Commit 794d16fcacfc5c8e041452da67ee12aaab36f441
Headers show
Series [1/1] package/systemd: add upstream build fix #8456 | expand

Commit Message

Stefan Becker April 3, 2018, 6:11 a.m. UTC
Signed-off-by: Stefan Becker <chemobejk@gmail.com>
---
 .../0005-basic-macros-rename-noreturn.patch        | 201 +++++++++++++++++++++
 1 file changed, 201 insertions(+)
 create mode 100644 package/systemd/0005-basic-macros-rename-noreturn.patch

Comments

Joseph Kogut April 3, 2018, 9:05 p.m. UTC | #1
Hi Stefan,

On Mon, Apr 2, 2018 at 11:11 PM, Stefan Becker <chemobejk@gmail.com> wrote:
> Signed-off-by: Stefan Becker <chemobejk@gmail.com>

Tested-by: Joseph Kogut <joseph.kogut@gmail.com>

Tested on x86_64 w/ GCC 6.4 and Glibc 2.26, as well as GCC 7.3.0 and
Glibc 2.27. The build fails on both without the patch, and succeeds on
both with the patch.

Thanks,
Joseph
Peter Korsgaard April 3, 2018, 9:18 p.m. UTC | #2
>>>>> "Stefan" == Stefan Becker <chemobejk@gmail.com> writes:

 > Signed-off-by: Stefan Becker <chemobejk@gmail.com>

Committed, thanks.
Peter Korsgaard April 8, 2018, 7:41 p.m. UTC | #3
>>>>> "Stefan" == Stefan Becker <chemobejk@gmail.com> writes:

 > Signed-off-by: Stefan Becker <chemobejk@gmail.com>

Committed to 2018.02.x, thanks.
diff mbox series

Patch

diff --git a/package/systemd/0005-basic-macros-rename-noreturn.patch b/package/systemd/0005-basic-macros-rename-noreturn.patch
new file mode 100644
index 0000000000..6cd847098e
--- /dev/null
+++ b/package/systemd/0005-basic-macros-rename-noreturn.patch
@@ -0,0 +1,201 @@ 
+From 848e863acc51ecfb0f3955c498874588201d9130 Mon Sep 17 00:00:00 2001
+From: Franck Bui <fbui@suse.com>
+Date: Thu, 15 Mar 2018 06:23:46 +0100
+Subject: [PATCH] basic/macros: rename noreturn into _noreturn_ (#8456)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+"noreturn" is reserved and can be used in other header files we include:
+
+  [   16s] In file included from /usr/include/gcrypt.h:30:0,
+  [   16s]                  from ../src/journal/journal-file.h:26,
+  [   16s]                  from ../src/journal/journal-vacuum.c:31:
+  [   16s] /usr/include/gpg-error.h:1544:46: error: expected ‘,’ or ‘;’ before ‘)’ token
+  [   16s]  void gpgrt_log_bug (const char *fmt, ...)    GPGRT_ATTR_NR_PRINTF(1,2);
+
+Here we include grcrypt.h (which in turns include gpg-error.h) *after* we
+"noreturn" was defined in macro.h.
+
+Upstream: https://github.com/systemd/systemd/pull/8456
+Signed-off-by: Stefan Becker <chemobejk@gmail.com>
+---
+ src/basic/log.c                         |  4 ++--
+ src/basic/log.h                         |  4 ++--
+ src/basic/macro.h                       | 19 +++++++++----------
+ src/basic/process-util.c                |  2 +-
+ src/basic/process-util.h                |  2 +-
+ src/core/main.c                         |  4 ++--
+ src/journal/test-journal-interleaving.c |  2 +-
+ src/shared/pager.c                      |  2 +-
+ src/udev/collect/collect.c              |  2 +-
+ 9 files changed, 20 insertions(+), 21 deletions(-)
+
+diff --git a/src/basic/log.c b/src/basic/log.c
+index 7a7f2cbec13..16a2431c548 100644
+--- a/src/basic/log.c
++++ b/src/basic/log.c
+@@ -814,7 +814,7 @@ static void log_assert(
+         log_dispatch_internal(level, 0, file, line, func, NULL, NULL, NULL, NULL, buffer);
+ }
+ 
+-noreturn void log_assert_failed_realm(
++_noreturn_ void log_assert_failed_realm(
+                 LogRealm realm,
+                 const char *text,
+                 const char *file,
+@@ -826,7 +826,7 @@ noreturn void log_assert_failed_realm(
+         abort();
+ }
+ 
+-noreturn void log_assert_failed_unreachable_realm(
++_noreturn_ void log_assert_failed_unreachable_realm(
+                 LogRealm realm,
+                 const char *text,
+                 const char *file,
+diff --git a/src/basic/log.h b/src/basic/log.h
+index efcf0f1bfc1..314be128a23 100644
+--- a/src/basic/log.h
++++ b/src/basic/log.h
+@@ -186,7 +186,7 @@ int log_dump_internal(
+                 char *buffer);
+ 
+ /* Logging for various assertions */
+-noreturn void log_assert_failed_realm(
++_noreturn_ void log_assert_failed_realm(
+                 LogRealm realm,
+                 const char *text,
+                 const char *file,
+@@ -195,7 +195,7 @@ noreturn void log_assert_failed_realm(
+ #define log_assert_failed(text, ...) \
+         log_assert_failed_realm(LOG_REALM, (text), __VA_ARGS__)
+ 
+-noreturn void log_assert_failed_unreachable_realm(
++_noreturn_ void log_assert_failed_unreachable_realm(
+                 LogRealm realm,
+                 const char *text,
+                 const char *file,
+diff --git a/src/basic/macro.h b/src/basic/macro.h
+index 95be63a2040..8911edfc4be 100644
+--- a/src/basic/macro.h
++++ b/src/basic/macro.h
+@@ -53,6 +53,15 @@
+ #else
+ #define _fallthrough_
+ #endif
++/* Define C11 noreturn without <stdnoreturn.h> and even on older gcc
++ * compiler versions */
++#ifndef _noreturn_
++#if __STDC_VERSION__ >= 201112L
++#define _noreturn_ _Noreturn
++#else
++#define _noreturn_ __attribute__((noreturn))
++#endif
++#endif
+ 
+ /* Temporarily disable some warnings */
+ #define DISABLE_WARNING_DECLARATION_AFTER_STATEMENT                     \
+@@ -414,16 +423,6 @@ static inline unsigned long ALIGN_POWER2(unsigned long u) {
+ #endif
+ #endif
+ 
+-/* Define C11 noreturn without <stdnoreturn.h> and even on older gcc
+- * compiler versions */
+-#ifndef noreturn
+-#if __STDC_VERSION__ >= 201112L
+-#define noreturn _Noreturn
+-#else
+-#define noreturn __attribute__((noreturn))
+-#endif
+-#endif
+-
+ #define DEFINE_TRIVIAL_CLEANUP_FUNC(type, func)                 \
+         static inline void func##p(type *p) {                   \
+                 if (*p)                                         \
+diff --git a/src/basic/process-util.c b/src/basic/process-util.c
+index aa9846db5dc..e6120af5b68 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -987,7 +987,7 @@ bool is_main_thread(void) {
+         return cached > 0;
+ }
+ 
+-noreturn void freeze(void) {
++_noreturn_ void freeze(void) {
+ 
+         log_close();
+ 
+diff --git a/src/basic/process-util.h b/src/basic/process-util.h
+index 93029e36e5f..5170adec7bb 100644
+--- a/src/basic/process-util.h
++++ b/src/basic/process-util.h
+@@ -91,7 +91,7 @@ int pid_from_same_root_fs(pid_t pid);
+ 
+ bool is_main_thread(void);
+ 
+-noreturn void freeze(void);
++_noreturn_ void freeze(void);
+ 
+ bool oom_score_adjust_is_valid(int oa);
+ 
+diff --git a/src/core/main.c b/src/core/main.c
+index 076846a41c0..4b2d1492373 100644
+--- a/src/core/main.c
++++ b/src/core/main.c
+@@ -141,7 +141,7 @@ static uint64_t arg_default_tasks_max = UINT64_MAX;
+ static sd_id128_t arg_machine_id = {};
+ static EmergencyAction arg_cad_burst_action = EMERGENCY_ACTION_REBOOT_FORCE;
+ 
+-noreturn static void freeze_or_reboot(void) {
++_noreturn_ static void freeze_or_reboot(void) {
+ 
+         if (arg_crash_reboot) {
+                 log_notice("Rebooting in 10s...");
+@@ -156,7 +156,7 @@ noreturn static void freeze_or_reboot(void) {
+         freeze();
+ }
+ 
+-noreturn static void crash(int sig) {
++_noreturn_ static void crash(int sig) {
+         struct sigaction sa;
+         pid_t pid;
+ 
+diff --git a/src/journal/test-journal-interleaving.c b/src/journal/test-journal-interleaving.c
+index 5a88b2774fa..d87bdbdd32a 100644
+--- a/src/journal/test-journal-interleaving.c
++++ b/src/journal/test-journal-interleaving.c
+@@ -37,7 +37,7 @@
+ 
+ static bool arg_keep = false;
+ 
+-noreturn static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) {
++_noreturn_ static void log_assert_errno(const char *text, int error, const char *file, int line, const char *func) {
+         log_internal(LOG_CRIT, error, file, line, func,
+                      "'%s' failed at %s:%u (%s): %m", text, file, line, func);
+         abort();
+diff --git a/src/shared/pager.c b/src/shared/pager.c
+index 75db3c985bd..681af9c40e3 100644
+--- a/src/shared/pager.c
++++ b/src/shared/pager.c
+@@ -47,7 +47,7 @@ static int stored_stderr = -1;
+ static bool stdout_redirected = false;
+ static bool stderr_redirected = false;
+ 
+-noreturn static void pager_fallback(void) {
++_noreturn_ static void pager_fallback(void) {
+         int r;
+ 
+         r = copy_bytes(STDIN_FILENO, STDOUT_FILENO, (uint64_t) -1, 0);
+diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c
+index 2821640e93b..c8fa47b3d7d 100644
+--- a/src/udev/collect/collect.c
++++ b/src/udev/collect/collect.c
+@@ -58,7 +58,7 @@ static inline struct _mate *node_to_mate(struct udev_list_node *node)
+         return container_of(node, struct _mate, node);
+ }
+ 
+-noreturn static void sig_alrm(int signo)
++_noreturn_ static void sig_alrm(int signo)
+ {
+         exit(4);
+ }