Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] package/tcpreplay: security bump to version 4.6.1
@ 2026-09-29 12:39 Yegor Yefremov via buildroot
  2026-10-03 16:02 ` Thomas Petazzoni via buildroot
  2026-10-10  9:23 ` Thomas Perale via buildroot
  0 siblings, 2 replies; 3+ messages in thread
From: Yegor Yefremov via buildroot @ 2026-09-29 12:39 UTC (permalink / raw)
  To: buildroot

From: Yegor Yefremov <yegorslists@googlemail.com>

Fixes the following security issues:

4.5.4: GHSA-2wmf-4p77-784q, GHSA-5cjx-62pj-pmgq, GHSA-pfqg-243f-8q25,
       GHSA-pjh6-6hrw-vcwr, GHSA-ww62-mxv7-pg55
4.5.5: GHSA-27v4-xhfx-g2rx, GHSA-777w-9599-w8g4, GHSA-jj65-mrgg-f5fx,
       GHSA-m655-53p4-6qm8, GHSA-p7xp-4gj2-x56c, GHSA-v8c4-9w98-9v6v
4.6.0: GHSA-5q26-7fxx-v8fh, GHSA-fwcr-mqg6-hqmx, GHSA-m6w7-8497-g9c9
4.6.1: GHSA-4hqm-8v2c-9pwj, GHSA-p3f2-88rg-9mch, GHSA-pmmx-m8p5-969j

Release notes:
https://github.com/appneta/tcpreplay/releases/tag/v4.5.3
https://github.com/appneta/tcpreplay/releases/tag/v4.5.4
https://github.com/appneta/tcpreplay/releases/tag/v4.5.5
https://github.com/appneta/tcpreplay/releases/tag/v4.6.0
https://github.com/appneta/tcpreplay/releases/tag/v4.6.1

Since 4.6.0, CMake is upstream's recommended build system, so convert
the package to it. The option parsers, tcpedit_stub.h and man pages
are pre-generated in the release tarball, so disable autogen, python3
and asciidoctor to not depend on what's installed on the host.

Add patches to:
- make WITH_TCPDUMP work when cross compiling
- find fts_read() in musl-fts' libfts (replaces passing -lfts)
- fix a struct ethhdr redefinition in txring.h with musl

TX_RING support, which is always detected on Linux, unconditionally
uses pthreads, so add a dependency on BR2_TOOLCHAIN_HAS_THREADS.

Fixes:
https://autobuild.buildroot.org/results/1db3e924c659c8edff026568ffbfc576d5222db9

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
Assisted-by: Claude:claude-opus-5-5
---
 ...pdump-detection-when-cross-compiling.patch | 43 +++++++++++
 ...02-build-look-for-fts_read-in-libfts.patch | 77 +++++++++++++++++++
 .../0003-txring.h-fix-build-with-musl.patch   | 41 ++++++++++
 package/tcpreplay/Config.in                   |  5 ++
 package/tcpreplay/tcpreplay.hash              |  4 +-
 package/tcpreplay/tcpreplay.mk                | 33 ++++----
 6 files changed, 187 insertions(+), 16 deletions(-)
 create mode 100644 package/tcpreplay/0001-cmake-fix-tcpdump-detection-when-cross-compiling.patch
 create mode 100644 package/tcpreplay/0002-build-look-for-fts_read-in-libfts.patch
 create mode 100644 package/tcpreplay/0003-txring.h-fix-build-with-musl.patch

