* [Buildroot] [PATCH 1/1] package/iperf3: fix build with libatomic
@ 2024-04-01 17:16 Julien Olivain
2024-04-01 20:12 ` Yann E. MORIN
0 siblings, 1 reply; 2+ messages in thread
From: Julien Olivain @ 2024-04-01 17:16 UTC (permalink / raw)
To: buildroot; +Cc: Julien Olivain
Commit 9f94b3b354 "package/iperf3: bump to version 3.16" updated
the package but forgot to reflect a breaking change mentioned in
the release note [1], "iperf3 now requires pthreads and C atomic
variables to compile and run".
When the toolchain has no atomic support, or the libatomic is not
added in the linker flags, the compilation now fail with output:
arm-buildroot-linux-gnueabi/bin/ld: ./.libs/libiperf.so: undefined reference to '__atomic_load_8'
This issue can be seen when running the iperf3 runtime test, with
command:
support/testing/run-tests \
-d dl -o output_test \
tests.package.test_iperf3
This commit fixes the issue by adding a dependency on
BR2_TOOLCHAIN_HAS_ATOMIC and by adding an upstream patch to detect
if linking to libatomic is needed.
Fixes: [2]
[1] https://github.com/esnet/iperf/releases/tag/3.16
[2] https://gitlab.com/buildroot.org/buildroot/-/jobs/6466933622
Signed-off-by: Julien Olivain <ju.o@free.fr>
---
...1-Check-and-link-libatomic-if-needed.patch | 42 +++++++++++++++++++
package/iperf3/Config.in | 2 +
package/iperf3/iperf3.mk | 3 ++
3 files changed, 47 insertions(+)
create mode 100644 package/iperf3/0001-Check-and-link-libatomic-if-needed.patch
diff --git a/package/iperf3/0001-Check-and-link-libatomic-if-needed.patch b/package/iperf3/0001-Check-and-link-libatomic-if-needed.patch
new file mode 100644
index 00000000000..ddb50c46949
--- /dev/null
+++ b/package/iperf3/0001-Check-and-link-libatomic-if-needed.patch
@@ -0,0 +1,42 @@
+From bbf710e77e4a0438a2d995fd69b472e5ff054c69 Mon Sep 17 00:00:00 2001
+From: Jan Palus <jpalus@fastmail.com>
+Date: Sun, 3 Dec 2023 12:14:05 +0100
+Subject: [PATCH] Check and link libatomic if needed
+
+Some architectures without native support for 64-bit atomics need
+linking with libatomic.
+
+Signed-off-by: Julien Olivain <ju.o@free.fr>
+Upstream: https://github.com/esnet/iperf/commit/1511e9f85b548891ea53d4e378903344df1fd31e
+---
+ configure.ac | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/configure.ac b/configure.ac
+index 2594b39..ad7eaf1 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -92,7 +92,19 @@ CXX="$PTHREAD_CXX"
+ ])
+
+ # Atomics
+-AC_CHECK_HEADERS([stdatomic.h])
++AC_CHECK_HEADERS([stdatomic.h],
++ [AC_MSG_CHECKING([whether libatomic is required])
++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdatomic.h>]], [[atomic_uint_fast64_t i; i++;]])],
++ [AC_MSG_RESULT([no])],
++ [save_LIBS="$LIBS"
++ LIBS="$LIBS -latomic"
++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdatomic.h>]], [[atomic_uint_fast64_t i; i++;]])],
++ [AC_MSG_RESULT([yes])],
++ [AC_MSG_ERROR([failed to find working configuration with atomics])]
++ )]
++ )],
++ []
++)
+
+ # Check for poll.h (it's in POSIX so everyone should have it?)
+ AC_CHECK_HEADERS([poll.h])
+--
+2.44.0
+
diff --git a/package/iperf3/Config.in b/package/iperf3/Config.in
index 5b2204c5e01..0c6946f55d9 100644
--- a/package/iperf3/Config.in
+++ b/package/iperf3/Config.in
@@ -1,5 +1,6 @@
config BR2_PACKAGE_IPERF3
bool "iperf3"
+ depends on BR2_TOOLCHAIN_HAS_ATOMIC
depends on BR2_TOOLCHAIN_HAS_THREADS
help
iperf is a tool for active measurements of the maximum
@@ -13,4 +14,5 @@ config BR2_PACKAGE_IPERF3
http://software.es.net/iperf/index.html
comment "iperf3 needs a toolchain w/ threads"
+ depends on BR2_TOOLCHAIN_HAS_ATOMIC
depends on !BR2_TOOLCHAIN_HAS_THREADS
diff --git a/package/iperf3/iperf3.mk b/package/iperf3/iperf3.mk
index 6d902c3b13b..3ab68bd13b5 100644
--- a/package/iperf3/iperf3.mk
+++ b/package/iperf3/iperf3.mk
@@ -11,6 +11,9 @@ IPERF3_LICENSE = BSD-3-Clause, BSD-2-Clause, MIT
IPERF3_LICENSE_FILES = LICENSE
IPERF3_CPE_ID_VENDOR = es
+# 0001-Check-and-link-libatomic-if-needed.patch
+IPERF3_AUTORECONF = YES
+
IPERF3_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE"
ifeq ($(BR2_PACKAGE_OPENSSL),y)
--
2.44.0
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [Buildroot] [PATCH 1/1] package/iperf3: fix build with libatomic
2024-04-01 17:16 [Buildroot] [PATCH 1/1] package/iperf3: fix build with libatomic Julien Olivain
@ 2024-04-01 20:12 ` Yann E. MORIN
0 siblings, 0 replies; 2+ messages in thread
From: Yann E. MORIN @ 2024-04-01 20:12 UTC (permalink / raw)
To: Julien Olivain; +Cc: buildroot
Julien, all,
On 2024-04-01 19:16 +0200, Julien Olivain spake thusly:
> Commit 9f94b3b354 "package/iperf3: bump to version 3.16" updated
> the package but forgot to reflect a breaking change mentioned in
> the release note [1], "iperf3 now requires pthreads and C atomic
> variables to compile and run".
>
> When the toolchain has no atomic support, or the libatomic is not
> added in the linker flags, the compilation now fail with output:
>
> arm-buildroot-linux-gnueabi/bin/ld: ./.libs/libiperf.so: undefined reference to '__atomic_load_8'
>
> This issue can be seen when running the iperf3 runtime test, with
> command:
>
> support/testing/run-tests \
> -d dl -o output_test \
> tests.package.test_iperf3
>
> This commit fixes the issue by adding a dependency on
> BR2_TOOLCHAIN_HAS_ATOMIC and by adding an upstream patch to detect
> if linking to libatomic is needed.
>
> Fixes: [2]
>
> [1] https://github.com/esnet/iperf/releases/tag/3.16
> [2] https://gitlab.com/buildroot.org/buildroot/-/jobs/6466933622
>
> Signed-off-by: Julien Olivain <ju.o@free.fr>
Applied to master, thanks.
Regards,
Yann E. MORIN.
> ---
> ...1-Check-and-link-libatomic-if-needed.patch | 42 +++++++++++++++++++
> package/iperf3/Config.in | 2 +
> package/iperf3/iperf3.mk | 3 ++
> 3 files changed, 47 insertions(+)
> create mode 100644 package/iperf3/0001-Check-and-link-libatomic-if-needed.patch
>
> diff --git a/package/iperf3/0001-Check-and-link-libatomic-if-needed.patch b/package/iperf3/0001-Check-and-link-libatomic-if-needed.patch
> new file mode 100644
> index 00000000000..ddb50c46949
> --- /dev/null
> +++ b/package/iperf3/0001-Check-and-link-libatomic-if-needed.patch
> @@ -0,0 +1,42 @@
> +From bbf710e77e4a0438a2d995fd69b472e5ff054c69 Mon Sep 17 00:00:00 2001
> +From: Jan Palus <jpalus@fastmail.com>
> +Date: Sun, 3 Dec 2023 12:14:05 +0100
> +Subject: [PATCH] Check and link libatomic if needed
> +
> +Some architectures without native support for 64-bit atomics need
> +linking with libatomic.
> +
> +Signed-off-by: Julien Olivain <ju.o@free.fr>
> +Upstream: https://github.com/esnet/iperf/commit/1511e9f85b548891ea53d4e378903344df1fd31e
> +---
> + configure.ac | 14 +++++++++++++-
> + 1 file changed, 13 insertions(+), 1 deletion(-)
> +
> +diff --git a/configure.ac b/configure.ac
> +index 2594b39..ad7eaf1 100644
> +--- a/configure.ac
> ++++ b/configure.ac
> +@@ -92,7 +92,19 @@ CXX="$PTHREAD_CXX"
> + ])
> +
> + # Atomics
> +-AC_CHECK_HEADERS([stdatomic.h])
> ++AC_CHECK_HEADERS([stdatomic.h],
> ++ [AC_MSG_CHECKING([whether libatomic is required])
> ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdatomic.h>]], [[atomic_uint_fast64_t i; i++;]])],
> ++ [AC_MSG_RESULT([no])],
> ++ [save_LIBS="$LIBS"
> ++ LIBS="$LIBS -latomic"
> ++ AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <stdatomic.h>]], [[atomic_uint_fast64_t i; i++;]])],
> ++ [AC_MSG_RESULT([yes])],
> ++ [AC_MSG_ERROR([failed to find working configuration with atomics])]
> ++ )]
> ++ )],
> ++ []
> ++)
> +
> + # Check for poll.h (it's in POSIX so everyone should have it?)
> + AC_CHECK_HEADERS([poll.h])
> +--
> +2.44.0
> +
> diff --git a/package/iperf3/Config.in b/package/iperf3/Config.in
> index 5b2204c5e01..0c6946f55d9 100644
> --- a/package/iperf3/Config.in
> +++ b/package/iperf3/Config.in
> @@ -1,5 +1,6 @@
> config BR2_PACKAGE_IPERF3
> bool "iperf3"
> + depends on BR2_TOOLCHAIN_HAS_ATOMIC
> depends on BR2_TOOLCHAIN_HAS_THREADS
> help
> iperf is a tool for active measurements of the maximum
> @@ -13,4 +14,5 @@ config BR2_PACKAGE_IPERF3
> http://software.es.net/iperf/index.html
>
> comment "iperf3 needs a toolchain w/ threads"
> + depends on BR2_TOOLCHAIN_HAS_ATOMIC
> depends on !BR2_TOOLCHAIN_HAS_THREADS
> diff --git a/package/iperf3/iperf3.mk b/package/iperf3/iperf3.mk
> index 6d902c3b13b..3ab68bd13b5 100644
> --- a/package/iperf3/iperf3.mk
> +++ b/package/iperf3/iperf3.mk
> @@ -11,6 +11,9 @@ IPERF3_LICENSE = BSD-3-Clause, BSD-2-Clause, MIT
> IPERF3_LICENSE_FILES = LICENSE
> IPERF3_CPE_ID_VENDOR = es
>
> +# 0001-Check-and-link-libatomic-if-needed.patch
> +IPERF3_AUTORECONF = YES
> +
> IPERF3_CONF_ENV += CFLAGS="$(TARGET_CFLAGS) -D_GNU_SOURCE"
>
> ifeq ($(BR2_PACKAGE_OPENSSL),y)
> --
> 2.44.0
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2024-04-01 20:12 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-01 17:16 [Buildroot] [PATCH 1/1] package/iperf3: fix build with libatomic Julien Olivain
2024-04-01 20:12 ` Yann E. MORIN
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.