Skip to contentSkip to conversation

go-native: use nonarch_libdir

PATCH Superseded Dan McGregor 2 participants 6 messages May 9, 2018

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 go-native: use nonarch_libdir

From: Dan McGregor <[email protected]>

Setting staging_libdir to libdir caused unnecessary rebuilds of go-native when switching from a multilib build to a non-multilib build. Switch to nonarch_libdir because that's the same on both multilib and regular builds.

---
 meta/recipes-devtools/go/go-native.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-devtools/go/go-native.inc +1 -1
index b76fb0825e4..76c83848cd3 100644
@@ -1,6 +1,6 @@
 # Use immediate assingment here to get the original (/usr/lib)
 # instead of the one rewritten by native.bbclass.
-nonstaging_libdir := "${libdir}"
+nonstaging_libdir := "${nonarch_libdir}"
 
 inherit native
 
Signature · 1 line
2.18.0-dev
#1 lore raw

PATCH 2/2 systemd: backport fix for newer gpg-error.

From: Dan McGregor <[email protected]>

Fix a #define conflict with new libgpg-error when gcrypt PACKAGECONFIG option is enabled.

---
 ...rename-noreturn-into-_noreturn_-8456.patch | 200 ++++++++++++++++++
 meta/recipes-core/systemd/systemd_237.bb      |   1 +
 2 files changed, 201 insertions(+)
 create mode 100644 meta/recipes-core/systemd/systemd/0001-basic-macros-rename-noreturn-into-_noreturn_-8456.patch
meta/recipes-core/systemd/systemd/0001-basic-macros-rename-noreturn-into-_noreturn_-8456.patch new file +200 -0
new file mode 100644
index 00000000000..5e1d6383fc5
@@ -0,0 +1,200 @@
+Upstream-Status: Backport
+
+From da2c92fd08f6ffb432de16128ff5670c91005e8f Mon Sep 17 00:00:00 2001
+From: Franck Bui <[email protected]>
+Date: Thu, 15 Mar 2018 06:23:46 +0100
+Subject: [PATCH] basic/macros: rename noreturn into _noreturn_ (#8456)
+
+"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.
+---
+ 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 12ee65a5c..837c7631d 100644
+--- a/src/basic/log.c
++++ b/src/basic/log.c
+@@ -808,7 +808,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,
+@@ -820,7 +820,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 5b5a25bd6..c057794c1 100644
+--- a/src/basic/log.h
++++ b/src/basic/log.h
+@@ -199,7 +199,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,
+@@ -208,7 +208,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 89bdd852a..3a6fc6f58 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 dc7c9ef9e..f84debdd5 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -940,7 +940,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 9fabe4a5b..1a3f3ca11 100644
+--- a/src/basic/process-util.h
++++ b/src/basic/process-util.h
+@@ -90,7 +90,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 56200a8fa..484b53d5f 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 5a88b2774..d87bdbdd3 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 75db3c985..681af9c40 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 3e278bd63..c0761a374 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);
+ }
+-- 
+2.18.0-dev
+
meta/recipes-core/systemd/systemd_237.bb +1 -0
index 150f5b2e180..744d622ab86 100644
@@ -50,6 +50,7 @@ SRC_URI += "file://touchscreen.rules \
            file://0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
            file://0031-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch \
            file://0032-memfd.patch \
+           file://0001-basic-macros-rename-noreturn-into-_noreturn_-8456.patch \
            "
 SRC_URI_append_qemuall = " file://0001-core-device.c-Change-the-default-device-timeout-to-2.patch"
 
Signature · 1 line
2.18.0-dev
#2 lore raw

Re: [PATCH 2/2] systemd: backport fix for newer gpg-error.

Quoted 4 lines · Dan McGregor

From: Dan McGregor <[email protected]>

Fix a #define conflict with new libgpg-error when gcrypt PACKAGECONFIG option is enabled.

Looks like this is a duplicate.

Quoted 229 lines
---
 ...rename-noreturn-into-_noreturn_-8456.patch | 200 ++++++++++++++++++
 meta/recipes-core/systemd/systemd_237.bb      |   1 +
 2 files changed, 201 insertions(+)
 create mode 100644 meta/recipes-core/systemd/systemd/0001-basic-macros-rename-noreturn-into-_noreturn_-8456.patch