diff --git a/package/tcpreplay/0001-cmake-fix-tcpdump-detection-when-cross-compiling.patch b/package/tcpreplay/0001-cmake-fix-tcpdump-detection-when-cross-compiling.patch
new file mode 100644
index 0000000000..efcc291636
--- /dev/null
+++ b/package/tcpreplay/0001-cmake-fix-tcpdump-detection-when-cross-compiling.patch
@@ -0,0 +1,43 @@
+From d7e8593b515e53f6f6b7e2df496955568146ecdd Mon Sep 17 00:00:00 2001
+From: Yegor Yefremov <yegorslists@googlemail.com>
+Date: Tue, 29 Sep 2026 11:21:30 +0200
+Subject: [PATCH] cmake: fix tcpdump detection when cross compiling
+
+WITH_TCPDUMP names the tcpdump binary on the machine tcpreplay will run
+on. When cross compiling, that path doesn't exist on the build machine,
+so the EXISTS check always fails and --verbose gets disabled.
+
+Trust WITH_TCPDUMP when cross compiling, and accept WITH_TCPDUMP=no
+(like WITH_LIBDNET=no) to skip the host find_program() lookup, which
+would otherwise pick up the build machine's tcpdump.
+
+Upstream: https://github.com/appneta/tcpreplay/pull/1152
+Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
+Assisted-by: Claude:claude-opus-5-5
+---
+ cmake/OptionalDeps.cmake | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/cmake/OptionalDeps.cmake b/cmake/OptionalDeps.cmake
+index 6c73a20e..5239630a 100644
+--- a/cmake/OptionalDeps.cmake
++++ b/cmake/OptionalDeps.cmake
+@@ -177,12 +177,16 @@ endif()
+ # tcpdump binary (--with-tcpdump → WITH_TCPDUMP)
+ # ---------------------------------------------------------------------------
+ set(HAVE_TCPDUMP "")
+-if(WITH_TCPDUMP)
++if(WITH_TCPDUMP STREQUAL "no")
++    set(TCPDUMP_PATH "")
++elseif(WITH_TCPDUMP)
+     set(TCPDUMP_PATH ${WITH_TCPDUMP})
+ else()
+     find_program(TCPDUMP_PATH tcpdump PATHS /usr/sbin /sbin /usr/local/sbin)
+ endif()
+-if(TCPDUMP_PATH AND EXISTS ${TCPDUMP_PATH})
++# When cross compiling, WITH_TCPDUMP is a path on the target, which can't
++# be checked for existence on the build machine.
++if(TCPDUMP_PATH AND (EXISTS "${TCPDUMP_PATH}" OR (CMAKE_CROSSCOMPILING AND WITH_TCPDUMP)))
+     set(HAVE_TCPDUMP 1)
+     message(STATUS "Using tcpdump in ${TCPDUMP_PATH}")
+ else()
diff --git a/package/tcpreplay/0002-build-look-for-fts_read-in-libfts.patch b/package/tcpreplay/0002-build-look-for-fts_read-in-libfts.patch
new file mode 100644
index 0000000000..ce5344316e
--- /dev/null
+++ b/package/tcpreplay/0002-build-look-for-fts_read-in-libfts.patch
@@ -0,0 +1,77 @@
+From a829c8a247cfb688f6c2103d750f72a1f0fc348a Mon Sep 17 00:00:00 2001
+From: Yegor Yefremov <yegorslists@googlemail.com>
+Date: Tue, 29 Sep 2026 11:33:40 +0200
+Subject: [PATCH] build: look for fts_read() in libfts
+
+On musl and uClibc, fts_*() is not part of the C library but provided
+by the standalone musl-fts library (libfts). Look for it there when
+it's neither in libc nor in libbsd, in both configure.ac and CMake.
+
+Without this, cross builds against these C libraries have to pass
+-lfts by hand, and with CMake that doesn't work for static builds, as
+CMAKE_EXE_LINKER_FLAGS ends up before the objects on the link line:
+
+  tcpreplay.c:(.text.startup+0x1e8): undefined reference to `fts_open'
+
+Upstream: https://github.com/appneta/tcpreplay/pull/1153
+Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
+Assisted-by: Claude:claude-opus-5-5
+---
+ cmake/ConfigureChecks.cmake | 7 ++++++-
+ cmake/config.h.cmake        | 3 +++
+ configure.ac                | 5 +++--
+ 3 files changed, 12 insertions(+), 3 deletions(-)
+
+diff --git a/cmake/ConfigureChecks.cmake b/cmake/ConfigureChecks.cmake
+index 5b829a5d..b8c81aeb 100644
+--- a/cmake/ConfigureChecks.cmake
++++ b/cmake/ConfigureChecks.cmake
+@@ -365,12 +365,17 @@ if(NOT HAVE_INET_ADDR)
+     message(FATAL_ERROR "We need inet_addr.  See bug 26")
+ endif()
+ 
+-# Haiku: fts_*() lives in libbsd
++# Haiku: fts_*() lives in libbsd; musl and uClibc: in the standalone libfts
+ check_function_exists(fts_read HAVE_FTS_READ)
+ if(NOT HAVE_FTS_READ)
+     check_library_exists(bsd fts_read "" HAVE_LIBBSD)
+     if(HAVE_LIBBSD)
+         list(APPEND TCPR_SYSTEM_LIBS bsd)
++    else()
++        check_library_exists(fts fts_read "" HAVE_LIBFTS)
++        if(HAVE_LIBFTS)
++            list(APPEND TCPR_SYSTEM_LIBS fts)
++        endif()
+     endif()
+ endif()
+ 
+diff --git a/cmake/config.h.cmake b/cmake/config.h.cmake
+index 15531ca3..12084d28 100644
+--- a/cmake/config.h.cmake
++++ b/cmake/config.h.cmake
+@@ -232,6 +232,9 @@
+ /* Do we have libdnet? */
+ #cmakedefine HAVE_LIBDNET @HAVE_LIBDNET@
+ 
++/* Define to 1 if you have the 'fts' library (-lfts). */
++#cmakedefine HAVE_LIBFTS @HAVE_LIBFTS@
++
+ /* Define to 1 if you have the 'gen' library (-lgen). */
+ #cmakedefine HAVE_LIBGEN @HAVE_LIBGEN@
+ 
+diff --git a/configure.ac b/configure.ac
+index 20e4f465..00fd13bd 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -718,8 +718,9 @@ if test x$inet_addr = xno ; then
+     AC_MSG_ERROR([We need inet_addr.  See bug 26])
+ fi
+ 
+-dnl On Haiku fts_*() functions are in libbsd.
+-AC_CHECK_FUNC(fts_read,,[AC_CHECK_LIB(bsd, fts_read)])
++dnl On Haiku fts_*() functions are in libbsd, on musl and uClibc in the
++dnl standalone libfts (musl-fts).
++AC_CHECK_FUNC(fts_read,,[AC_CHECK_LIB(bsd, fts_read,,[AC_CHECK_LIB(fts, fts_read)])])
+ 
+ dnl #####################################################
+ dnl Checks for tuntap device support
diff --git a/package/tcpreplay/0003-txring.h-fix-build-with-musl.patch b/package/tcpreplay/0003-txring.h-fix-build-with-musl.patch
new file mode 100644
index 0000000000..6bbe2314e2
--- /dev/null
+++ b/package/tcpreplay/0003-txring.h-fix-build-with-musl.patch
@@ -0,0 +1,41 @@
+From da763d37b2b275ef977e5a9bf4424bbe1fb2b22d Mon Sep 17 00:00:00 2001
+From: Yegor Yefremov <yegorslists@googlemail.com>
+Date: Tue, 29 Sep 2026 11:33:40 +0200
+Subject: [PATCH] txring.h: fix build with musl
+
+Commit 78076385 ("txring: fix __GLIBC_MINOR typo and include the header
+that defines the TX_RING API (#1043)") made the libc check work, so
+non-glibc C libraries now include <linux/if_ether.h>. On musl, that
+clashes with <netinet/if_ether.h>, included later via sendpacket.h:
+
+  netinet/if_ether.h:122:1: error: redefinition of struct or union 'struct ethhdr'
+
+<net/ethernet.h> is available on all Linux C libraries, so use it
+unconditionally.
+
+Upstream: https://github.com/appneta/tcpreplay/pull/1154
+Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
+Assisted-by: Claude:claude-opus-5-5
+---
+ src/common/txring.h | 6 ------
+ 1 file changed, 6 deletions(-)
+
+diff --git a/src/common/txring.h b/src/common/txring.h
+index 59dabd1a..0c1e4bfd 100644
+--- a/src/common/txring.h
++++ b/src/common/txring.h
+@@ -38,14 +38,8 @@
+ 
+ #ifdef HAVE_TX_RING
+ 
+-#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
+ #include <net/ethernet.h> /* the L2 protocols */
+ #include <linux/if_packet.h>
+-#else
+-#include <asm/types.h>
+-#include <linux/if_ether.h> /* The L2 protocols */
+-#include <linux/if_packet.h>
+-#endif
+ #include <pthread.h>
+ 
+ struct txring_s {
diff --git a/package/tcpreplay/Config.in b/package/tcpreplay/Config.in
index 9e5509114e..dc3645dce6 100644
--- a/package/tcpreplay/Config.in
+++ b/package/tcpreplay/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_TCPREPLAY
 	bool "tcpreplay"
 	depends on BR2_USE_MMU # fork()
+	depends on BR2_TOOLCHAIN_HAS_THREADS
 	select BR2_PACKAGE_LIBPCAP
 	select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC
 	help
@@ -8,3 +9,7 @@ config BR2_PACKAGE_TCPREPLAY
 	  saved with tcpdump or other tools which write pcap(3) files.
 
 	  http://tcpreplay.appneta.com/
+
+comment "tcpreplay needs a toolchain w/ threads"
+	depends on BR2_USE_MMU
+	depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/tcpreplay/tcpreplay.hash b/package/tcpreplay/tcpreplay.hash
index 4307fa60fc..023830f9a5 100644
--- a/package/tcpreplay/tcpreplay.hash
+++ b/package/tcpreplay/tcpreplay.hash
@@ -1,5 +1,5 @@
 # Locally calculated after checking pgp signature
-# https://github.com/appneta/tcpreplay/releases/download/v4.5.2/tcpreplay-4.5.2.tar.xz.asc
+# https://github.com/appneta/tcpreplay/releases/download/v4.6.1/tcpreplay-4.6.1.tar.xz.asc
 # using key 84E4FA215C934A7D97DC76D5E9E2149793BDE17E
-sha256  2df15bc6d49f96a77617d137049f998193bbae95c1a31b04ca02856a24cbf384  tcpreplay-4.5.2.tar.xz
+sha256  14b96e3565d6e66e813000d0d510afeaecb871f2b533182c391c6ccf948c3e21  tcpreplay-4.6.1.tar.xz
 sha256  07cf5e92d475287a7d1663b33097f40cae5adf03ed8920fcd4374e3dfb48c8ad  docs/LICENSE
diff --git a/package/tcpreplay/tcpreplay.mk b/package/tcpreplay/tcpreplay.mk
index 32bcf8d278..4a50e88aaf 100644
--- a/package/tcpreplay/tcpreplay.mk
+++ b/package/tcpreplay/tcpreplay.mk
@@ -4,40 +4,45 @@
 #
 ################################################################################
 
-TCPREPLAY_VERSION = 4.5.2
+TCPREPLAY_VERSION = 4.6.1
 TCPREPLAY_SITE = https://github.com/appneta/tcpreplay/releases/download/v$(TCPREPLAY_VERSION)
 TCPREPLAY_SOURCE = tcpreplay-$(TCPREPLAY_VERSION).tar.xz
 TCPREPLAY_LICENSE = GPL-3.0
 TCPREPLAY_LICENSE_FILES = docs/LICENSE
 TCPREPLAY_CPE_ID_VENDOR = broadcom
-TCPREPLAY_CONF_ENV = \
-	ac_cv_path_ac_pt_PCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config" \
-	LIBS="$(TCPREPLAY_LIBS)"
-TCPREPLAY_CONF_OPTS = --with-libpcap=$(STAGING_DIR)/usr \
-	--enable-pcapconfig
 TCPREPLAY_DEPENDENCIES = libpcap
+# The option parsers, tcpedit_stub.h and man pages are pre-generated in
+# the release tarball, so don't use autogen, python3 or asciidoctor from
+# the host.
+TCPREPLAY_CONF_OPTS = \
+	-DENABLE_PCAPCONFIG=ON \
+	-DPCAP_CONFIG_EXECUTABLE=$(STAGING_DIR)/usr/bin/pcap-config \
+	-DAUTOGEN_EXECUTABLE=OFF \
+	-DPYTHON3_EXECUTABLE=OFF \
+	-DASCIIDOCTOR_EXECUTABLE=OFF \
+	-DPCAPNAV_CONFIG_EXECUTABLE=OFF
 
 ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)
 TCPREPLAY_DEPENDENCIES += musl-fts
-TCPREPLAY_LIBS += -lfts
 endif
 
 ifeq ($(BR2_STATIC_LIBS),y)
-TCPREPLAY_CONF_OPTS += --enable-dynamic-link=no
-TCPREPLAY_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --libs`
+TCPREPLAY_CONF_OPTS += -DENABLE_STATIC_LINK=ON
+else
+TCPREPLAY_CONF_OPTS += -DENABLE_STATIC_LINK=OFF
 endif
 
 ifeq ($(BR2_PACKAGE_LIBDNET),y)
 TCPREPLAY_DEPENDENCIES += libdnet
