Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] package/frr: bump to version 10.4.1
@ 2025-08-06 13:21 Maxime Leroy
  2025-08-09 15:59 ` Julien Olivain via buildroot
  2025-08-11 14:00 ` [Buildroot] [PATCH v2 0/2] update FRR " Maxime Leroy
  0 siblings, 2 replies; 9+ messages in thread
From: Maxime Leroy @ 2025-08-06 13:21 UTC (permalink / raw)
  To: buildroot; +Cc: Vadim Kochan, Maxime Leroy

Update FRR to the latest stable version (10.4.1 see [1], 10.4.0 see [2]).

As protobuf-c is no longer mandatory (see [3]), a new option
BR2_PACKAGE_FRR_PROTOBUF is added to enable/disable it.

[1] https://github.com/FRRouting/frr/commit/88f5c06cbc1c
[2] https://github.com/FRRouting/frr/releases/tag/frr-10.4.0
[3] https://github.com/FRRouting/frr/commit/e51c16a4ca92
Signed-off-by: Maxime Leroy <maxime@leroys.fr>
---
 package/frr/Config.in | 27 ++++++++++++++++++---------
 package/frr/frr.hash  |  2 +-
 package/frr/frr.mk    | 11 +++++++++--
 3 files changed, 28 insertions(+), 12 deletions(-)

diff --git a/package/frr/Config.in b/package/frr/Config.in
index 211eb83419..feb1aef05a 100644
--- a/package/frr/Config.in
+++ b/package/frr/Config.in
@@ -1,19 +1,15 @@
 config BR2_PACKAGE_FRR
 	bool "frr"
-	depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf-c
+	depends on BR2_TOOLCHAIN_HAS_THREADS # pthread
 	depends on !BR2_STATIC_LIBS # libyang
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c, libyang
-	depends on BR2_INSTALL_LIBSTDCPP # protobuf-c
-	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c
-	depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c
 	select BR2_PACKAGE_BASH
 	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash
 	select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC
 	select BR2_PACKAGE_LIBYANG
 	select BR2_PACKAGE_READLINE
 	select BR2_PACKAGE_JSON_C
-	select BR2_PACKAGE_PROTOBUF_C
 	help
 	  The FRRouting Protocol Suite.
 
@@ -43,11 +39,24 @@ config BR2_PACKAGE_FRR_NHRPD
 	help
 	  Build Next Hop Routing Protocol daemon.
 
+config BR2_PACKAGE_FRR_PROTOBUF
+	bool "Protobuf support (Binary-FPM and MLAG)"
+	default y
+	depends on BR2_INSTALL_LIBSTDCPP # protobuf-c
+	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c
+	depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c
+	select  BR2_PACKAGE_PROTOBUF_C
+	help
+	  Build FRR with protobuf-based Binary-FPM export and MLAG
+	  peer synchronization.
+
 endif
 
-comment "frr needs a toolchain w/ threads, dynamic library, C++, host gcc >= 7"
-	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS
+comment "frr needs a toolchain w/ threads, dynamic library"
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_USE_MMU
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
-		!BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_7
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+
+comment "protobuf support for frr needs a toolchain w/ protobuf, C++, host gcc >= 7"
+	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_7
diff --git a/package/frr/frr.hash b/package/frr/frr.hash
index 414aaec7dd..12030a0df8 100644
--- a/package/frr/frr.hash
+++ b/package/frr/frr.hash
@@ -1,5 +1,5 @@
 # Locally calculated
-sha256  df4bc4f644f93be09f75c0e0e325b2f6a3ee6d1c6db429b6f36874e88a66ee33  frr-10.3.1.tar.gz
+sha256  8e4003eaba168626c5ea7a6735f2c85c87b04214e6f8c8f2715b21f8ae40970b  frr-10.4.1.tar.gz
 sha256  7bf053957d6c38e39a06a112c60ff35b228d3bd03edbe8c9a03508b051128d16  COPYING
 sha256  f9e0c21faf738da586281c0beaad3cd56204c19085a10fe05e4d3d7f8b5863d2  doc/licenses/BSD-2-Clause
 sha256  aca297b8fd3a43e3bb200f1e2e043c0db6c897325f5ff7f23f7530302a6bf713  doc/licenses/BSD-3-Clause
