diff options
Diffstat (limited to 'external/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-Fix-build-with-musl.patch')
-rw-r--r-- | external/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-Fix-build-with-musl.patch | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/external/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-Fix-build-with-musl.patch b/external/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-Fix-build-with-musl.patch new file mode 100644 index 00000000..196a3358 --- /dev/null +++ b/external/meta-openembedded/meta-networking/recipes-connectivity/networkmanager/networkmanager/musl/0002-Fix-build-with-musl.patch @@ -0,0 +1,116 @@ +From 877fbb4e848629ff57371b5bdb0d56369abe9d81 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Andreas=20M=C3=BCller?= <schnitzeltony@gmail.com> +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 <schnitzeltony@gmail.com> + +--- + 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 <sys/socket.h> +-#include <linux/if_arp.h> + + #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 <NetworkManager.h> can be included directly." + #endif + ++/* include as early as possible for musl */ ++#include <netinet/if_ether.h> ++/* #include <net/if_arp.h> - uncoment for broken dependents?? */ ++ + #include <glib.h> + + #include <netinet/in.h> +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 <stdlib.h> ++/* include as early as possible for musl */ ++#include <netinet/if_ether.h> ++#include <net/if_arp.h> + + /*****************************************************************************/ + +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 <netinet/in.h> ++#include <net/if.h> + #include <unistd.h> + #include <sys/ioctl.h> + #include <signal.h> +@@ -17,7 +18,6 @@ + #include <arpa/inet.h> + #include <fcntl.h> + #include <linux/if_addr.h> +-#include <linux/if_arp.h> + #include <linux/rtnetlink.h> + #include <linux/pkt_sched.h> + +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 <libudev.h> + #include <linux/fib_rules.h> + #include <linux/ip.h> +-#include <linux/if_arp.h> + #include <linux/if_bridge.h> + #include <linux/if_link.h> + #include <linux/if_tun.h> |