[v2,2/2] package/iproute2: bump to version 6.11.0

Message ID 20240922181831.2901344-2-dario.binacchi@amarulasolutions.com
State New
Headers show
Series
  • [v2,1/2] package/iproute2: fix building error using designated initializers
Related show

Commit Message

Dario Binacchi Sept. 22, 2024, 6:18 p.m. UTC
The building test using musl as the C library for the cross-compilation
toolchain raised errors that required the application of two additional
patches. Furthermore, it was necessary, by properly setting CFLAGS, to
instruct iproute2 not to define structures already provided by musl to
avoid redefinition errors (i. e. in6_addr and sockaddr_in6).

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---
Added in v2

 ...04-bridge-mst-fix-a-musl-build-issue.patch | 73 +++++++++++++++++++
 ...e-mst-fix-a-further-musl-build-issue.patch | 56 ++++++++++++++
 package/iproute2/iproute2.hash                |  2 +-
 package/iproute2/iproute2.mk                  |  6 +-
 4 files changed, 135 insertions(+), 2 deletions(-)
 create mode 100644 package/iproute2/0004-bridge-mst-fix-a-musl-build-issue.patch
 create mode 100644 package/iproute2/0005-bridge-mst-fix-a-further-musl-build-issue.patch

Comments

Dario Binacchi Sept. 23, 2024, 5:45 a.m. UTC | #1
Hi Baruch,

