All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [RFC PATCH 1/2] toolchain: add BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET option
@ 2024-10-03 16:26 Dario Binacchi
  2024-10-03 16:26 ` [Buildroot] [RFC PATCH 2/2] package/libcap: fix build failure on ARC targets Dario Binacchi
  2024-11-01  8:58 ` [Buildroot] [RFC PATCH 1/2] toolchain: add BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET option Thomas Petazzoni via buildroot
  0 siblings, 2 replies; 3+ messages in thread
From: Dario Binacchi @ 2024-10-03 16:26 UTC (permalink / raw)
  To: buildroot
  Cc: Marcus Folkesson, Raphael Pavlidis, Bernd Kuhls, Sen Hastings,
	Yann E . MORIN, Thomas Petazzoni, Adrian Perez de Castro,
	Romain Naour, Dario Binacchi, linux-amarula, Giulio Benetti,
	Norbert Lange

The build of libcap fails for ARC Targets which don't have the
ATOMICS_EXT flag set:

configure:5053: checking for cap_set_proc in -lcap

cap_proc.c:(.text+0x78): undefined reference to `__atomic_test_and_set'

configure:5086: result: no
configure:5097: error: libcap support was requested but the library was not found

The patch disables BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET for BR2_arc
without BR2_ARC_ATOMIC_EXT.

Fixes:
- http://autobuild.buildroot.net/results/66ee26677777124eafb4740a3c7437e06f704f98

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---
 toolchain/Config.in | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/toolchain/Config.in b/toolchain/Config.in
index 6e91ab756cd4..6e2856b38ae1 100644
--- a/toolchain/Config.in
+++ b/toolchain/Config.in
@@ -855,6 +855,11 @@ config BR2_TOOLCHAIN_HAS_SYNC_4
 	depends on !BR2_sparc
 	depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
 
+config BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET
+	bool
+	default y
+	depends on !(BR2_arc && !BR2_ARC_ATOMIC_EXT)
+
 # The availability of __sync for 8-byte types on ARM is somewhat
 # complicated:
 #
-- 
2.43.0

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

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

* [Buildroot] [RFC PATCH 2/2] package/libcap: fix build failure on ARC targets
  2024-10-03 16:26 [Buildroot] [RFC PATCH 1/2] toolchain: add BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET option Dario Binacchi
@ 2024-10-03 16:26 ` Dario Binacchi
  2024-11-01  8:58 ` [Buildroot] [RFC PATCH 1/2] toolchain: add BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET option Thomas Petazzoni via buildroot
  1 sibling, 0 replies; 3+ messages in thread
From: Dario Binacchi @ 2024-10-03 16:26 UTC (permalink / raw)
  To: buildroot
  Cc: Marcus Folkesson, Raphael Pavlidis, Bernd Kuhls, Sen Hastings,
	Yann E . MORIN, Thomas Petazzoni, Adrian Perez de Castro,
	Romain Naour, Dario Binacchi, linux-amarula, Giulio Benetti,
	Norbert Lange

Building arp-scan with --with-libcap for the ARC target raises the
following error:

configure:5053: checking for cap_set_proc in -lcap

cap_proc.c:(.text+0x78): undefined reference to `__atomic_test_and_set'

configure:5086: result: no
configure:5097: error: libcap support was requested but the library was not found

The patch adds the dependency on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET
to libcap.

Additionally, besides libcap, it was necessary to add the dependency on
BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET to other packages to remove
warnings of this type:

WARNING: unmet direct dependencies detected for BR2_PACKAGE_LIBCAP
  Depends on [n]: BR2_USE_MMU [=y] && BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET [=n]
  Selected by [y]:
  - BR2_PACKAGE_RNG_TOOLS [=y] && BR2_TOOLCHAIN_HAS_THREADS_NPTL [=y] && BR2_USE_MMU [=y]

WARNING: unmet direct dependencies detected for BR2_PACKAGE_LIBCAP
  Depends on [n]: BR2_USE_MMU [=y] && BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET [=n]
  Selected by [y]:
  - BR2_PACKAGE_RNG_TOOLS [=y] && BR2_TOOLCHAIN_HAS_THREADS_NPTL [=y] && BR2_USE_MMU [=y]

Fixes:
- http://autobuild.buildroot.net/results/66ee26677777124eafb4740a3c7437e06f704f98

Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
---
 package/bubblewrap/Config.in  | 1 +
 package/cdrkit/Config.in      | 1 +
 package/chrony/Config.in      | 1 +
 package/criu/Config.in        | 1 +
 package/libcap/Config.in      | 1 +
 package/ntpsec/Config.in      | 1 +
 package/proftpd/Config.in     | 1 +
 package/rng-tools/Config.in   | 2 +-
 package/slirp4netns/Config.in | 1 +
 package/squid/Config.in       | 1 +
 package/systemd/Config.in     | 1 +
 package/vdr/Config.in         | 1 +
 12 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/package/bubblewrap/Config.in b/package/bubblewrap/Config.in