-TCPREPLAY_CONF_OPTS += --with-libdnet=$(STAGING_DIR)/usr
+TCPREPLAY_CONF_OPTS += -DWITH_LIBDNET=$(STAGING_DIR)/usr
 else
-TCPREPLAY_CONF_OPTS += --without-libdnet
+TCPREPLAY_CONF_OPTS += -DWITH_LIBDNET=no
 endif
 
 ifeq ($(BR2_PACKAGE_TCPDUMP),y)
-TCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=/usr/sbin/tcpdump
+TCPREPLAY_CONF_OPTS += -DWITH_TCPDUMP=/usr/sbin/tcpdump
 else
-TCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=no
+TCPREPLAY_CONF_OPTS += -DWITH_TCPDUMP=no
 endif
 
-$(eval $(autotools-package))
+$(eval $(cmake-package))
-- 
2.34.1

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

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

* Re: [Buildroot] [PATCH] package/tcpreplay: security bump to version 4.6.1
  2026-09-29 12:39 [Buildroot] [PATCH] package/tcpreplay: security bump to version 4.6.1 Yegor Yefremov via buildroot
@ 2026-10-03 16:02 ` Thomas Petazzoni via buildroot
  2026-10-10  9:23 ` Thomas Perale via buildroot
  1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni via buildroot @ 2026-10-03 16:02 UTC (permalink / raw)
  To: Yegor Yefremov; +Cc: buildroot