On Mon, Sep 23, 2024 at 5:57 AM Baruch Siach <baruch@tkos.co.il> wrote:
>
> Hi Dario,
>
> On Sun, Sep 22 2024, Dario Binacchi wrote:
> > The building test using musl as the C library for the cross-compilation
> > toolchain raised errors that required the application of two additional
> > patches. Furthermore, it was necessary, by properly setting CFLAGS, to
> > instruct iproute2 not to define structures already provided by musl to
> > avoid redefinition errors (i. e. in6_addr and sockaddr_in6).
> >
> > Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> > ---
> > Added in v2
> >
> >  ...04-bridge-mst-fix-a-musl-build-issue.patch | 73 +++++++++++++++++++
> >  ...e-mst-fix-a-further-musl-build-issue.patch | 56 ++++++++++++++
> >  package/iproute2/iproute2.hash                |  2 +-
> >  package/iproute2/iproute2.mk                  |  6 +-
> >  4 files changed, 135 insertions(+), 2 deletions(-)
> >  create mode 100644 package/iproute2/0004-bridge-mst-fix-a-musl-build-issue.patch
> >  create mode 100644 package/iproute2/0005-bridge-mst-fix-a-further-musl-build-issue.patch
> >
> > diff --git a/package/iproute2/0004-bridge-mst-fix-a-musl-build-issue.patch b/package/iproute2/0004-bridge-mst-fix-a-musl-build-issue.patch
> > new file mode 100644
> > index 000000000000..9dddfb6e7f26
> > --- /dev/null
> > +++ b/package/iproute2/0004-bridge-mst-fix-a-musl-build-issue.patch
> > @@ -0,0 +1,73 @@
> > +From 0359ee6dc57ee8aa21a3f0f7404422c0f9372d3a Mon Sep 17 00:00:00 2001
> > +From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> > +Date: Sun, 22 Sep 2024 14:00:42 +0200
> > +Subject: [PATCH] bridge: mst: fix a musl build issue
> > +
> > +This patch fixes a compilation error raised by the bump to version 6.11.0
> > +in Buildroot using musl as the C library for the cross-compilation
> > +toolchain.
> > +
> > +After setting the CFLGAS
> > +
> > +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
> > +IPROUTE2_CFLAGS += -D__UAPI_DEF_IN6_ADDR=0 -D__UAPI_DEF_SOCKADDR_IN6=0 \
> > +                     -D__UAPI_DEF_IPV6_MREQ=0
> > +endif
> > +
> > +to fix the following errors:
> > +
> > +In file included from ../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/arpa/inet.h:9,
> > +                 from ../include/libnetlink.h:14,
> > +                 from mst.c:10:
> > +../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:23:8: error: redefinition of 'struct in6_addr'
> > +   23 | struct in6_addr {
> > +      |        ^~~~~~~~
> > +In file included from ../include/uapi/linux/if_bridge.h:19,
> > +                 from mst.c:7:
> > +../include/uapi/linux/in6.h:33:8: note: originally defined here
> > +   33 | struct in6_addr {
> > +      |        ^~~~~~~~
> > +../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:34:8: error: redefinition of 'struct sockaddr_in6'
> > +   34 | struct sockaddr_in6 {
> > +      |        ^~~~~~~~~~~~
> > +../include/uapi/linux/in6.h:50:8: note: originally defined here
> > +   50 | struct sockaddr_in6 {
> > +      |        ^~~~~~~~~~~~
> > +../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:42:8: error: redefinition of 'struct ipv6_mreq'
> > +   42 | struct ipv6_mreq {
> > +      |        ^~~~~~~~~
> > +../include/uapi/linux/in6.h:60:8: note: originally defined here
> > +   60 | struct ipv6_mreq {
> > +
> > +I got this further errors
> > +
> > +../include/uapi/linux/in6.h:72:25: error: field 'flr_dst' has incomplete type
> > +   72 |         struct in6_addr flr_dst;
> > +      |                         ^~~~~~~
> > +../include/uapi/linux/if_bridge.h:711:41: error: field 'ip6' has incomplete type
> > +  711 |                         struct in6_addr ip6;
> > +      |                                         ^~~
> > +
> > +fixed by including the netinet/in.h header.
> > +
> > +Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> > +Upstream: https://patchwork.kernel.org/project/netdevbpf/patch/20240922145011.2104040-1-dario.binacchi@amarulasolutions.com/
> > +---
> > + bridge/mst.c | 1 +
> > + 1 file changed, 1 insertion(+)
> > +
> > +diff --git a/bridge/mst.c b/bridge/mst.c
> > +index 873ca5369fd6..c8f7e6606c3c 100644
> > +--- a/bridge/mst.c
> > ++++ b/bridge/mst.c
> > +@@ -4,6 +4,7 @@
> > +  */
> > +
> > + #include <stdio.h>
> > ++#include <netinet/in.h>
> > + #include <linux/if_bridge.h>
> > + #include <net/if.h>
> > +
> > +--
> > +2.43.0
> > +
> > diff --git a/package/iproute2/0005-bridge-mst-fix-a-further-musl-build-issue.patch b/package/iproute2/0005-bridge-mst-fix-a-further-musl-build-issue.patch
> > new file mode 100644
> > index 000000000000..f4e7c317bf9c
> > --- /dev/null
> > +++ b/package/iproute2/0005-bridge-mst-fix-a-further-musl-build-issue.patch
> > @@ -0,0 +1,56 @@
> > +From 62c4dfff5ff596984ece7960fba49b05d69f37a7 Mon Sep 17 00:00:00 2001
> > +From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> > +Date: Sun, 22 Sep 2024 14:11:18 +0200
> > +Subject: [PATCH] bridge: mst: fix a further musl build issue
> > +
> > +This patch fixes the following build errors:
> > +
> > +In file included from mst.c:11:
> > +../include/json_print.h:80:30: warning: 'struct timeval' declared inside parameter list will not be visible outside of this definition or declaration
> > +   80 | _PRINT_FUNC(tv, const struct timeval *)
> > +      |                              ^~~~~~~
> > +../include/json_print.h:50:37: note: in definition of macro '_PRINT_FUNC'
> > +   50 |                                     type value);                        \
> > +      |                                     ^~~~
> > +../include/json_print.h:80:30: warning: 'struct timeval' declared inside parameter list will not be visible outside of this definition or declaration
> > +   80 | _PRINT_FUNC(tv, const struct timeval *)
> > +      |                              ^~~~~~~
> > +../include/json_print.h:55:45: note: in definition of macro '_PRINT_FUNC'
> > +   55 |                                             type value)                 \
> > +      |                                             ^~~~
> > +../include/json_print.h: In function 'print_tv':
> > +../include/json_print.h:58:48: error: passing argument 5 of 'print_color_tv' from incompatible pointer type [-Wincompatible-pointer-types]
> > +   58 |                                                value);                  \
> > +      |                                                ^~~~~
> > +      |                                                |
> > +      |                                                const struct timeval *
> > +../include/json_print.h:80:1: note: in expansion of macro '_PRINT_FUNC'
> > +   80 | _PRINT_FUNC(tv, const struct timeval *)
> > +      | ^~~~~~~~~~~
> > +../include/json_print.h:50:42: note: expected 'const struct timeval *' but argument is of type 'const struct timeval *'
> > +   50 |                                     type value);                        \
> > +      |                                          ^
> > +../include/json_print.h:80:1: note: in expansion of macro '_PRINT_FUNC'
> > +   80 | _PRINT_FUNC(tv, const struct timeval *)
> > +
> > +Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> > +Upstream: https://patchwork.kernel.org/project/netdevbpf/patch/20240922145011.2104040-2-dario.binacchi@amarulasolutions.com/
> > +---
> > + bridge/mst.c | 1 +
> > + 1 file changed, 1 insertion(+)
> > +
> > +diff --git a/bridge/mst.c b/bridge/mst.c
> > +index c8f7e6606c3c..fccb7fd68140 100644
> > +--- a/bridge/mst.c
> > ++++ b/bridge/mst.c
> > +@@ -4,6 +4,7 @@
> > +  */
> > +
> > + #include <stdio.h>
> > ++#include <sys/time.h>
> > + #include <netinet/in.h>
> > + #include <linux/if_bridge.h>
> > + #include <net/if.h>
> > +--
> > +2.43.0
> > +
> > diff --git a/package/iproute2/iproute2.hash b/package/iproute2/iproute2.hash
> > index 0760183b9e66..028a32439644 100644
> > --- a/package/iproute2/iproute2.hash
> > +++ b/package/iproute2/iproute2.hash
> > @@ -1,3 +1,3 @@
> >  # From https://kernel.org/pub/linux/utils/net/iproute2/sha256sums.asc
> > -sha256  91a62f82737b44905a00fa803369c447d549e914e9a2a4018fdd75b1d54e8dce  iproute2-6.10.0.tar.xz
> > +sha256  1f795398a04aeaacd06a8f6ace2cfd913c33fa5953ca99daae83bb5c534611c3  iproute2-6.11.0.tar.xz
> >  sha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING
> > diff --git a/package/iproute2/iproute2.mk b/package/iproute2/iproute2.mk
> > index 08b890b33117..ae95de045b02 100644
> > --- a/package/iproute2/iproute2.mk
> > +++ b/package/iproute2/iproute2.mk
> > @@ -4,7 +4,7 @@
> >  #
> >  ################################################################################
> >
> > -IPROUTE2_VERSION = 6.10.0
> > +IPROUTE2_VERSION = 6.11.0
> >  IPROUTE2_SOURCE = iproute2-$(IPROUTE2_VERSION).tar.xz
> >  IPROUTE2_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/iproute2
> >  IPROUTE2_DEPENDENCIES = host-bison host-flex host-pkgconf \
> > @@ -53,6 +53,10 @@ endef
> >
> >  # workaround for static_assert on uclibc-ng < 1.0.42
> >  IPROUTE2_CFLAGS = $(TARGET_CFLAGS) -Dstatic_assert=_Static_assert
> > +ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
> > +IPROUTE2_CFLAGS += -D__UAPI_DEF_IN6_ADDR=0 -D__UAPI_DEF_SOCKADDR_IN6=0 \
> > +                     -D__UAPI_DEF_IPV6_MREQ=0
>
> All these macros are defined this way already in musl
> include/netinet/in.h which your patch above adds to #include. Are you
> sure this is necessary?

You are right!
After applying the patches they are not required anymore.
Thanks for your review.

Regards,
Dario

>
> baruch
>
> > +endif
> >
> >  define IPROUTE2_BUILD_CMDS
> >       $(TARGET_MAKE_ENV) LDFLAGS="$(TARGET_LDFLAGS)" \
>
> --
>                                                      ~. .~   Tk Open Systems
> =}------------------------------------------------ooO--U--Ooo------------{=
>    - baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -

Patch

diff --git a/package/iproute2/0004-bridge-mst-fix-a-musl-build-issue.patch b/package/iproute2/0004-bridge-mst-fix-a-musl-build-issue.patch
new file mode 100644
index 000000000000..9dddfb6e7f26
--- /dev/null
+++ b/package/iproute2/0004-bridge-mst-fix-a-musl-build-issue.patch
@@ -0,0 +1,73 @@ 
+From 0359ee6dc57ee8aa21a3f0f7404422c0f9372d3a Mon Sep 17 00:00:00 2001
+From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Date: Sun, 22 Sep 2024 14:00:42 +0200
+Subject: [PATCH] bridge: mst: fix a musl build issue
+
+This patch fixes a compilation error raised by the bump to version 6.11.0
+in Buildroot using musl as the C library for the cross-compilation
+toolchain.
+
+After setting the CFLGAS
+
+ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
+IPROUTE2_CFLAGS += -D__UAPI_DEF_IN6_ADDR=0 -D__UAPI_DEF_SOCKADDR_IN6=0 \
+			-D__UAPI_DEF_IPV6_MREQ=0
+endif
+
+to fix the following errors:
+
+In file included from ../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/arpa/inet.h:9,
+                 from ../include/libnetlink.h:14,
+                 from mst.c:10:
+../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:23:8: error: redefinition of 'struct in6_addr'
+   23 | struct in6_addr {
+      |        ^~~~~~~~
+In file included from ../include/uapi/linux/if_bridge.h:19,
+                 from mst.c:7:
+../include/uapi/linux/in6.h:33:8: note: originally defined here
+   33 | struct in6_addr {
+      |        ^~~~~~~~
+../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:34:8: error: redefinition of 'struct sockaddr_in6'
+   34 | struct sockaddr_in6 {
+      |        ^~~~~~~~~~~~
+../include/uapi/linux/in6.h:50:8: note: originally defined here
+   50 | struct sockaddr_in6 {
+      |        ^~~~~~~~~~~~
+../../../host/mips64-buildroot-linux-musl/sysroot/usr/include/netinet/in.h:42:8: error: redefinition of 'struct ipv6_mreq'
+   42 | struct ipv6_mreq {
+      |        ^~~~~~~~~
+../include/uapi/linux/in6.h:60:8: note: originally defined here
+   60 | struct ipv6_mreq {
+
+I got this further errors
+
+../include/uapi/linux/in6.h:72:25: error: field 'flr_dst' has incomplete type
+   72 |         struct in6_addr flr_dst;
+      |                         ^~~~~~~
+../include/uapi/linux/if_bridge.h:711:41: error: field 'ip6' has incomplete type
+  711 |                         struct in6_addr ip6;
+      |                                         ^~~
+
+fixed by including the netinet/in.h header.
+
+Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Upstream: https://patchwork.kernel.org/project/netdevbpf/patch/20240922145011.2104040-1-dario.binacchi@amarulasolutions.com/
+---
+ bridge/mst.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/bridge/mst.c b/bridge/mst.c
+index 873ca5369fd6..c8f7e6606c3c 100644
+--- a/bridge/mst.c
++++ b/bridge/mst.c
+@@ -4,6 +4,7 @@
+  */
+ 
+ #include <stdio.h>
++#include <netinet/in.h>
+ #include <linux/if_bridge.h>
+ #include <net/if.h>
+ 
+-- 
+2.43.0
+
diff --git a/package/iproute2/0005-bridge-mst-fix-a-further-musl-build-issue.patch b/package/iproute2/0005-bridge-mst-fix-a-further-musl-build-issue.patch
new file mode 100644
index 000000000000..f4e7c317bf9c
--- /dev/null
+++ b/package/iproute2/0005-bridge-mst-fix-a-further-musl-build-issue.patch
@@ -0,0 +1,56 @@ 
+From 62c4dfff5ff596984ece7960fba49b05d69f37a7 Mon Sep 17 00:00:00 2001
+From: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Date: Sun, 22 Sep 2024 14:11:18 +0200
+Subject: [PATCH] bridge: mst: fix a further musl build issue
+
+This patch fixes the following build errors:
+
+In file included from mst.c:11:
+../include/json_print.h:80:30: warning: 'struct timeval' declared inside parameter list will not be visible outside of this definition or declaration
+   80 | _PRINT_FUNC(tv, const struct timeval *)
+      |                              ^~~~~~~
+../include/json_print.h:50:37: note: in definition of macro '_PRINT_FUNC'
+   50 |                                     type value);                        \
+      |                                     ^~~~
+../include/json_print.h:80:30: warning: 'struct timeval' declared inside parameter list will not be visible outside of this definition or declaration
+   80 | _PRINT_FUNC(tv, const struct timeval *)
+      |                              ^~~~~~~
+../include/json_print.h:55:45: note: in definition of macro '_PRINT_FUNC'
+   55 |                                             type value)                 \
+      |                                             ^~~~
+../include/json_print.h: In function 'print_tv':
+../include/json_print.h:58:48: error: passing argument 5 of 'print_color_tv' from incompatible pointer type [-Wincompatible-pointer-types]
+   58 |                                                value);                  \
+      |                                                ^~~~~
+      |                                                |
+      |                                                const struct timeval *
+../include/json_print.h:80:1: note: in expansion of macro '_PRINT_FUNC'
+   80 | _PRINT_FUNC(tv, const struct timeval *)
+      | ^~~~~~~~~~~
+../include/json_print.h:50:42: note: expected 'const struct timeval *' but argument is of type 'const struct timeval *'
+   50 |                                     type value);                        \
+      |                                          ^
+../include/json_print.h:80:1: note: in expansion of macro '_PRINT_FUNC'
+   80 | _PRINT_FUNC(tv, const struct timeval *)
+
+Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
+Upstream: https://patchwork.kernel.org/project/netdevbpf/patch/20240922145011.2104040-2-dario.binacchi@amarulasolutions.com/
+---
+ bridge/mst.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/bridge/mst.c b/bridge/mst.c
+index c8f7e6606c3c..fccb7fd68140 100644
+--- a/bridge/mst.c
++++ b/bridge/mst.c
+@@ -4,6 +4,7 @@
+  */
+ 
+ #include <stdio.h>
++#include <sys/time.h>
+ #include <netinet/in.h>
+ #include <linux/if_bridge.h>
+ #include <net/if.h>
+-- 
+2.43.0
+
diff --git a/package/iproute2/iproute2.hash b/package/iproute2/iproute2.hash
index 0760183b9e66..028a32439644 100644
--- a/package/iproute2/iproute2.hash
+++ b/package/iproute2/iproute2.hash
@@ -1,3 +1,3 @@ 
 # From https://kernel.org/pub/linux/utils/net/iproute2/sha256sums.asc
-sha256  91a62f82737b44905a00fa803369c447d549e914e9a2a4018fdd75b1d54e8dce  iproute2-6.10.0.tar.xz
+sha256  1f795398a04aeaacd06a8f6ace2cfd913c33fa5953ca99daae83bb5c534611c3  iproute2-6.11.0.tar.xz
 sha256  e6d6a009505e345fe949e1310334fcb0747f28dae2856759de102ab66b722cb4  COPYING
diff --git a/package/iproute2/iproute2.mk b/package/iproute2/iproute2.mk
index 08b890b33117..ae95de045b02 100644
--- a/package/iproute2/iproute2.mk
+++ b/package/iproute2/iproute2.mk
@@ -4,7 +4,7 @@ 
 #
 ################################################################################
 
-IPROUTE2_VERSION = 6.10.0
+IPROUTE2_VERSION = 6.11.0
 IPROUTE2_SOURCE = iproute2-$(IPROUTE2_VERSION).tar.xz
 IPROUTE2_SITE = $(BR2_KERNEL_MIRROR)/linux/utils/net/iproute2
 IPROUTE2_DEPENDENCIES = host-bison host-flex host-pkgconf \
@@ -53,6 +53,10 @@  endef
 
 # workaround for static_assert on uclibc-ng < 1.0.42
 IPROUTE2_CFLAGS = $(TARGET_CFLAGS) -Dstatic_assert=_Static_assert
+ifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
+IPROUTE2_CFLAGS += -D__UAPI_DEF_IN6_ADDR=0 -D__UAPI_DEF_SOCKADDR_IN6=0 \
+			-D__UAPI_DEF_IPV6_MREQ=0
+endif
 
 define IPROUTE2_BUILD_CMDS
 	$(TARGET_MAKE_ENV) LDFLAGS="$(TARGET_LDFLAGS)" \