index 2492cee0e564..95aa171b46b0 100644
--- a/package/bubblewrap/Config.in
+++ b/package/bubblewrap/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_BUBBLEWRAP
 	bool "bubblewrap"
 	depends on BR2_USE_MMU # fork()
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_LIBCAP
 	help
 	  Unprivileged sandbox tool based on Linux namespaces.
diff --git a/package/cdrkit/Config.in b/package/cdrkit/Config.in
index b3ddcbd13540..8b6ed6984993 100644
--- a/package/cdrkit/Config.in
+++ b/package/cdrkit/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_CDRKIT
 	bool "cdrkit"
 	depends on BR2_USE_MMU # fork
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	# Needed for libbz
 	select BR2_PACKAGE_BZIP2
 	select BR2_PACKAGE_LIBCAP
diff --git a/package/chrony/Config.in b/package/chrony/Config.in
index c22b756c113f..2784d20516ce 100644
--- a/package/chrony/Config.in
+++ b/package/chrony/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_CHRONY
 	bool "chrony"
 	depends on BR2_USE_MMU # fork()
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_LIBCAP
 	help
 	  Chrony is a pair of programs which are used to maintain the
diff --git a/package/criu/Config.in b/package/criu/Config.in
index 30b131cd30a6..913583cfee96 100644
--- a/package/criu/Config.in
+++ b/package/criu/Config.in
@@ -26,6 +26,7 @@ config BR2_PACKAGE_CRIU
 	depends on BR2_INSTALL_LIBSTDCPP # protobuf
 	depends on BR2_TOOLCHAIN_HAS_THREADS # protobuf, libnl
 	depends on BR2_USE_WCHAR # libbsd
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_HOST_PYTHON3
 	select BR2_PACKAGE_HOST_PYTHON3_SSL
 	select BR2_PACKAGE_PROTOBUF
diff --git a/package/libcap/Config.in b/package/libcap/Config.in
index e1971b7bb15a..b0379d8f5094 100644
--- a/package/libcap/Config.in
+++ b/package/libcap/Config.in
@@ -1,6 +1,7 @@
 config BR2_PACKAGE_LIBCAP
 	bool "libcap"
 	depends on BR2_USE_MMU # fork()
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET
 	help
 	  This library implements the user-space interfaces to the
 	  POSIX 1003.1e capabilities available in Linux kernels. These
diff --git a/package/ntpsec/Config.in b/package/ntpsec/Config.in
index 3b20daecc77a..9135527c238a 100644
--- a/package/ntpsec/Config.in
+++ b/package/ntpsec/Config.in
@@ -4,6 +4,7 @@ config BR2_PACKAGE_NTPSEC
 	depends on BR2_USE_WCHAR # python3
 	depends on BR2_TOOLCHAIN_HAS_THREADS # python3
 	depends on !BR2_STATIC_LIBS # python3
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_LIBCAP
 	select BR2_PACKAGE_OPENSSL
 	select BR2_PACKAGE_PYTHON3
diff --git a/package/proftpd/Config.in b/package/proftpd/Config.in
index 9d99ff70c485..f82c2c460029 100644
--- a/package/proftpd/Config.in
+++ b/package/proftpd/Config.in
@@ -12,6 +12,7 @@ if BR2_PACKAGE_PROFTPD
 
 config BR2_PACKAGE_PROFTPD_MOD_CAP
 	bool "mod_cap support"
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_LIBCAP
 	help
 	  Compile ProFTPD with mod_cap support
diff --git a/package/rng-tools/Config.in b/package/rng-tools/Config.in
index 7f08fa25fbf7..cc11484aefd9 100644
--- a/package/rng-tools/Config.in
+++ b/package/rng-tools/Config.in
@@ -2,7 +2,7 @@ config BR2_PACKAGE_RNG_TOOLS
 	bool "rng-tools"
 	# pthread_setaffinity_np
 	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
-	depends on BR2_USE_MMU # libcap
+	depends on BR2_USE_MMU && BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_ARGP_STANDALONE if BR2_TOOLCHAIN_USES_UCLIBC || BR2_TOOLCHAIN_USES_MUSL
 	select BR2_PACKAGE_LIBCAP
 	select BR2_PACKAGE_OPENSSL
