aboutsummaryrefslogtreecommitdiffstats
path: root/package/libs/libnl
diff options
context:
space:
mode:
Diffstat (limited to 'package/libs/libnl')
-rw-r--r--package/libs/libnl/Makefile16
-rw-r--r--package/libs/libnl/patches/0001-lib-Escape-usage-of-strerror_l-if-it-doesn-t-exist-i.patch105
-rw-r--r--package/libs/libnl/patches/100-build-add-Libs.private-field-in-libnl-pkg-config-file.patch30
-rw-r--r--package/libs/libnl/patches/101-add-musl-workaround-to-the-libc-compat.h-copy.patch103
-rw-r--r--package/libs/libnl/patches/102-revert-build-enable-building-cli-during-tests.patch115
5 files changed, 254 insertions, 115 deletions
diff --git a/package/libs/libnl/Makefile b/package/libs/libnl/Makefile
index 7916556c00..67201cc7cc 100644
--- a/package/libs/libnl/Makefile
+++ b/package/libs/libnl/Makefile
@@ -8,14 +8,17 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=libnl
-PKG_VERSION:=3.2.29
+PKG_VERSION:=3.3.0
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
-PKG_SOURCE_URL:=https://github.com/thom311/libnl/releases/download/libnl3_2_29
-PKG_HASH:=0beb593dc6abfffa18a5c787b27884979c1b7e7f1fd468c801e3cc938a685922
+PKG_SOURCE_URL:=https://github.com/thom311/libnl/releases/download/libnl3_3_0
+PKG_HASH:=705468b5ae4cd1eb099d2d1c476d6a3abe519bc2810becf12fb1e32de1e074e4
PKG_LICENSE:=LGPL-2.1
+PKG_INSTALL:=1
+PKG_FIXUP:=autoreconf
+
include $(INCLUDE_DIR)/package.mk
define Package/libnl/default
@@ -77,13 +80,6 @@ endef
TARGET_CFLAGS += -ffunction-sections $(FPIC)
-define Build/Compile
- $(call Build/Compile/Default)
- make -C $(PKG_BUILD_DIR) \
- DESTDIR="$(PKG_INSTALL_DIR)" \
- install
-endef
-
define Build/InstallDev
$(INSTALL_DIR) $(1)/usr/include/libnl3 $(1)/usr/lib/pkgconfig
$(CP) $(PKG_INSTALL_DIR)/usr/include/libnl3/* $(1)/usr/include/libnl3/
diff --git a/package/libs/libnl/patches/0001-lib-Escape-usage-of-strerror_l-if-it-doesn-t-exist-i.patch b/package/libs/libnl/patches/0001-lib-Escape-usage-of-strerror_l-if-it-doesn-t-exist-i.patch
deleted file mode 100644
index a31ef47729..0000000000
--- a/package/libs/libnl/patches/0001-lib-Escape-usage-of-strerror_l-if-it-doesn-t-exist-i.patch
+++ /dev/null
@@ -1,105 +0,0 @@
-From 098a4cc35b0da4438b8b67a914edecebef5bb6a9 Mon Sep 17 00:00:00 2001
-From: Alexey Brodkin <abrodkin@synopsys.com>
-Date: Fri, 10 Mar 2017 13:22:14 +0300
-Subject: [PATCH] lib: Escape usage of strerror_l() if it doesn't exist in libc
-
-uClibc doesn't implement strerror_l() and thus libnl starting from
-3.2.29 couldn't be compiled with it any longer.
-
-To work-around that problem we'll just do a check on strerror_l()
-availability during configuration and if it's not there just fall back
-to locale-less strerror().
-
-Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
-Cc: Andre Draszik <adraszik@tycoint.com>
-Cc: Thomas Haller <thaller@redhat.com>
----
-
-This patch is now accepted upstream and will be a part of the next libnl
-release, see
-https://github.com/thom311/libnl/commit/e15966ac7f3b43df2acf869f98089762807d0568
-
- configure.ac | 2 ++
- lib/utils.c | 8 +++++++-
- src/lib/utils.c | 6 ++++++
- 3 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/configure.ac b/configure.ac
-index 68b285e5b15c..2739b997ee3a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -121,6 +121,8 @@ fi
-
- AC_CONFIG_SUBDIRS([doc])
-
-+AC_CHECK_FUNCS([strerror_l])
-+
- AC_CONFIG_FILES([
- Makefile
- libnl-3.0.pc
-diff --git a/lib/utils.c b/lib/utils.c
-index fb350d13fd2f..06273c5b291e 100644
---- a/lib/utils.c
-+++ b/lib/utils.c
-@@ -30,7 +30,9 @@
- #include <netlink/utils.h>
- #include <linux/socket.h>
- #include <stdlib.h> /* exit() */
-+#ifdef HAVE_STRERROR_L
- #include <locale.h>
-+#endif
-
- /**
- * Global variable indicating the desired level of debugging output.
-@@ -123,9 +125,10 @@ int __nl_read_num_str_file(const char *path, int (*cb)(long, const char *))
-
- const char *nl_strerror_l(int err)
- {
-+ const char *buf;
-+#ifdef HAVE_STRERROR_L
- int errno_save = errno;
- locale_t loc = newlocale(LC_MESSAGES_MASK, "", (locale_t)0);
-- const char *buf;
-
- if (loc == (locale_t)0) {
- if (errno == ENOENT)
-@@ -140,6 +143,9 @@ const char *nl_strerror_l(int err)
- }
-
- errno = errno_save;
-+#else
-+ buf = strerror(err);
-+#endif
- return buf;
- }
- /** @endcond */
-diff --git a/src/lib/utils.c b/src/lib/utils.c
-index 5878f279c364..feb1d4ef4056 100644
---- a/src/lib/utils.c
-+++ b/src/lib/utils.c
-@@ -81,6 +81,7 @@ void nl_cli_fatal(int err, const char *fmt, ...)
- fprintf(stderr, "\n");
- } else {
- char *buf;
-+#ifdef HAVE_STRERROR_L
- locale_t loc = newlocale(LC_MESSAGES_MASK, "", (locale_t)0);
- if (loc == (locale_t)0) {
- if (errno == ENOENT)
-@@ -91,9 +92,14 @@ void nl_cli_fatal(int err, const char *fmt, ...)
- }
- if (loc != (locale_t)0)
- buf = strerror_l(err, loc);
-+#else
-+ buf = strerror(err);
-+#endif
- fprintf(stderr, "%s\n", buf);
-+#ifdef HAVE_STRERROR_L
- if (loc != (locale_t)0)
- freelocale(loc);
-+#endif
- }
-
- exit(abs(err));
---
-2.7.4
-
diff --git a/package/libs/libnl/patches/100-build-add-Libs.private-field-in-libnl-pkg-config-file.patch b/package/libs/libnl/patches/100-build-add-Libs.private-field-in-libnl-pkg-config-file.patch
new file mode 100644
index 0000000000..845a593761
--- /dev/null
+++ b/package/libs/libnl/patches/100-build-add-Libs.private-field-in-libnl-pkg-config-file.patch
@@ -0,0 +1,30 @@
+From db0d59cd06f3ffd350379847c0885e1bfb85af0f Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Sat, 7 Mar 2015 11:34:42 +0100
+Subject: [PATCH 2/2] build: add Libs.private field in libnl pkg-config file
+
+In order to support static linking, the libnl pkg-config file should
+indicate in its Libs.private field the libraries that libnl-3.0.a
+requires. The LIBS variable contains the appropriate list of
+libraries: -lm in all cases, and -lpthread when pthread support is
+enabled. This allows to statically link applications against libnl
+properly.
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ libnl-3.0.pc.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libnl-3.0.pc.in b/libnl-3.0.pc.in
+index b87e3dc..ddbc999 100644
+--- a/libnl-3.0.pc.in
++++ b/libnl-3.0.pc.in
+@@ -7,4 +7,5 @@ Name: libnl
+ Description: Convenience library for netlink sockets
+ Version: @PACKAGE_VERSION@
+ Libs: -L${libdir} -lnl-@MAJ_VERSION@
++Libs.private: @LIBS@
+ Cflags: -I${includedir}/libnl@MAJ_VERSION@
+--
+2.1.0
+
diff --git a/package/libs/libnl/patches/101-add-musl-workaround-to-the-libc-compat.h-copy.patch b/package/libs/libnl/patches/101-add-musl-workaround-to-the-libc-compat.h-copy.patch
new file mode 100644
index 0000000000..11dc75b898
--- /dev/null
+++ b/package/libs/libnl/patches/101-add-musl-workaround-to-the-libc-compat.h-copy.patch
@@ -0,0 +1,103 @@
+diff -Naur libnl-3.3.0_rc1.orig/include/linux-private/linux/if_ether.h libnl-3.3.0_rc1/include/linux-private/linux/if_ether.h
+--- /include/linux-private/linux/if_ether.h 2017-03-08 19:56:31.824516933 -0800
++++ /include/linux-private/linux/if_ether.h 2017-03-08 20:07:01.938237767 -0800
+@@ -22,6 +22,7 @@
+ #define _LINUX_IF_ETHER_H
+
+ #include <linux/types.h>
++#include <linux/libc-compat.h>
+
+ /*
+ * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
+@@ -117,10 +118,12 @@
+ * This is an Ethernet frame header.
+ */
+
++#if __UAPI_DEF_ETHHDR
+ struct ethhdr {
+ unsigned char h_dest[ETH_ALEN]; /* destination eth addr */
+ unsigned char h_source[ETH_ALEN]; /* source ether addr */
+ __be16 h_proto; /* packet type ID field */
+ } __attribute__((packed));
++#endif
+
+ #endif /* _LINUX_IF_ETHER_H */
+diff -Naur libnl-3.3.0_rc1.orig/include/linux-private/linux/libc-compat.h libnl-3.3.0_rc1/include/linux-private/linux/libc-compat.h
+--- /include/linux-private/linux/libc-compat.h 2017-03-08 19:56:31.823516923 -0800
++++ /include/linux-private/linux/libc-compat.h 2017-03-08 20:12:30.376843489 -0800
+@@ -48,10 +48,18 @@
+ #ifndef _LIBC_COMPAT_H
+ #define _LIBC_COMPAT_H
+
+-/* We have included glibc headers... */
+-#if defined(__GLIBC__)
++/* We're used from userspace... */
++#if !defined(__KERNEL__)
+
+-/* Coordinate with glibc netinet/in.h header. */
++/* Coordinate with libc netinet/if_ether.h */
++#ifdef _NETINET_IF_ETHER_H /* musl */
++#define __UAPI_DEF_ETHHDR 0
++#else
++/* glibc uses __NETINET_IF_ETHER_H, and uses the uapi header. */
++#define __UAPI_DEF_ETHHDR 1
++#endif
++
++/* Coordinate with libc netinet/in.h header. */
+ #if defined(_NETINET_IN_H)
+
+ /* GLIBC headers included first so don't define anything
+@@ -64,15 +72,7 @@
+ #define __UAPI_DEF_IN_CLASS 0
+
+ #define __UAPI_DEF_IN6_ADDR 0
+-/* The exception is the in6_addr macros which must be defined
+- * if the glibc code didn't define them. This guard matches
+- * the guard in glibc/inet/netinet/in.h which defines the
+- * additional in6_addr macros e.g. s6_addr16, and s6_addr32. */
+-#if defined(__USE_MISC) || defined (__USE_GNU)
+ #define __UAPI_DEF_IN6_ADDR_ALT 0
+-#else
+-#define __UAPI_DEF_IN6_ADDR_ALT 1
+-#endif
+ #define __UAPI_DEF_SOCKADDR_IN6 0
+ #define __UAPI_DEF_IPV6_MREQ 0
+ #define __UAPI_DEF_IPPROTO_V6 0
+@@ -83,7 +83,7 @@
+ #else
+
+ /* Linux headers included first, and we must define everything
+- * we need. The expectation is that glibc will check the
++ * we need. The expectation is that libc will check the
+ * __UAPI_DEF_* defines and adjust appropriately. */
+ #define __UAPI_DEF_IN_ADDR 1
+ #define __UAPI_DEF_IN_IPPROTO 1
+@@ -93,7 +93,7 @@
+ #define __UAPI_DEF_IN_CLASS 1
+
+ #define __UAPI_DEF_IN6_ADDR 1
+-/* We unconditionally define the in6_addr macros and glibc must
++/* We unconditionally define the in6_addr macros and libc must
+ * coordinate. */
+ #define __UAPI_DEF_IN6_ADDR_ALT 1
+ #define __UAPI_DEF_SOCKADDR_IN6 1
+@@ -115,7 +115,10 @@
+ /* If we did not see any headers from any supported C libraries,
+ * or we are being included in the kernel, then define everything
+ * that we need. */
+-#else /* !defined(__GLIBC__) */
++#else /* defined(__KERNEL__) */
++
++/* Definitions for if/ether.h */
++#define __UAPI_DEF_ETHHDR 1
+
+ /* Definitions for in.h */
+ #define __UAPI_DEF_IN_ADDR 1
+@@ -138,6 +141,6 @@
+ /* Definitions for xattr.h */
+ #define __UAPI_DEF_XATTR 1
+
+-#endif /* __GLIBC__ */
++#endif /* defined(__KERNEL__) */
+
+ #endif /* _LIBC_COMPAT_H */
diff --git a/package/libs/libnl/patches/102-revert-build-enable-building-cli-during-tests.patch b/package/libs/libnl/patches/102-revert-build-enable-building-cli-during-tests.patch
new file mode 100644
index 0000000000..f715bb83f9
--- /dev/null
+++ b/package/libs/libnl/patches/102-revert-build-enable-building-cli-during-tests.patch
@@ -0,0 +1,115 @@
+From 68f8393bd356a3d0598cf77e1044b7e8b98aa4d8 Mon Sep 17 00:00:00 2001
+Message-Id: <68f8393bd356a3d0598cf77e1044b7e8b98aa4d8.1493920165.git.baruch@tkos.co.il>
+From: Baruch Siach <baruch@tkos.co.il>
+Date: Thu, 4 May 2017 15:56:14 +0300
+Subject: [PATCH] Revert "build: enable building cli during tests"
+
+This reverts commit 3cb28534d34392ceec4adead0cfa97039796ccb7.
+
+Contrary to what 3cb28534d commit log claims, the cli programs depend on
+dynamic libraries support of the toolchain. Enabling cli programs
+unconditionally breaks static build as follows:
+
+In file included from lib/cli/cls/basic.c:12:0:
+./include/netlink/cli/utils.h:25:19: fatal error: dlfcn.h: No such file or directory
+compilation terminated.
+Makefile:3666: recipe for target 'lib/cli/cls/lib_cli_cls_basic_la-basic.lo' failed
+make[1]: *** [lib/cli/cls/lib_cli_cls_basic_la-basic.lo] Error 1
+
+Revert that commit to restore the ability of static only build of libnl, and
+its dependencies.
+
+Signed-off-by: Baruch Siach <baruch@tkos.co.il>
+---
+Upstream status: https://github.com/thom311/libnl/pull/141
+
+ Makefile.am | 21 ++++++---------------
+ 1 file changed, 6 insertions(+), 15 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 1b95a559304f..279548394650 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -3,8 +3,6 @@
+ ACLOCAL_AMFLAGS = -I m4
+
+ lib_LTLIBRARIES =
+-noinst_LTLIBRARIES =
+-check_LTLIBRARIES =
+
+ check_PROGRAMS =
+ check_programs =
+@@ -500,6 +498,8 @@ EXTRA_lib_libnl_xfrm_3_la_DEPENDENCIES = \
+ lib_libnl_xfrm_3_la_LIBADD = \
+ lib/libnl-3.la
+
++if ENABLE_CLI
++
+ lib_cli_ltlibraries_cls = \
+ lib/cli/cls/basic.la \
+ lib/cli/cls/cgroup.la
+@@ -513,15 +513,11 @@ lib_cli_ltlibraries_qdisc = \
+ lib/cli/qdisc/pfifo.la \
+ lib/cli/qdisc/plug.la
+
+-if ENABLE_CLI
+ pkglib_clsdir = $(pkglibdir)/cli/cls
+ pkglib_qdiscdir = $(pkglibdir)/cli/qdisc
+ pkglib_cls_LTLIBRARIES = $(lib_cli_ltlibraries_cls)
+ pkglib_qdisc_LTLIBRARIES = $(lib_cli_ltlibraries_qdisc)
+-else
+-noinst_LTLIBRARIES += \
+- $(lib_cli_ltlibraries_cls) \
+- $(lib_cli_ltlibraries_qdisc)
++
+ endif
+
+ lib_cli_ldflags = \
+@@ -550,13 +546,8 @@ lib_cli_qdisc_plug_la_LDFLAGS = $(lib_cli_ldflags)
+
+ ###############################################################################
+
+-src_lib_ldflags =
+-
+ if ENABLE_CLI
+ lib_LTLIBRARIES += src/lib/libnl-cli-3.la
+-src_lib_ldflags += -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)
+-else
+-check_LTLIBRARIES += src/lib/libnl-cli-3.la
+ endif
+
+ src_lib_libnl_cli_3_la_SOURCES = \
+@@ -583,7 +574,7 @@ src_lib_libnl_cli_3_la_CPPFLAGS = \
+ -I$(srcdir)/include \
+ -I$(builddir)/include
+ src_lib_libnl_cli_3_la_LDFLAGS = \
+- $(src_lib_ldflags) \
++ -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -Wl,--version-script=$(srcdir)/libnl-cli-3.sym
+ src_lib_libnl_cli_3_la_LIBADD = \
+ lib/libnl-3.la \
+@@ -668,8 +659,6 @@ else
+ noinst_PROGRAMS += $(cli_programs)
+ endif
+ endif
+-else
+-check_PROGRAMS += $(cli_programs)
+ endif
+
+ src_genl_ctrl_list_CPPFLAGS = $(src_cppflags)
+@@ -847,10 +836,12 @@ tests_test_complex_HTB_with_hash_filters_LDADD = $(tests_ldadd)
+ tests_test_u32_filter_with_actions_CPPFLAGS = $(tests_cppflags)
+ tests_test_u32_filter_with_actions_LDADD = $(tests_ldadd)
+
++if ENABLE_CLI
+ check_PROGRAMS += \
+ tests/test-cache-mngr \
+ tests/test-genl \
+ tests/test-nf-cache-mngr
++endif
+
+ tests_cli_ldadd = \
+ $(tests_ldadd) \
+--
+2.11.0
+