On Tue, Sep 29, 2026 at 02:39:20PM +0200, Yegor Yefremov via buildroot wrote:
> From: Yegor Yefremov <yegorslists@googlemail.com>
> 
> Fixes the following security issues:
> 
> 4.5.4: GHSA-2wmf-4p77-784q, GHSA-5cjx-62pj-pmgq, GHSA-pfqg-243f-8q25,
>        GHSA-pjh6-6hrw-vcwr, GHSA-ww62-mxv7-pg55
> 4.5.5: GHSA-27v4-xhfx-g2rx, GHSA-777w-9599-w8g4, GHSA-jj65-mrgg-f5fx,
>        GHSA-m655-53p4-6qm8, GHSA-p7xp-4gj2-x56c, GHSA-v8c4-9w98-9v6v
> 4.6.0: GHSA-5q26-7fxx-v8fh, GHSA-fwcr-mqg6-hqmx, GHSA-m6w7-8497-g9c9
> 4.6.1: GHSA-4hqm-8v2c-9pwj, GHSA-p3f2-88rg-9mch, GHSA-pmmx-m8p5-969j
> 
> Release notes:
> https://github.com/appneta/tcpreplay/releases/tag/v4.5.3
> https://github.com/appneta/tcpreplay/releases/tag/v4.5.4
> https://github.com/appneta/tcpreplay/releases/tag/v4.5.5
> https://github.com/appneta/tcpreplay/releases/tag/v4.6.0
> https://github.com/appneta/tcpreplay/releases/tag/v4.6.1
> 
> Since 4.6.0, CMake is upstream's recommended build system, so convert
> the package to it. The option parsers, tcpedit_stub.h and man pages
> are pre-generated in the release tarball, so disable autogen, python3
> and asciidoctor to not depend on what's installed on the host.
> 
> Add patches to:
> - make WITH_TCPDUMP work when cross compiling
> - find fts_read() in musl-fts' libfts (replaces passing -lfts)
> - fix a struct ethhdr redefinition in txring.h with musl
> 
> TX_RING support, which is always detected on Linux, unconditionally
> uses pthreads, so add a dependency on BR2_TOOLCHAIN_HAS_THREADS.
> 
> Fixes:
> https://autobuild.buildroot.org/results/1db3e924c659c8edff026568ffbfc576d5222db9
> 
> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> Assisted-by: Claude:claude-opus-5-5

