From 877fbb4e848629ff57371b5bdb0d56369abe9d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Mon, 8 Apr 2019 23:10:43 +0200 Subject: [PATCH] Fix build with musl MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The build issues caused by definition conflicts musl vs linux-libc headers (error: redefinition of ...) can be reduced to two headers: 1. netinet/if_ether.h <-> linux/if_ether.h: linux-libc header plays well with glibc and musl headers in case libc's variant (netinet/if_ether.h) is included BEFORE linux variant [1]. We add include at two positions: 1. shared/nm-default.h: This is a global which used for networkmanager and is included at the very beginning of all c-files. 2. libnm-core/nm-utils.h: This file makes it into installation and is used by dependent packages as network-manager-applet 2. net/if_arp. <-> linux/if_ether.h: linux-libc: Unfortunaly these files do not play together in harmony. Therefore the libc variant is included early in shared/nm-default.h and occurances linux/if_arp.h are removed. Note: Be aware that this is still nasty business: We have to trust that musl headers define same signatures as linux would do - just because musl-makers consider linux-libc headers 'notoriously broken for userspace' [2] (search for 'error: redefinition of'). [1] http://lists.openembedded.org/pipermail/openembedded-core/2019-March/280440.html [2] https://wiki.musl-libc.org/faq.html Upstream-Status: Pending Signed-off-by: Andreas Müller --- clients/tui/nmt-device-entry.c | 1 - libnm-core/nm-utils.h | 4 ++++ shared/nm-default.h | 3 +++ src/devices/nm-device.c | 2 +- src/platform/nm-linux-platform.c | 1 - 5 files changed, 8 insertions(+), 3 deletions(-) diff --git a/clients/tui/nmt-device-entry.c b/clients/tui/nmt-device-entry.c index 4ab5932..915248c 100644 --- a/clients/tui/nmt-device-entry.c +++ b/clients/tui/nmt-device-entry.c @@ -26,7 +26,6 @@ #include "nmt-device-entry.h" #include -#include #include "nmtui.h" diff --git a/libnm-core/nm-utils.h b/libnm-core/nm-utils.h index 5418a1e..f492da6 100644 --- a/libnm-core/nm-utils.h +++ b/libnm-core/nm-utils.h @@ -10,6 +10,10 @@ #error "Only can be included directly." #endif +/* include as early as possible for musl */ +#include +/* #include - uncoment for broken dependents?? */ + #include #include diff --git a/shared/nm-default.h b/shared/nm-default.h index ace6ede..25357da 100644 --- a/shared/nm-default.h +++ b/shared/nm-default.h @@ -182,6 +182,9 @@ #endif #include +/* include as early as possible for musl */ +#include +#include /*****************************************************************************/ diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 3bbc975..4e8a3f6 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -9,6 +9,7 @@ #include "nm-device.h" #include +#include #include #include #include @@ -17,7 +18,6 @@ #include #include #include -#include #include #include diff --git a/src/platform/nm-linux-platform.c b/src/platform/nm-linux-platform.c index 7abe4df..9f53147 100644 --- a/src/platform/nm-linux-platform.c +++ b/src/platform/nm-linux-platform.c @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include