diff --git a/package/slirp4netns/Config.in b/package/slirp4netns/Config.in
index 22414dfbc972..9103eea70cbc 100644
--- a/package/slirp4netns/Config.in
+++ b/package/slirp4netns/Config.in
@@ -5,6 +5,7 @@ config BR2_PACKAGE_SLIRP4NETNS
 	depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2, slirp
 	depends on BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS # libseccomp
 	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17 # libseccomp
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_LIBCAP
 	select BR2_PACKAGE_LIBGLIB2
 	select BR2_PACKAGE_LIBSECCOMP
diff --git a/package/squid/Config.in b/package/squid/Config.in
index ab13e735e114..ca02c9f97ea1 100644
--- a/package/squid/Config.in
+++ b/package/squid/Config.in
@@ -15,6 +15,7 @@ config BR2_PACKAGE_SQUID
 	depends on BR2_HOST_GCC_AT_LEAST_8 # C++17
 	# needs fork()
 	depends on BR2_USE_MMU
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_LIBCAP
 	select BR2_PACKAGE_LIBTOOL
 	select BR2_PACKAGE_LIBXCRYPT if BR2_TOOLCHAIN_USES_GLIBC
diff --git a/package/systemd/Config.in b/package/systemd/Config.in
index d9545e9db04f..f5ec1cc854d6 100644
--- a/package/systemd/Config.in
+++ b/package/systemd/Config.in
@@ -25,6 +25,7 @@ menuconfig BR2_PACKAGE_SYSTEMD
 	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15
 	depends on BR2_TOOLCHAIN_GCC_AT_LEAST_8
 	depends on BR2_HOST_GCC_AT_LEAST_8 # host-systemd
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_HAS_UDEV
 	select BR2_PACKAGE_DBUS if !BR2_PACKAGE_DBUS_BROKER # runtime
 	select BR2_PACKAGE_LIBCAP
diff --git a/package/vdr/Config.in b/package/vdr/Config.in
index 38502729a7fb..0000eac361e0 100644
--- a/package/vdr/Config.in
+++ b/package/vdr/Config.in
@@ -6,6 +6,7 @@ config BR2_PACKAGE_VDR
 	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9
 	depends on BR2_USE_MMU # fork()
 	depends on BR2_USE_WCHAR
+	depends on BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET # libcap
 	select BR2_PACKAGE_FONTCONFIG
 	select BR2_PACKAGE_FREETYPE
 	select BR2_PACKAGE_JPEG
-- 
2.43.0

_______________________________________________
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] [RFC PATCH 1/2] toolchain: add BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET option
  2024-10-03 16:26 [Buildroot] [RFC PATCH 1/2] toolchain: add BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET option Dario Binacchi
  2024-10-03 16:26 ` [Buildroot] [RFC PATCH 2/2] package/libcap: fix build failure on ARC targets Dario Binacchi
@ 2024-11-01  8:58 ` Thomas Petazzoni via buildroot
  1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-11-01  8:58 UTC (permalink / raw)
  To: Dario Binacchi
  Cc: buildroot, Marcus Folkesson, Raphael Pavlidis, Bernd Kuhls,
	Sen Hastings, Yann E . MORIN, Adrian Perez de Castro,
	Romain Naour, linux-amarula, Giulio Benetti, Norbert Lange

On Thu,  3 Oct 2024 18:26:28 +0200
Dario Binacchi <dario.binacchi@amarulasolutions.com> wrote:

> The build of libcap fails for ARC Targets which don't have the
> ATOMICS_EXT flag set:
> 
> configure:5053: checking for cap_set_proc in -lcap
> 
> cap_proc.c:(.text+0x78): undefined reference to `__atomic_test_and_set'
> 
> configure:5086: result: no
> configure:5097: error: libcap support was requested but the library was not found
> 
> The patch disables BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET for BR2_arc
> without BR2_ARC_ATOMIC_EXT.
> 
> Fixes:
> - http://autobuild.buildroot.net/results/66ee26677777124eafb4740a3c7437e06f704f98
> 
> Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com>
> ---
>  toolchain/Config.in | 5 +++++
>  1 file changed, 5 insertions(+)

Thanks for the patch, but I'm afraid this is not the right approach. We
don't want to have BR2_* options for each and every atomic_* function.
We already have BR2_TOOLCHAIN_HAS_ATOMIC which serves this purpose.
However, what you need to make sure is to link against libatomic. Could
you try this instead?

Thanks,

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
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

end of thread, other threads:[~2024-11-01  8:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-03 16:26 [Buildroot] [RFC PATCH 1/2] toolchain: add BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET option Dario Binacchi
2024-10-03 16:26 ` [Buildroot] [RFC PATCH 2/2] package/libcap: fix build failure on ARC targets Dario Binacchi
2024-11-01  8:58 ` [Buildroot] [RFC PATCH 1/2] toolchain: add BR2_TOOLCHAIN_HAS_ATOMIC_TEST_AND_SET option Thomas Petazzoni via buildroot

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.