Applied to master, thanks!

Best regards,

Thomas Petazzoni
-- 
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

* Re: [Buildroot] [PATCH] package/tcpreplay: security bump to version 4.6.1
  2026-09-29 12:39 [Buildroot] [PATCH] package/tcpreplay: security bump to version 4.6.1 Yegor Yefremov via buildroot
  2026-10-03 16:02 ` Thomas Petazzoni via buildroot
@ 2026-10-10  9:23 ` Thomas Perale via buildroot
  1 sibling, 0 replies; 3+ messages in thread
From: Thomas Perale via buildroot @ 2026-10-10  9:23 UTC (permalink / raw)
  To: Yegor Yefremov; +Cc: Thomas Perale, buildroot

In reply of:
> Fixes the following security issues:
> 
> 4.5.4: GHSA-2wmf-4p77-784q, GHSA-5cjx-62pj-pmgq, GHSA-pfqg-243f-8q25,
>        GHSA-pjh6-6hrw-vcwr, GHSA-ww62-mxv7-pg55
> 4.5.5: GHSA-27v4-xhfx-g2rx, GHSA-777w-9599-w8g4, GHSA-jj65-mrgg-f5fx,
>        GHSA-m655-53p4-6qm8, GHSA-p7xp-4gj2-x56c, GHSA-v8c4-9w98-9v6v
> 4.6.0: GHSA-5q26-7fxx-v8fh, GHSA-fwcr-mqg6-hqmx, GHSA-m6w7-8497-g9c9
> 4.6.1: GHSA-4hqm-8v2c-9pwj, GHSA-p3f2-88rg-9mch, GHSA-pmmx-m8p5-969j
> 
> Release notes:
> https://github.com/appneta/tcpreplay/releases/tag/v4.5.3
> https://github.com/appneta/tcpreplay/releases/tag/v4.5.4
> https://github.com/appneta/tcpreplay/releases/tag/v4.5.5
> https://github.com/appneta/tcpreplay/releases/tag/v4.6.0
> https://github.com/appneta/tcpreplay/releases/tag/v4.6.1
> 
> Since 4.6.0, CMake is upstream's recommended build system, so convert
> the package to it. The option parsers, tcpedit_stub.h and man pages
> are pre-generated in the release tarball, so disable autogen, python3
> and asciidoctor to not depend on what's installed on the host.
> 
> Add patches to:
> - make WITH_TCPDUMP work when cross compiling
> - find fts_read() in musl-fts' libfts (replaces passing -lfts)
> - fix a struct ethhdr redefinition in txring.h with musl
> 
> TX_RING support, which is always detected on Linux, unconditionally
> uses pthreads, so add a dependency on BR2_TOOLCHAIN_HAS_THREADS.
> 
> Fixes:
> https://autobuild.buildroot.org/results/1db3e924c659c8edff026568ffbfc576d5222db9
> 
> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> Assisted-by: Claude:claude-opus-5-5

Applied to 2025.02.x & 2026.08.x. Thanks