diff --git a/package/frr/frr.mk b/package/frr/frr.mk
index 23a2ca6037..fb7477a211 100644
--- a/package/frr/frr.mk
+++ b/package/frr/frr.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-FRR_VERSION = 10.3.1
+FRR_VERSION = 10.4.1
 FRR_SITE = $(call github,FRRouting,frr,frr-$(FRR_VERSION))
 FRR_LICENSE = GPL-2.0+
 FRR_LICENSE_FILES = \
@@ -25,7 +25,6 @@ FRR_CPE_ID_PRODUCT = free_range_routing
 FRR_AUTORECONF = YES
 
 FRR_DEPENDENCIES = host-frr readline json-c libyang \
-	protobuf-c \
 	$(if $(BR2_PACKAGE_C_ARES),c-ares) \
 	$(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt)
 
@@ -89,6 +88,14 @@ else
 FRR_CONF_OPTS += --disable-bfdd
 endif
 
+# Optional protobuf support
+ifeq ($(BR2_PACKAGE_FRR_PROTOBUF),y)
+FRR_DEPENDENCIES += protobuf-c
+FRR_CONF_OPTS += --enable-protobuf
+else
+FRR_CONF_OPTS += --disable-protobuf
+endif
+
 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
 FRR_CONF_ENV += LIBS=-latomic
 endif
-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Buildroot] [PATCH 1/1] package/frr: bump to version 10.4.1
  2025-08-06 13:21 [Buildroot] [PATCH 1/1] package/frr: bump to version 10.4.1 Maxime Leroy
@ 2025-08-09 15:59 ` Julien Olivain via buildroot
  2025-08-11 14:00 ` [Buildroot] [PATCH v2 0/2] update FRR " Maxime Leroy
  1 sibling, 0 replies; 9+ messages in thread
From: Julien Olivain via buildroot @ 2025-08-09 15:59 UTC (permalink / raw)
  To: Maxime Leroy; +Cc: buildroot, Vadim Kochan

Hi Maxime,

Thanks for the patch.

On 06/08/2025 15:21, Maxime Leroy wrote:
> Update FRR to the latest stable version (10.4.1 see [1], 10.4.0 see 
> [2]).

This bump seems to introduce few build failures. See:
https://gitlab.com/jolivain/buildroot/-/pipelines/1975753351

Most failures seems to be introduced by upstream commit:
https://github.com/FRRouting/frr/commit/ff76fb21d7b3bdf66b1710dc9ffb7bb46f376828
which is adding a use of the "getloadavg()" which is not supported in 
all libc version.

> 
> As protobuf-c is no longer mandatory (see [3]), a new option
> BR2_PACKAGE_FRR_PROTOBUF is added to enable/disable it.
> 
> [1] https://github.com/FRRouting/frr/commit/88f5c06cbc1c
> [2] https://github.com/FRRouting/frr/releases/tag/frr-10.4.0
> [3] https://github.com/FRRouting/frr/commit/e51c16a4ca92
> Signed-off-by: Maxime Leroy <maxime@leroys.fr>

Could you have a look please?

Best regards,

Julien.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v2 0/2] update FRR to version 10.4.1
  2025-08-06 13:21 [Buildroot] [PATCH 1/1] package/frr: bump to version 10.4.1 Maxime Leroy
  2025-08-09 15:59 ` Julien Olivain via buildroot
@ 2025-08-11 14:00 ` Maxime Leroy
  2025-08-11 14:00   ` [Buildroot] [PATCH v2 1/2] package/frr: bump " Maxime Leroy
                     ` (2 more replies)
  1 sibling, 3 replies; 9+ messages in thread
From: Maxime Leroy @ 2025-08-11 14:00 UTC (permalink / raw)
  To: buildroot; +Cc: Vadim Kochan, ju.o, Maxime Leroy

Changes v1 -> v2:
- Fix compilation with uClibc
- Add new option to configure enable-multipath

Maxime Leroy (2):
  package/frr: bump to version 10.4.1
  package/frr: make ECMP max configurable

 ...davg-optional-in-late-timer-warnings.patch | 48 +++++++++++++++++++
 package/frr/Config.in                         | 33 +++++++++----
 package/frr/frr.hash                          |  2 +-
 package/frr/frr.mk                            | 13 +++--
 4 files changed, 83 insertions(+), 13 deletions(-)
 create mode 100644 package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch

-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v2 1/2] package/frr: bump to version 10.4.1
  2025-08-11 14:00 ` [Buildroot] [PATCH v2 0/2] update FRR " Maxime Leroy
@ 2025-08-11 14:00   ` Maxime Leroy
  2025-08-11 14:00   ` [Buildroot] [PATCH v2 2/2] package/frr: make ECMP max configurable Maxime Leroy
  2025-08-11 16:11   ` [Buildroot] [PATCH v3 0/2] update FRR to version 10.4.1 Maxime Leroy
  2 siblings, 0 replies; 9+ messages in thread
From: Maxime Leroy @ 2025-08-11 14:00 UTC (permalink / raw)
  To: buildroot; +Cc: Vadim Kochan, ju.o, Maxime Leroy

Update FRR to the latest stable version (10.4.1 see [1], 10.4.0 see [2]).

As protobuf-c is no longer mandatory (see [3]), a new option
BR2_PACKAGE_FRR_PROTOBUF is added to enable/disable it.

getloadavg function [4] is now used by FRR but older libcs (e.g. uClibc,
dietlibc) lack this function, to fix the compilation, a patch must be
applied on FRR.

[1] https://github.com/FRRouting/frr/commit/88f5c06cbc1c
[2] https://github.com/FRRouting/frr/releases/tag/frr-10.4.0
[3] https://github.com/FRRouting/frr/commit/e51c16a4ca92
[4] https://github.com/FRRouting/frr/commit/ff76fb21d7b3
Signed-off-by: Maxime Leroy <maxime@leroys.fr>

Signed-off-by: Maxime Leroy <maxime@leroys.fr>
---
 ...davg-optional-in-late-timer-warnings.patch | 48 +++++++++++++++++++
 package/frr/Config.in                         | 26 ++++++----
 package/frr/frr.hash                          |  2 +-
 package/frr/frr.mk                            | 11 ++++-
 4 files changed, 75 insertions(+), 12 deletions(-)
 create mode 100644 package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch

diff --git a/package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch b/package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch
new file mode 100644
index 0000000000..9f23dbab7c
--- /dev/null
+++ b/package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch
@@ -0,0 +1,48 @@
+From 037ae16694805c25c501fe8bb3890dad9b43bf34 Mon Sep 17 00:00:00 2001
+From: Maxime Leroy <maxime@leroys.fr>
+Date: Mon, 11 Aug 2025 13:44:02 +0200
+Subject: [PATCH] lib: make getloadavg() optional in late timer warnings
+
+Commit ff76fb21d7b3 ("lib: improve late timer warnings") added an
+unconditional getloadavg() call. Older libcs (e.g. uClibc, dietlibc)
+lack this function, breaking the build. Before, no system load was
+shown, so skipping it restores prior behavior.
+
+Fixes: ff76fb21d7b3 ("lib: improve late timer warnings")
+Signed-off-by: Maxime Leroy <maxime@leroys.fr>
+---
+ configure.ac | 1 +
+ lib/event.c  | 4 ++++
+ 2 files changed, 5 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 87eba6784a..b8ef7bb777 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1369,6 +1369,7 @@ dnl ---------------
+ AC_CHECK_FUNCS([ \
+ 	strlcat strlcpy \
+ 	getgrouplist \
++	getloadavg \
+ 	openat \
+ 	unlinkat \
+ 	posix_fallocate \
+diff --git a/lib/event.c b/lib/event.c
+index 1eb41d07ce..22876574fb 100644
+--- a/lib/event.c
++++ b/lib/event.c
+@@ -1924,7 +1924,11 @@ static void event_tardy_warn(struct event *thread, unsigned long since_us)
+ 	double loadavg[3];
+ 	int rv;
+ 
++#ifdef HAVE_GETLOADAVG
+ 	rv = getloadavg(loadavg, array_size(loadavg));
++#else
++	rv = -1;
++#endif
+ 	if (rv < 0)
+ 		bprintfrr(&fb, "not available");
+ 	else {
+-- 
+2.43.0
+
diff --git a/package/frr/Config.in b/package/frr/Config.in
index 211eb83419..366e0fca82 100644
--- a/package/frr/Config.in
+++ b/package/frr/Config.in
@@ -1,19 +1,15 @@
 config BR2_PACKAGE_FRR
 	bool "frr"
-	depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf-c
+	depends on BR2_TOOLCHAIN_HAS_THREADS # FRR uses pthreads
 	depends on !BR2_STATIC_LIBS # libyang
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c, libyang
-	depends on BR2_INSTALL_LIBSTDCPP # protobuf-c
-	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c
-	depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c
 	select BR2_PACKAGE_BASH
 	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash
 	select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC
 	select BR2_PACKAGE_LIBYANG
 	select BR2_PACKAGE_READLINE
 	select BR2_PACKAGE_JSON_C
-	select BR2_PACKAGE_PROTOBUF_C
 	help
 	  The FRRouting Protocol Suite.
 
@@ -43,11 +39,23 @@ config BR2_PACKAGE_FRR_NHRPD
 	help
 	  Build Next Hop Routing Protocol daemon.
 
+config BR2_PACKAGE_FRR_PROTOBUF
+	bool "Protobuf support (Binary-FPM and MLAG)"
+	default y
+	depends on BR2_HOST_GCC_AT_LEAST_7
+	depends on BR2_INSTALL_LIBSTDCPP
+	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS
+	select  BR2_PACKAGE_PROTOBUF_C
+	help
+	  Build FRR with protobuf-based Binary-FPM export and MLAG peer sync.
+
 endif
 
-comment "frr needs a toolchain w/ threads, dynamic library, C++, host gcc >= 7"
-	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS
+comment "frr needs a toolchain w/ threads, dynamic library"
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_USE_MMU
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
-		!BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_7
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+
+comment "protobuf support for frr needs a toolchain w/ protobuf, C++, host gcc >= 7"
+	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_7
diff --git a/package/frr/frr.hash b/package/frr/frr.hash
index 414aaec7dd..12030a0df8 100644
--- a/package/frr/frr.hash
+++ b/package/frr/frr.hash
@@ -1,5 +1,5 @@
 # Locally calculated
-sha256  df4bc4f644f93be09f75c0e0e325b2f6a3ee6d1c6db429b6f36874e88a66ee33  frr-10.3.1.tar.gz
+sha256  8e4003eaba168626c5ea7a6735f2c85c87b04214e6f8c8f2715b21f8ae40970b  frr-10.4.1.tar.gz
 sha256  7bf053957d6c38e39a06a112c60ff35b228d3bd03edbe8c9a03508b051128d16  COPYING
 sha256  f9e0c21faf738da586281c0beaad3cd56204c19085a10fe05e4d3d7f8b5863d2  doc/licenses/BSD-2-Clause
 sha256  aca297b8fd3a43e3bb200f1e2e043c0db6c897325f5ff7f23f7530302a6bf713  doc/licenses/BSD-3-Clause
diff --git a/package/frr/frr.mk b/package/frr/frr.mk
index 23a2ca6037..fb7477a211 100644
--- a/package/frr/frr.mk
+++ b/package/frr/frr.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-FRR_VERSION = 10.3.1
+FRR_VERSION = 10.4.1
 FRR_SITE = $(call github,FRRouting,frr,frr-$(FRR_VERSION))
 FRR_LICENSE = GPL-2.0+
 FRR_LICENSE_FILES = \
@@ -25,7 +25,6 @@ FRR_CPE_ID_PRODUCT = free_range_routing
 FRR_AUTORECONF = YES
 
 FRR_DEPENDENCIES = host-frr readline json-c libyang \
-	protobuf-c \
 	$(if $(BR2_PACKAGE_C_ARES),c-ares) \
 	$(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt)
 
@@ -89,6 +88,14 @@ else
 FRR_CONF_OPTS += --disable-bfdd
 endif
 
+# Optional protobuf support
+ifeq ($(BR2_PACKAGE_FRR_PROTOBUF),y)
+FRR_DEPENDENCIES += protobuf-c
+FRR_CONF_OPTS += --enable-protobuf
+else
+FRR_CONF_OPTS += --disable-protobuf
+endif
+
 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
 FRR_CONF_ENV += LIBS=-latomic
 endif
-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v2 2/2] package/frr: make ECMP max configurable
  2025-08-11 14:00 ` [Buildroot] [PATCH v2 0/2] update FRR " Maxime Leroy
  2025-08-11 14:00   ` [Buildroot] [PATCH v2 1/2] package/frr: bump " Maxime Leroy
@ 2025-08-11 14:00   ` Maxime Leroy
  2025-08-11 16:11   ` [Buildroot] [PATCH v3 0/2] update FRR to version 10.4.1 Maxime Leroy
  2 siblings, 0 replies; 9+ messages in thread
From: Maxime Leroy @ 2025-08-11 14:00 UTC (permalink / raw)
  To: buildroot; +Cc: Vadim Kochan, ju.o, Maxime Leroy

Upstream FRR accepts --enable-multipath=N in the range 1–999. Buildroot
previously hardcoded 256.

Add a config integer to set the maximum ECMP paths at build time, keeping
256 as the default. Lower values help match hardware limits or reduce
memory; higher values are useful for software routing or lab testing.

Signed-off-by: Maxime Leroy <maxime@leroys.fr>
---
 package/frr/Config.in | 7 +++++++
 package/frr/frr.mk    | 2 +-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/package/frr/Config.in b/package/frr/Config.in
index 366e0fca82..4dcc08355d 100644
--- a/package/frr/Config.in
+++ b/package/frr/Config.in
@@ -33,6 +33,13 @@ config BR2_PACKAGE_FRR_BMP
 	help
 	  Build BGP Monitoring Protocol daemon.
 
+config BR2_PACKAGE_FRR_MULTIPATH_MAX
+	int "maximum ECMP paths"
+	default 256
+	range 1 999
+	help
+	  Compile FRR with support for up to this many equal-cost next-hops (ECMP).
+
 config BR2_PACKAGE_FRR_NHRPD
 	bool "NHRPD protocol"
 	select BR2_PACKAGE_C_ARES
diff --git a/package/frr/frr.mk b/package/frr/frr.mk
index fb7477a211..e41ee33caa 100644
--- a/package/frr/frr.mk
+++ b/package/frr/frr.mk
@@ -40,7 +40,7 @@ FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \
 	--with-moduledir=/usr/lib/frr/modules \
 	--enable-configfile-mask=0640 \
 	--enable-logfile-mask=0640 \
-	--enable-multipath=256 \
+	--enable-multipath=$(BR2_PACKAGE_FRR_MULTIPATH_MAX) \
 	--disable-ospfclient \
 	--enable-user=frr \
 	--enable-group=frr \
-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v3 0/2] update FRR to version 10.4.1
  2025-08-11 14:00 ` [Buildroot] [PATCH v2 0/2] update FRR " Maxime Leroy
  2025-08-11 14:00   ` [Buildroot] [PATCH v2 1/2] package/frr: bump " Maxime Leroy
  2025-08-11 14:00   ` [Buildroot] [PATCH v2 2/2] package/frr: make ECMP max configurable Maxime Leroy
@ 2025-08-11 16:11   ` Maxime Leroy
  2025-08-11 16:11     ` [Buildroot] [PATCH v3 1/2] package/frr: bump " Maxime Leroy
  2025-08-11 16:11     ` [Buildroot] [PATCH v3 2/2] package/frr: make ECMP max configurable Maxime Leroy
  2 siblings, 2 replies; 9+ messages in thread
From: Maxime Leroy @ 2025-08-11 16:11 UTC (permalink / raw)
  To: buildroot; +Cc: Vadim Kochan, ju.o, Maxime Leroy

Changes v2 -> v3:
- Add 'Upstream: ' to FRR patch
- fix help text format for multipath-max option
Changes v1 -> v2:
- Fix compilation with uClibc
- Add new option to configure enable-multipath

Maxime Leroy (2):
  package/frr: bump to version 10.4.1
  package/frr: make ECMP max configurable

 ...davg-optional-in-late-timer-warnings.patch | 49 +++++++++++++++++++
 package/frr/Config.in                         | 35 +++++++++----
 package/frr/frr.hash                          |  2 +-
 package/frr/frr.mk                            | 13 +++--
 4 files changed, 86 insertions(+), 13 deletions(-)
 create mode 100644 package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch

-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v3 1/2] package/frr: bump to version 10.4.1
  2025-08-11 16:11   ` [Buildroot] [PATCH v3 0/2] update FRR to version 10.4.1 Maxime Leroy
@ 2025-08-11 16:11     ` Maxime Leroy
  2025-08-13 16:21       ` Julien Olivain via buildroot
  2025-08-11 16:11     ` [Buildroot] [PATCH v3 2/2] package/frr: make ECMP max configurable Maxime Leroy
  1 sibling, 1 reply; 9+ messages in thread