meta/recipes-core/systemd/systemd/0001-basic-macros-rename-noreturn-into-_noreturn_-8456.patch new file +200 -0
new file mode 100644
index 00000000000..5e1d6383fc5
@@ -0,0 +1,200 @@
+Upstream-Status: Backport
+
+From da2c92fd08f6ffb432de16128ff5670c91005e8f Mon Sep 17 00:00:00 2001
+From: Franck Bui <[email protected]>
+Date: Thu, 15 Mar 2018 06:23:46 +0100
+Subject: [PATCH] basic/macros: rename noreturn into _noreturn_ (#8456)
+
+"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.
+---
+ 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 12ee65a5c..837c7631d 100644
+--- a/src/basic/log.c
++++ b/src/basic/log.c
+@@ -808,7 +808,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,
+@@ -820,7 +820,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 5b5a25bd6..c057794c1 100644
+--- a/src/basic/log.h
++++ b/src/basic/log.h
+@@ -199,7 +199,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,
+@@ -208,7 +208,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 89bdd852a..3a6fc6f58 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 dc7c9ef9e..f84debdd5 100644
+--- a/src/basic/process-util.c
++++ b/src/basic/process-util.c
+@@ -940,7 +940,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 9fabe4a5b..1a3f3ca11 100644
+--- a/src/basic/process-util.h
++++ b/src/basic/process-util.h
+@@ -90,7 +90,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 56200a8fa..484b53d5f 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 5a88b2774..d87bdbdd3 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 75db3c985..681af9c40 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 3e278bd63..c0761a374 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);
+ }
+--
+2.18.0-dev
+
meta/recipes-core/systemd/systemd_237.bb +1 -1
index 150f5b2e180..744d622ab86 100644
@@ -50,6 +50,7 @@ SRC_URI += "file://touchscreen.rules \
            file://0030-fix-missing-of-__register_atfork-for-non-glibc-build.patch \
            file://0031-fix-missing-ULONG_LONG_MAX-definition-in-case-of-mus.patch \
            file://0032-memfd.patch \
+           file://0001-basic-macros-rename-noreturn-into-_noreturn_-8456.patch \
            "
 SRC_URI_append_qemuall = " file://0001-core-device.c-Change-the-default-device-timeout-to-2.patch"
 
--

2.18.0-dev

#3 lore raw
In reply to Dan McGregor

Is that *right* though? Non-arch libdir is for architecture-independent pieces as the name suggests.

Ross

Quoted 34 lines · Dan McGregor

From: Dan McGregor <[email protected]>

Setting staging_libdir to libdir caused unnecessary rebuilds of go-native when switching from a multilib build to a non-multilib build. Switch to nonarch_libdir because that's the same on both multilib and regular builds.

---
 meta/recipes-devtools/go/go-native.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-devtools/go/go-native.inc +1 -2
index b76fb0825e4..76c83848cd3 100644
@@ -1,6 +1,6 @@
 # Use immediate assingment here to get the original (/usr/lib)
 # instead of the one rewritten by native.bbclass.
-nonstaging_libdir := "${libdir}"
+nonstaging_libdir := "${nonarch_libdir}"
 
 inherit native
 
--

2.18.0-dev

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

#4 lore raw
Quoted 2 lines · Ross

Is that *right* though? Non-arch libdir is for architecture-independent pieces as the name suggests.

Looking at it again, no. It's not. That was just the first solution that came to my head.

I think the right solution is to use libdir_native, which doesn't change at all, and nonstaging_libdir can go away entirely.

Quoted 40 lines

Ross

Quoted 34 lines · Dan McGregor

From: Dan McGregor <[email protected]>

Setting staging_libdir to libdir caused unnecessary rebuilds of go-native when switching from a multilib build to a non-multilib build. Switch to nonarch_libdir because that's the same on both multilib and regular builds.

---
 meta/recipes-devtools/go/go-native.inc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
meta/recipes-devtools/go/go-native.inc +1 -2
index b76fb0825e4..76c83848cd3 100644
@@ -1,6 +1,6 @@
 # Use immediate assingment here to get the original (/usr/lib)
 # instead of the one rewritten by native.bbclass.
-nonstaging_libdir := "${libdir}"
+nonstaging_libdir := "${nonarch_libdir}"
 
 inherit native
 
--

2.18.0-dev

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

#5 lore raw

PATCH v2 1/1 go-native: use libdir_native

In reply to Dan McGregor

From: Dan McGregor <[email protected]>

Setting staging_libdir to libdir caused unnecessary rebuilds of go-native when switching from a multilib build to a non-multilib build. Switch to libdir_native because it doesn't change based on target configuration.

---
 meta/recipes-devtools/go/go-native.inc | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)
meta/recipes-devtools/go/go-native.inc +1 -5
index b76fb0825e4..207708745e0 100644
@@ -1,7 +1,3 @@
-# Use immediate assingment here to get the original (/usr/lib)
-# instead of the one rewritten by native.bbclass.
-nonstaging_libdir := "${libdir}"
-
 inherit native
 
 SRC_URI_append = " https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz;name=bootstrap;subdir=go1.4"
@@ -20,7 +16,7 @@ do_configure() {
 }
 
 do_compile() {
-	export GOROOT_FINAL="${nonstaging_libdir}/go"
+	export GOROOT_FINAL="${libdir_native}/go"
 	export GOROOT_BOOTSTRAP="${WORKDIR}/go1.4/go"
 
 	cd src
Signature · 1 line
2.18.0-dev