> ---
>  ...pdump-detection-when-cross-compiling.patch | 43 +++++++++++
>  ...02-build-look-for-fts_read-in-libfts.patch | 77 +++++++++++++++++++
>  .../0003-txring.h-fix-build-with-musl.patch   | 41 ++++++++++
>  package/tcpreplay/Config.in                   |  5 ++
>  package/tcpreplay/tcpreplay.hash              |  4 +-
>  package/tcpreplay/tcpreplay.mk                | 33 ++++----
>  6 files changed, 187 insertions(+), 16 deletions(-)
>  create mode 100644 package/tcpreplay/0001-cmake-fix-tcpdump-detection-when-cross-compiling.patch
>  create mode 100644 package/tcpreplay/0002-build-look-for-fts_read-in-libfts.patch
>  create mode 100644 package/tcpreplay/0003-txring.h-fix-build-with-musl.patch
> 
> diff --git a/package/tcpreplay/0001-cmake-fix-tcpdump-detection-when-cross-compiling.patch b/package/tcpreplay/0001-cmake-fix-tcpdump-detection-when-cross-compiling.patch
> new file mode 100644
> index 0000000000..efcc291636
> --- /dev/null
> +++ b/package/tcpreplay/0001-cmake-fix-tcpdump-detection-when-cross-compiling.patch
> @@ -0,0 +1,43 @@
> +From d7e8593b515e53f6f6b7e2df496955568146ecdd Mon Sep 17 00:00:00 2001
> +From: Yegor Yefremov <yegorslists@googlemail.com>
> +Date: Tue, 29 Sep 2026 11:21:30 +0200
> +Subject: [PATCH] cmake: fix tcpdump detection when cross compiling
> +
> +WITH_TCPDUMP names the tcpdump binary on the machine tcpreplay will run
> +on. When cross compiling, that path doesn't exist on the build machine,
> +so the EXISTS check always fails and --verbose gets disabled.
> +
> +Trust WITH_TCPDUMP when cross compiling, and accept WITH_TCPDUMP=no
> +(like WITH_LIBDNET=no) to skip the host find_program() lookup, which
> +would otherwise pick up the build machine's tcpdump.
> +
> +Upstream: https://github.com/appneta/tcpreplay/pull/1152
> +Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> +Assisted-by: Claude:claude-opus-5-5
> +---
> + cmake/OptionalDeps.cmake | 8 ++++++--
> + 1 file changed, 6 insertions(+), 2 deletions(-)
> +
> +diff --git a/cmake/OptionalDeps.cmake b/cmake/OptionalDeps.cmake
> +index 6c73a20e..5239630a 100644
> +--- a/cmake/OptionalDeps.cmake
> ++++ b/cmake/OptionalDeps.cmake
> +@@ -177,12 +177,16 @@ endif()
> + # tcpdump binary (--with-tcpdump → WITH_TCPDUMP)
> + # ---------------------------------------------------------------------------
> + set(HAVE_TCPDUMP "")
> +-if(WITH_TCPDUMP)
> ++if(WITH_TCPDUMP STREQUAL "no")
> ++    set(TCPDUMP_PATH "")
> ++elseif(WITH_TCPDUMP)
> +     set(TCPDUMP_PATH ${WITH_TCPDUMP})
> + else()
> +     find_program(TCPDUMP_PATH tcpdump PATHS /usr/sbin /sbin /usr/local/sbin)
> + endif()
> +-if(TCPDUMP_PATH AND EXISTS ${TCPDUMP_PATH})
> ++# When cross compiling, WITH_TCPDUMP is a path on the target, which can't
> ++# be checked for existence on the build machine.
> ++if(TCPDUMP_PATH AND (EXISTS "${TCPDUMP_PATH}" OR (CMAKE_CROSSCOMPILING AND WITH_TCPDUMP)))
> +     set(HAVE_TCPDUMP 1)
> +     message(STATUS "Using tcpdump in ${TCPDUMP_PATH}")
> + else()
> diff --git a/package/tcpreplay/0002-build-look-for-fts_read-in-libfts.patch b/package/tcpreplay/0002-build-look-for-fts_read-in-libfts.patch
> new file mode 100644
> index 0000000000..ce5344316e
> --- /dev/null
> +++ b/package/tcpreplay/0002-build-look-for-fts_read-in-libfts.patch
> @@ -0,0 +1,77 @@
> +From a829c8a247cfb688f6c2103d750f72a1f0fc348a Mon Sep 17 00:00:00 2001
> +From: Yegor Yefremov <yegorslists@googlemail.com>
> +Date: Tue, 29 Sep 2026 11:33:40 +0200
> +Subject: [PATCH] build: look for fts_read() in libfts
> +
> +On musl and uClibc, fts_*() is not part of the C library but provided
> +by the standalone musl-fts library (libfts). Look for it there when
> +it's neither in libc nor in libbsd, in both configure.ac and CMake.
> +
> +Without this, cross builds against these C libraries have to pass
> +-lfts by hand, and with CMake that doesn't work for static builds, as
> +CMAKE_EXE_LINKER_FLAGS ends up before the objects on the link line:
> +
> +  tcpreplay.c:(.text.startup+0x1e8): undefined reference to `fts_open'
> +
> +Upstream: https://github.com/appneta/tcpreplay/pull/1153
> +Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> +Assisted-by: Claude:claude-opus-5-5
> +---
> + cmake/ConfigureChecks.cmake | 7 ++++++-
> + cmake/config.h.cmake        | 3 +++
> + configure.ac                | 5 +++--
> + 3 files changed, 12 insertions(+), 3 deletions(-)
> +
> +diff --git a/cmake/ConfigureChecks.cmake b/cmake/ConfigureChecks.cmake
> +index 5b829a5d..b8c81aeb 100644
> +--- a/cmake/ConfigureChecks.cmake
> ++++ b/cmake/ConfigureChecks.cmake
> +@@ -365,12 +365,17 @@ if(NOT HAVE_INET_ADDR)
> +     message(FATAL_ERROR "We need inet_addr.  See bug 26")
> + endif()
> + 
> +-# Haiku: fts_*() lives in libbsd
> ++# Haiku: fts_*() lives in libbsd; musl and uClibc: in the standalone libfts
> + check_function_exists(fts_read HAVE_FTS_READ)
> + if(NOT HAVE_FTS_READ)
> +     check_library_exists(bsd fts_read "" HAVE_LIBBSD)
> +     if(HAVE_LIBBSD)
> +         list(APPEND TCPR_SYSTEM_LIBS bsd)
> ++    else()
> ++        check_library_exists(fts fts_read "" HAVE_LIBFTS)
> ++        if(HAVE_LIBFTS)
> ++            list(APPEND TCPR_SYSTEM_LIBS fts)
> ++        endif()
> +     endif()
> + endif()
> + 
> +diff --git a/cmake/config.h.cmake b/cmake/config.h.cmake
> +index 15531ca3..12084d28 100644
> +--- a/cmake/config.h.cmake
> ++++ b/cmake/config.h.cmake
> +@@ -232,6 +232,9 @@
> + /* Do we have libdnet? */
> + #cmakedefine HAVE_LIBDNET @HAVE_LIBDNET@
> + 
> ++/* Define to 1 if you have the 'fts' library (-lfts). */
> ++#cmakedefine HAVE_LIBFTS @HAVE_LIBFTS@
> ++
> + /* Define to 1 if you have the 'gen' library (-lgen). */
> + #cmakedefine HAVE_LIBGEN @HAVE_LIBGEN@
> + 
> +diff --git a/configure.ac b/configure.ac
> +index 20e4f465..00fd13bd 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -718,8 +718,9 @@ if test x$inet_addr = xno ; then
> +     AC_MSG_ERROR([We need inet_addr.  See bug 26])
> + fi
> + 
> +-dnl On Haiku fts_*() functions are in libbsd.
> +-AC_CHECK_FUNC(fts_read,,[AC_CHECK_LIB(bsd, fts_read)])
> ++dnl On Haiku fts_*() functions are in libbsd, on musl and uClibc in the
> ++dnl standalone libfts (musl-fts).
> ++AC_CHECK_FUNC(fts_read,,[AC_CHECK_LIB(bsd, fts_read,,[AC_CHECK_LIB(fts, fts_read)])])
> + 
> + dnl #####################################################
> + dnl Checks for tuntap device support
> diff --git a/package/tcpreplay/0003-txring.h-fix-build-with-musl.patch b/package/tcpreplay/0003-txring.h-fix-build-with-musl.patch
> new file mode 100644
> index 0000000000..6bbe2314e2
> --- /dev/null
> +++ b/package/tcpreplay/0003-txring.h-fix-build-with-musl.patch
> @@ -0,0 +1,41 @@
> +From da763d37b2b275ef977e5a9bf4424bbe1fb2b22d Mon Sep 17 00:00:00 2001
> +From: Yegor Yefremov <yegorslists@googlemail.com>
> +Date: Tue, 29 Sep 2026 11:33:40 +0200
> +Subject: [PATCH] txring.h: fix build with musl
> +
> +Commit 78076385 ("txring: fix __GLIBC_MINOR typo and include the header
> +that defines the TX_RING API (#1043)") made the libc check work, so
> +non-glibc C libraries now include <linux/if_ether.h>. On musl, that
> +clashes with <netinet/if_ether.h>, included later via sendpacket.h:
> +
> +  netinet/if_ether.h:122:1: error: redefinition of struct or union 'struct ethhdr'
> +
> +<net/ethernet.h> is available on all Linux C libraries, so use it
> +unconditionally.
> +
> +Upstream: https://github.com/appneta/tcpreplay/pull/1154
> +Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> +Assisted-by: Claude:claude-opus-5-5
> +---
> + src/common/txring.h | 6 ------
> + 1 file changed, 6 deletions(-)
> +
> +diff --git a/src/common/txring.h b/src/common/txring.h
> +index 59dabd1a..0c1e4bfd 100644
> +--- a/src/common/txring.h
> ++++ b/src/common/txring.h
> +@@ -38,14 +38,8 @@
> + 
> + #ifdef HAVE_TX_RING
> + 
> +-#if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
> + #include <net/ethernet.h> /* the L2 protocols */
> + #include <linux/if_packet.h>
> +-#else
> +-#include <asm/types.h>
> +-#include <linux/if_ether.h> /* The L2 protocols */
> +-#include <linux/if_packet.h>
> +-#endif
> + #include <pthread.h>
> + 
> + struct txring_s {
> diff --git a/package/tcpreplay/Config.in b/package/tcpreplay/Config.in
> index 9e5509114e..dc3645dce6 100644
> --- a/package/tcpreplay/Config.in
> +++ b/package/tcpreplay/Config.in
> @@ -1,6 +1,7 @@
>  config BR2_PACKAGE_TCPREPLAY
>  	bool "tcpreplay"
>  	depends on BR2_USE_MMU # fork()
> +	depends on BR2_TOOLCHAIN_HAS_THREADS
>  	select BR2_PACKAGE_LIBPCAP
>  	select BR2_PACKAGE_MUSL_FTS if !BR2_TOOLCHAIN_USES_GLIBC
>  	help
> @@ -8,3 +9,7 @@ config BR2_PACKAGE_TCPREPLAY
>  	  saved with tcpdump or other tools which write pcap(3) files.
>  
>  	  http://tcpreplay.appneta.com/
> +
> +comment "tcpreplay needs a toolchain w/ threads"
> +	depends on BR2_USE_MMU
> +	depends on !BR2_TOOLCHAIN_HAS_THREADS
> diff --git a/package/tcpreplay/tcpreplay.hash b/package/tcpreplay/tcpreplay.hash
> index 4307fa60fc..023830f9a5 100644
> --- a/package/tcpreplay/tcpreplay.hash
> +++ b/package/tcpreplay/tcpreplay.hash
> @@ -1,5 +1,5 @@
>  # Locally calculated after checking pgp signature
> -# https://github.com/appneta/tcpreplay/releases/download/v4.5.2/tcpreplay-4.5.2.tar.xz.asc
> +# https://github.com/appneta/tcpreplay/releases/download/v4.6.1/tcpreplay-4.6.1.tar.xz.asc
>  # using key 84E4FA215C934A7D97DC76D5E9E2149793BDE17E
> -sha256  2df15bc6d49f96a77617d137049f998193bbae95c1a31b04ca02856a24cbf384  tcpreplay-4.5.2.tar.xz
> +sha256  14b96e3565d6e66e813000d0d510afeaecb871f2b533182c391c6ccf948c3e21  tcpreplay-4.6.1.tar.xz
>  sha256  07cf5e92d475287a7d1663b33097f40cae5adf03ed8920fcd4374e3dfb48c8ad  docs/LICENSE
> diff --git a/package/tcpreplay/tcpreplay.mk b/package/tcpreplay/tcpreplay.mk
> index 32bcf8d278..4a50e88aaf 100644
> --- a/package/tcpreplay/tcpreplay.mk
> +++ b/package/tcpreplay/tcpreplay.mk
> @@ -4,40 +4,45 @@
>  #
>  ################################################################################
>  
> -TCPREPLAY_VERSION = 4.5.2
> +TCPREPLAY_VERSION = 4.6.1
>  TCPREPLAY_SITE = https://github.com/appneta/tcpreplay/releases/download/v$(TCPREPLAY_VERSION)
>  TCPREPLAY_SOURCE = tcpreplay-$(TCPREPLAY_VERSION).tar.xz
>  TCPREPLAY_LICENSE = GPL-3.0
>  TCPREPLAY_LICENSE_FILES = docs/LICENSE
>  TCPREPLAY_CPE_ID_VENDOR = broadcom
> -TCPREPLAY_CONF_ENV = \
> -	ac_cv_path_ac_pt_PCAP_CONFIG="$(STAGING_DIR)/usr/bin/pcap-config" \
> -	LIBS="$(TCPREPLAY_LIBS)"
> -TCPREPLAY_CONF_OPTS = --with-libpcap=$(STAGING_DIR)/usr \
> -	--enable-pcapconfig
>  TCPREPLAY_DEPENDENCIES = libpcap
> +# The option parsers, tcpedit_stub.h and man pages are pre-generated in
> +# the release tarball, so don't use autogen, python3 or asciidoctor from
> +# the host.
> +TCPREPLAY_CONF_OPTS = \
> +	-DENABLE_PCAPCONFIG=ON \
> +	-DPCAP_CONFIG_EXECUTABLE=$(STAGING_DIR)/usr/bin/pcap-config \
> +	-DAUTOGEN_EXECUTABLE=OFF \
> +	-DPYTHON3_EXECUTABLE=OFF \
> +	-DASCIIDOCTOR_EXECUTABLE=OFF \
> +	-DPCAPNAV_CONFIG_EXECUTABLE=OFF
>  
>  ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),)
>  TCPREPLAY_DEPENDENCIES += musl-fts
> -TCPREPLAY_LIBS += -lfts
>  endif
>  
>  ifeq ($(BR2_STATIC_LIBS),y)
> -TCPREPLAY_CONF_OPTS += --enable-dynamic-link=no
> -TCPREPLAY_LIBS += `$(STAGING_DIR)/usr/bin/pcap-config --static --libs`
> +TCPREPLAY_CONF_OPTS += -DENABLE_STATIC_LINK=ON
> +else
> +TCPREPLAY_CONF_OPTS += -DENABLE_STATIC_LINK=OFF
>  endif
>  
>  ifeq ($(BR2_PACKAGE_LIBDNET),y)
>  TCPREPLAY_DEPENDENCIES += libdnet
> -TCPREPLAY_CONF_OPTS += --with-libdnet=$(STAGING_DIR)/usr
> +TCPREPLAY_CONF_OPTS += -DWITH_LIBDNET=$(STAGING_DIR)/usr
>  else
> -TCPREPLAY_CONF_OPTS += --without-libdnet
> +TCPREPLAY_CONF_OPTS += -DWITH_LIBDNET=no
>  endif
>  
>  ifeq ($(BR2_PACKAGE_TCPDUMP),y)
> -TCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=/usr/sbin/tcpdump
> +TCPREPLAY_CONF_OPTS += -DWITH_TCPDUMP=/usr/sbin/tcpdump
>  else
> -TCPREPLAY_CONF_ENV += ac_cv_path_tcpdump_path=no
> +TCPREPLAY_CONF_OPTS += -DWITH_TCPDUMP=no
>  endif
>  
> -$(eval $(autotools-package))
> +$(eval $(cmake-package))
> -- 
> 2.34.1
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

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

end of thread, other threads:[~2026-10-10  9:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-29 12:39 [Buildroot] [PATCH] package/tcpreplay: security bump to version 4.6.1 Yegor Yefremov via buildroot
2026-10-03 16:02 ` Thomas Petazzoni via buildroot
2026-10-10  9:23 ` Thomas Perale via buildroot

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