From: Maxime Leroy @ 2025-08-11 16:11 UTC (permalink / raw)
  To: buildroot; +Cc: Vadim Kochan, ju.o, Maxime Leroy

Update FRR to the latest stable version (10.4.1 see [1], 10.4.0 see [2]).

As protobuf-c is no longer mandatory (see [3]), a new option
BR2_PACKAGE_FRR_PROTOBUF is added to enable/disable it.

getloadavg function [4] is now used by FRR but older libcs (e.g. uClibc,
dietlibc) lack this function, to fix the compilation, a patch must be
applied on FRR.

[1] https://github.com/FRRouting/frr/commit/88f5c06cbc1c
[2] https://github.com/FRRouting/frr/releases/tag/frr-10.4.0
[3] https://github.com/FRRouting/frr/commit/e51c16a4ca92
[4] https://github.com/FRRouting/frr/commit/ff76fb21d7b3
Signed-off-by: Maxime Leroy <maxime@leroys.fr>
---
 ...davg-optional-in-late-timer-warnings.patch | 49 +++++++++++++++++++
 package/frr/Config.in                         | 27 ++++++----
 package/frr/frr.hash                          |  2 +-
 package/frr/frr.mk                            | 11 ++++-
 4 files changed, 77 insertions(+), 12 deletions(-)
 create mode 100644 package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch

diff --git a/package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch b/package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch
new file mode 100644
index 0000000000..d03f64882e
--- /dev/null
+++ b/package/frr/0001-lib-make-getloadavg-optional-in-late-timer-warnings.patch
@@ -0,0 +1,49 @@
+From d76100a2b9a2ec814ad0a1fb844a395a6dc2f6bd Mon Sep 17 00:00:00 2001
+From: Maxime Leroy <maxime@leroys.fr>
+Date: Mon, 11 Aug 2025 13:44:02 +0200
+Subject: [PATCH] lib: make getloadavg() optional in late timer warnings
+
+Commit ff76fb21d7b3 ("lib: improve late timer warnings") added an
+unconditional getloadavg() call. Older libcs (e.g. uClibc, dietlibc)
+lack this function, breaking the build. Before, no system load was
+shown, so skipping it restores prior behavior.
+
+Fixes: ff76fb21d7b3 ("lib: improve late timer warnings")
+Signed-off-by: Maxime Leroy <maxime@leroys.fr>
+Upstream: https://github.com/FRRouting/frr/pull/19366
+---
+ configure.ac | 1 +
+ lib/event.c  | 4 ++++
+ 2 files changed, 5 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 87eba6784a..b8ef7bb777 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1369,6 +1369,7 @@ dnl ---------------
+ AC_CHECK_FUNCS([ \
+ 	strlcat strlcpy \
+ 	getgrouplist \
++	getloadavg \
+ 	openat \
+ 	unlinkat \
+ 	posix_fallocate \
+diff --git a/lib/event.c b/lib/event.c
+index 1eb41d07ce..22876574fb 100644
+--- a/lib/event.c
++++ b/lib/event.c
+@@ -1924,7 +1924,11 @@ static void event_tardy_warn(struct event *thread, unsigned long since_us)
+ 	double loadavg[3];
+ 	int rv;
+ 
++#ifdef HAVE_GETLOADAVG
+ 	rv = getloadavg(loadavg, array_size(loadavg));
++#else
++	rv = -1;
++#endif
+ 	if (rv < 0)
+ 		bprintfrr(&fb, "not available");
+ 	else {
+-- 
+2.43.0
+
diff --git a/package/frr/Config.in b/package/frr/Config.in
index 211eb83419..feb1aef05a 100644
--- a/package/frr/Config.in
+++ b/package/frr/Config.in
@@ -1,19 +1,15 @@
 config BR2_PACKAGE_FRR
 	bool "frr"
-	depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf-c
+	depends on BR2_TOOLCHAIN_HAS_THREADS # pthread
 	depends on !BR2_STATIC_LIBS # libyang
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4 # json-c, libyang
-	depends on BR2_INSTALL_LIBSTDCPP # protobuf-c
-	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c
-	depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c
 	select BR2_PACKAGE_BASH
 	select BR2_PACKAGE_BUSYBOX_SHOW_OTHERS # bash
 	select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC
 	select BR2_PACKAGE_LIBYANG
 	select BR2_PACKAGE_READLINE
 	select BR2_PACKAGE_JSON_C
-	select BR2_PACKAGE_PROTOBUF_C
 	help
 	  The FRRouting Protocol Suite.
 
@@ -43,11 +39,24 @@ config BR2_PACKAGE_FRR_NHRPD
 	help
 	  Build Next Hop Routing Protocol daemon.
 
+config BR2_PACKAGE_FRR_PROTOBUF
+	bool "Protobuf support (Binary-FPM and MLAG)"
+	default y
+	depends on BR2_INSTALL_LIBSTDCPP # protobuf-c
+	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS # protobuf-c
+	depends on BR2_HOST_GCC_AT_LEAST_7 # protobuf-c
+	select  BR2_PACKAGE_PROTOBUF_C
+	help
+	  Build FRR with protobuf-based Binary-FPM export and MLAG
+	  peer synchronization.
+
 endif
 
-comment "frr needs a toolchain w/ threads, dynamic library, C++, host gcc >= 7"
-	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS
+comment "frr needs a toolchain w/ threads, dynamic library"
 	depends on BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on BR2_USE_MMU
-	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS || \
-		!BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_7
+	depends on !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+
+comment "protobuf support for frr needs a toolchain w/ protobuf, C++, host gcc >= 7"
+	depends on BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS
+	depends on !BR2_INSTALL_LIBSTDCPP || !BR2_HOST_GCC_AT_LEAST_7
diff --git a/package/frr/frr.hash b/package/frr/frr.hash
index 414aaec7dd..12030a0df8 100644
--- a/package/frr/frr.hash
+++ b/package/frr/frr.hash
@@ -1,5 +1,5 @@
 # Locally calculated
-sha256  df4bc4f644f93be09f75c0e0e325b2f6a3ee6d1c6db429b6f36874e88a66ee33  frr-10.3.1.tar.gz
+sha256  8e4003eaba168626c5ea7a6735f2c85c87b04214e6f8c8f2715b21f8ae40970b  frr-10.4.1.tar.gz
 sha256  7bf053957d6c38e39a06a112c60ff35b228d3bd03edbe8c9a03508b051128d16  COPYING
 sha256  f9e0c21faf738da586281c0beaad3cd56204c19085a10fe05e4d3d7f8b5863d2  doc/licenses/BSD-2-Clause
 sha256  aca297b8fd3a43e3bb200f1e2e043c0db6c897325f5ff7f23f7530302a6bf713  doc/licenses/BSD-3-Clause
diff --git a/package/frr/frr.mk b/package/frr/frr.mk
index 23a2ca6037..fb7477a211 100644
--- a/package/frr/frr.mk
+++ b/package/frr/frr.mk
@@ -4,7 +4,7 @@
 #
 ################################################################################
 
-FRR_VERSION = 10.3.1
+FRR_VERSION = 10.4.1
 FRR_SITE = $(call github,FRRouting,frr,frr-$(FRR_VERSION))
 FRR_LICENSE = GPL-2.0+
 FRR_LICENSE_FILES = \
@@ -25,7 +25,6 @@ FRR_CPE_ID_PRODUCT = free_range_routing
 FRR_AUTORECONF = YES
 
 FRR_DEPENDENCIES = host-frr readline json-c libyang \
-	protobuf-c \
 	$(if $(BR2_PACKAGE_C_ARES),c-ares) \
 	$(if $(BR2_PACKAGE_LIBXCRYPT),libxcrypt)
 
@@ -89,6 +88,14 @@ else
 FRR_CONF_OPTS += --disable-bfdd
 endif
 
+# Optional protobuf support
+ifeq ($(BR2_PACKAGE_FRR_PROTOBUF),y)
+FRR_DEPENDENCIES += protobuf-c
+FRR_CONF_OPTS += --enable-protobuf
+else
+FRR_CONF_OPTS += --disable-protobuf
+endif
+
 ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
 FRR_CONF_ENV += LIBS=-latomic
 endif
-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* [Buildroot] [PATCH v3 2/2] package/frr: make ECMP max configurable
  2025-08-11 16:11   ` [Buildroot] [PATCH v3 0/2] update FRR to version 10.4.1 Maxime Leroy
  2025-08-11 16:11     ` [Buildroot] [PATCH v3 1/2] package/frr: bump " Maxime Leroy
@ 2025-08-11 16:11     ` Maxime Leroy
  1 sibling, 0 replies; 9+ messages in thread
From: Maxime Leroy @ 2025-08-11 16:11 UTC (permalink / raw)
  To: buildroot; +Cc: Vadim Kochan, ju.o, Maxime Leroy

Upstream FRR accepts --enable-multipath=N in the range 1–999. Buildroot
previously hardcoded 256.

Add a config integer to set the maximum ECMP paths at build time, keeping
256 as the default. Lower values help match hardware limits or reduce
memory; higher values are useful for software routing or lab testing.

Signed-off-by: Maxime Leroy <maxime@leroys.fr>
---
 package/frr/Config.in | 8 ++++++++
 package/frr/frr.mk    | 2 +-
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/package/frr/Config.in b/package/frr/Config.in
index feb1aef05a..6c26b6d2e1 100644
--- a/package/frr/Config.in
+++ b/package/frr/Config.in
@@ -33,6 +33,14 @@ config BR2_PACKAGE_FRR_BMP
 	help
 	  Build BGP Monitoring Protocol daemon.
 
+config BR2_PACKAGE_FRR_MULTIPATH_MAX
+	int "maximum ECMP paths"
+	default 256
+	range 1 999
+	help
+	  Compile FRR with support for up to this many equal-cost
+	  next-hops (ECMP).
+
 config BR2_PACKAGE_FRR_NHRPD
 	bool "NHRPD protocol"
 	select BR2_PACKAGE_C_ARES
diff --git a/package/frr/frr.mk b/package/frr/frr.mk
index fb7477a211..e41ee33caa 100644
--- a/package/frr/frr.mk
+++ b/package/frr/frr.mk
@@ -40,7 +40,7 @@ FRR_CONF_OPTS = --with-clippy=$(HOST_DIR)/bin/clippy \
 	--with-moduledir=/usr/lib/frr/modules \
 	--enable-configfile-mask=0640 \
 	--enable-logfile-mask=0640 \
-	--enable-multipath=256 \
+	--enable-multipath=$(BR2_PACKAGE_FRR_MULTIPATH_MAX) \
 	--disable-ospfclient \
 	--enable-user=frr \
 	--enable-group=frr \
-- 
2.43.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [Buildroot] [PATCH v3 1/2] package/frr: bump to version 10.4.1
  2025-08-11 16:11     ` [Buildroot] [PATCH v3 1/2] package/frr: bump " Maxime Leroy
@ 2025-08-13 16:21       ` Julien Olivain via buildroot
  0 siblings, 0 replies; 9+ messages in thread
From: Julien Olivain via buildroot @ 2025-08-13 16:21 UTC (permalink / raw)
  To: Maxime Leroy; +Cc: buildroot, Vadim Kochan

On 11/08/2025 18:11, Maxime Leroy wrote:
> Update FRR to the latest stable version (10.4.1 see [1], 10.4.0 see 
> [2]).
> 
> As protobuf-c is no longer mandatory (see [3]), a new option
> BR2_PACKAGE_FRR_PROTOBUF is added to enable/disable it.
> 
> getloadavg function [4] is now used by FRR but older libcs (e.g. 
> uClibc,
> dietlibc) lack this function, to fix the compilation, a patch must be
> applied on FRR.
> 
> [1] https://github.com/FRRouting/frr/commit/88f5c06cbc1c
> [2] https://github.com/FRRouting/frr/releases/tag/frr-10.4.0
> [3] https://github.com/FRRouting/frr/commit/e51c16a4ca92
> [4] https://github.com/FRRouting/frr/commit/ff76fb21d7b3
> Signed-off-by: Maxime Leroy <maxime@leroys.fr>

Series applied to next, thanks.
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2025-08-13 16:21 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-08-06 13:21 [Buildroot] [PATCH 1/1] package/frr: bump to version 10.4.1 Maxime Leroy
2025-08-09 15:59 ` Julien Olivain via buildroot
2025-08-11 14:00 ` [Buildroot] [PATCH v2 0/2] update FRR " Maxime Leroy
2025-08-11 14:00   ` [Buildroot] [PATCH v2 1/2] package/frr: bump " Maxime Leroy
2025-08-11 14:00   ` [Buildroot] [PATCH v2 2/2] package/frr: make ECMP max configurable Maxime Leroy
2025-08-11 16:11   ` [Buildroot] [PATCH v3 0/2] update FRR to version 10.4.1 Maxime Leroy
2025-08-11 16:11     ` [Buildroot] [PATCH v3 1/2] package/frr: bump " Maxime Leroy
2025-08-13 16:21       ` Julien Olivain via buildroot
2025-08-11 16:11     ` [Buildroot] [PATCH v3 2/2] package/frr: make ECMP max configurable Maxime Leroy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox