[Buildroot] [PATCH] package/numactl: make available on all architectures

Yann E. MORIN yann.morin.1998 at free.fr
Sat Apr 24 20:08:42 UTC 2021


Thomas, All,

On 2021-04-18 18:23 +0200, Thomas Petazzoni spake thusly:
> Since its introduction in commit
> b05e74ff92b6728369e1540fc0a2bd60025f2146 in 2013, numactl has had an
> explicit list of architectures that it supports. Interestingly, this
> list does not include ARM, and now that rt-tests unconditionally needs
> numactl, it meant the rt-tests package was no longer available on ARM.
> 
> Further investigation revealed that there is nothing in recent
> versions of numactl that appears to be architecture-specific. It does
> build with all of Buildroot toolchains currently used in the
> autobuilders.
> 
> The only necessary changes are:
> 
>  * Exclude no-MMU architectures, as madvise() is used in the code
>    base, and this is not available on no-MMU architectures.
> 
>  * Make sure to use -latomic when needed, as some atomic operations
>    are used.
> 
>  * Backport a patch that fixes the .symver usage, which only affects
>    really old gcc versions: only the old ARM Sourcery toolchain was
>    affected by this. Newer gcc versions support the gcc "symver"
>    attribute, so that the code that directly emits the assembly
>    .symver directive is not invoked.
> 
> With these changes, numactl builds successfully on all our supported
> toolchains.
> 
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
>  ...0001-Do-not-stringify-SYMVER-symbols.patch | 25 +++++++++++++++++++
>  package/numactl/Config.in                     | 11 +-------
>  package/numactl/numactl.mk                    |  4 +++
>  package/rt-tests/Config.in                    |  4 +--
>  4 files changed, 31 insertions(+), 13 deletions(-)
>  create mode 100644 package/numactl/0001-Do-not-stringify-SYMVER-symbols.patch
> 
> diff --git a/package/numactl/0001-Do-not-stringify-SYMVER-symbols.patch b/package/numactl/0001-Do-not-stringify-SYMVER-symbols.patch
> new file mode 100644
> index 0000000000..c6981aaf73
> --- /dev/null
> +++ b/package/numactl/0001-Do-not-stringify-SYMVER-symbols.patch
> @@ -0,0 +1,25 @@
> +From f96c96af7fbf2779b15f66f03b10315a24fb4f5a Mon Sep 17 00:00:00 2001
> +From: Scott McMillan <smcmillan at nvidia.com>
> +Date: Fri, 9 Oct 2020 08:56:52 -0500
> +Subject: [PATCH] Do not stringify SYMVER symbols
> +
> +Upstream: f96c96af7fbf2779b15f66f03b10315a24fb4f5a
> +Signed-off-by: Thomas Petazzoni <thomas.petazzoni at bootlin.com>
> +---
> + util.h | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/util.h b/util.h
> +index 99ada33..f2a20ac 100644
> +--- a/util.h
> ++++ b/util.h
> +@@ -22,5 +22,5 @@ extern char *policy_name(int policy);
> + #if HAVE_ATTRIBUTE_SYMVER
> + #define SYMVER(a,b) __attribute__ ((symver (b)))
> + #else
> +-#define SYMVER(a,b) __asm__ (".symver " #a "," #b);
> ++#define SYMVER(a,b) __asm__ (".symver " a "," b);
> + #endif
> +-- 
> +2.30.2
> +
> diff --git a/package/numactl/Config.in b/package/numactl/Config.in
> index cd47f2f9a9..23cf7facb0 100644
> --- a/package/numactl/Config.in
> +++ b/package/numactl/Config.in
> @@ -1,15 +1,6 @@
> -config BR2_PACKAGE_NUMACTL_ARCH_SUPPORTS
> -	bool
> -	# numactl uses some system calls that are not available on all
> -	# architectures.
> -	default y if BR2_aarch64
> -	default y if BR2_i386 || BR2_x86_64
> -	default y if BR2_mips || BR2_mipsel ||  BR2_mips64 || BR2_mips64el
> -	default y if BR2_powerpc
> -
>  config BR2_PACKAGE_NUMACTL
>  	bool "numactl"
> -	depends on BR2_PACKAGE_NUMACTL_ARCH_SUPPORTS
> +	depends on BR2_USE_MMU # madvise()
>  	help
>  	  numactl allows you to run your application on specific cpus
>  	  and memory nodes. It does this by supplying a NUMA memory
> diff --git a/package/numactl/numactl.mk b/package/numactl/numactl.mk
> index cf9c759693..3364f6c5c3 100644
> --- a/package/numactl/numactl.mk
> +++ b/package/numactl/numactl.mk
> @@ -12,4 +12,8 @@ NUMACTL_INSTALL_STAGING = YES
>  NUMACTL_AUTORECONF = YES
>  NUMACTL_CONF_ENV = CFLAGS="$(TARGET_CFLAGS) -fPIC"
>  
> +ifeq ($(BR2_TOOLCHAIN_HAS_LIBATOMIC),y)
> +NUMACTL_CONF_ENV += LDFLAGS="$(TARGET_LDFLAGS) -latomic"
> +endif
> +
>  $(eval $(autotools-package))
> diff --git a/package/rt-tests/Config.in b/package/rt-tests/Config.in
> index cc9b14dccb..477fa288d7 100644
> --- a/package/rt-tests/Config.in
> +++ b/package/rt-tests/Config.in
> @@ -2,10 +2,9 @@ config BR2_PACKAGE_RT_TESTS
>  	bool "rt-tests"
>  	depends on BR2_TOOLCHAIN_HAS_THREADS_NPTL
>  	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14 # deadline scheduler syscall
> -	depends on BR2_USE_MMU # fork()
> +	depends on BR2_USE_MMU # fork(), numactl
>  	depends on !BR2_STATIC_LIBS # dlopen
>  	depends on !BR2_TOOLCHAIN_USES_MUSL # cyclictest
> -	depends on BR2_PACKAGE_NUMACTL_ARCH_SUPPORTS
>  	select BR2_PACKAGE_NUMACTL
>  	help
>  	  Set of utilities for testing the real-time behaviour of a
> @@ -34,4 +33,3 @@ comment "rt-tests needs a uClibc or glibc toolchain w/ NPTL, headers >= 3.14, dy
>  	depends on !BR2_TOOLCHAIN_HAS_THREADS_NPTL || BR2_STATIC_LIBS \
>  		|| BR2_TOOLCHAIN_USES_MUSL || !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14
>  	depends on BR2_USE_MMU
> -	depends on BR2_PACKAGE_NUMACTL_ARCH_SUPPORTS
> -- 
> 2.30.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/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.  |
'------------------------------^-------^------------------^--------------------'



More information about the buildroot mailing list