package: add hwloc 1.10.1
PATCH v3 1/1 package: add hwloc 1.10.1
---
v2
- Fixed description in Config.in.
v3
- Fixed source URL for hwloc.hash entries.
- Copied dependencies from libpciaccess/numactl.
package/Config.in | 1 + package/hwloc/Config.in | 18 ++++++++++++++++++ package/hwloc/hwloc.hash | 2 ++ package/hwloc/hwloc.mk | 14 ++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 package/hwloc/Config.in create mode 100644 package/hwloc/hwloc.hash create mode 100644 package/hwloc/hwloc.mk
package/Config.in +1 -0
@@ -331,6 +331,7 @@ if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS source "package/hdparm/Config.in" endif source "package/hwdata/Config.in" + source "package/hwloc/Config.in" source "package/i2c-tools/Config.in" source "package/input-event-daemon/Config.in" source "package/input-tools/Config.in"
package/hwloc/Config.in new file +18 -0
@@ -0,0 +1,18 @@ +config BR2_PACKAGE_HWLOC + bool "hwloc" + # libpciaccess dependency + depends on BR2_LARGEFILE + # numactl dependency + depends on BR2_i386 || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_powerpc || BR2_x86_64 + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_NUMACTL + help + Portable Hardware Locality + + Provides a portable abstraction (across OS, versions, architectures, ...) + of the hierarchical topology of modern architectures, including NUMA + memory nodes, sockets, shared caches, cores and simultaneous + multithreading. + + http://www.open-mpi.org/projects/hwloc/
package/hwloc/hwloc.hash new file +2 -0
@@ -0,0 +1,2 @@ +# From http://www.open-mpi.org/software/hwloc/v1.10/ +sha1 76291124e4638b2fbd4deb4cc3cd680e153077b5 hwloc-1.10.1.tar.bz2
package/hwloc/hwloc.mk new file +14 -0
@@ -0,0 +1,14 @@ +################################################################################ +# +# hwloc +# +################################################################################ + +HWLOC_VERSION = 1.10.1 +HWLOC_SOURCE = hwloc-$(HWLOC_VERSION).tar.bz2 +HWLOC_SITE = http://www.open-mpi.org/software/hwloc/v1.10/downloads +HWLOC_DEPENDENCIES = libpciaccess numactl +HWLOC_LICENSE = BSD-3c +HWLOC_LICENSE_FILES = COPYING + +$(eval $(autotools-package))
Signature · 1 line
2.3.3
PATCH v3 1/1 package: add hwloc 1.10.1
Dear Steven Noonan,
Quoted 6 lines · Steven Noonan
package/hwloc/Config.in new file +0
-0
package/hwloc/Config.in line 9
Quoted 9 lines
package/hwloc/Config.in new file +9
-0@@ -0,0 +1,18 @@ +config BR2_PACKAGE_HWLOC + bool "hwloc" + # libpciaccess dependency + depends on BR2_LARGEFILE + # numactl dependency + depends on BR2_i386 || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_powerpc || BR2_x86_64 + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_NUMACTL
The dependencies on libpciaccess and numactl are optional, so I removed them.
However, there was a missing dependency on BR2_TOOLCHAIN_HAS_THREADS, since hwloc uses pthread.
package/hwloc/Config.in line 16
Quoted 7 lines
package/hwloc/Config.in new file +7
-0+ help + Portable Hardware Locality + + Provides a portable abstraction (across OS, versions, architectures, ...) + of the hierarchical topology of modern architectures, including NUMA + memory nodes, sockets, shared caches, cores and simultaneous + multithreading.
Lines slightly too long, so I rewrapped.
package/hwloc/Config.in
Quoted 7 lines
package/hwloc/Config.in new file +7
-0+################################################################################ +# +# hwloc +# +################################################################################ + +HWLOC_VERSION = 1.10.1
I declared HWLOC_VERSION_MAJOR here..
package/hwloc/Config.in
Quoted 2 lines
package/hwloc/Config.in new file +2
-0+HWLOC_SOURCE = hwloc-$(HWLOC_VERSION).tar.bz2 +HWLOC_SITE = http://www.open-mpi.org/software/hwloc/v1.10/downloads
... so it can be re-used here.
Quoted 1 line
+HWLOC_DEPENDENCIES = libpciaccess numactl
As I said, those dependencies are optional, so I made them as such, and also used explicit --enable/--disable options. This allowed me to discover that the numa support was never enabled with your submission:
the numactl package was not installing its library/header file in $(STAGING_DIR). With an explicit --enable-libnuma, hwloc configure script bailed out since it couldn't find the libnuma library.
So I committed a patch that installs libnuma to the staging directory as well.
Also, I added some explicit --disable options for the things that we don't support for now.
Committed with those issues fixed.
Thanks,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
PATCH v3 1/1 package: add hwloc 1.10.1
Quoted 23 lines · Thomas Petazzoni
Dear Steven Noonan,
Quoted 6 lines · Steven Noonan
package/hwloc/Config.in new file +0
-0package/hwloc/Config.in line 9
Quoted 9 lines
package/hwloc/Config.in new file +9
-0@@ -0,0 +1,18 @@ +config BR2_PACKAGE_HWLOC + bool "hwloc" + # libpciaccess dependency + depends on BR2_LARGEFILE + # numactl dependency + depends on BR2_i386 || BR2_mips || BR2_mipsel || \ + BR2_mips64 || BR2_mips64el || BR2_powerpc || BR2_x86_64 + select BR2_PACKAGE_LIBPCIACCESS + select BR2_PACKAGE_NUMACTLThe dependencies on libpciaccess and numactl are optional, so I removed them.
Quoted 2 lines
However, there was a missing dependency on
BR2_TOOLCHAIN_HAS_THREADS, since hwloc uses pthread.
Again, only tested with glibc and such, so I'm not seeing lots of these dependencies. Glad I held off on my other contributions until I could get these through review. Now I've got some ideas of things to look for before submission.
Quoted 9 lines
package/hwloc/Config.in line 16
Quoted 7 lines
package/hwloc/Config.in new file +7
-0+ help + Portable Hardware Locality + + Provides a portable abstraction (across OS, versions, architectures, ...) + of the hierarchical topology of modern architectures, including NUMA + memory nodes, sockets, shared caches, cores and simultaneous + multithreading.Lines slightly too long, so I rewrapped.
What column wrapping is preferred for the Config.in files? I could throw it into my vim config to enforce it in the future.
Quoted 16 lines
package/hwloc/Config.in
Quoted 8 lines
package/hwloc/Config.in new file +7
-0+################################################################################ +# +# hwloc +# +################################################################################ + +HWLOC_VERSION = 1.10.1I declared
HWLOC_VERSION_MAJORhere..package/hwloc/Config.in
Quoted 2 lines
package/hwloc/Config.in new file +2
-0+HWLOC_SOURCE = hwloc-$(HWLOC_VERSION).tar.bz2 +HWLOC_SITE = http://www.open-mpi.org/software/hwloc/v1.10/downloads... so it can be re-used here.
Quoted 8 lines
Quoted 1 line
+HWLOC_DEPENDENCIES = libpciaccess numactl
As I said, those dependencies are optional, so I made them as such, and also used explicit --enable/--disable options. This allowed me to discover that the numa support was never enabled with your submission:
the numactl package was not installing its library/header file in $(STAGING_DIR). With an explicit --enable-libnuma, hwloc configure script bailed out since it couldn't find the libnuma library.
This would probably explain why the 'perf' build wasn't finding the optional libnuma dependency as well -- hadn't figured out what was wrong there.
Quoted 2 lines
So I committed a patch that installs libnuma to the staging directory as well.
Excellent. I'm not familiar with how the staging directory works. Does that change work for any package depending on it (e.g. perf)?
Quoted 3 lines
Also, I added some explicit --disable options for the things that we don't support for now.
Nice.
PATCH v3 1/1 package: add hwloc 1.10.1
Dear Steven Noonan,
Quoted 7 lines · Steven Noonan
Quoted 2 lines
However, there was a missing dependency on
BR2_TOOLCHAIN_HAS_THREADS, since hwloc uses pthread.Again, only tested with glibc and such, so I'm not seeing lots of these dependencies. Glad I held off on my other contributions until I could get these through review. Now I've got some ideas of things to look for before submission.
Specifically for thread dependency, I generally don't build with a no-thread toolchain (even though one is available pre-built at
http://autobuild.buildroot.org/toolchains/configs/br-arm-full-nothread.config).
Instead, I grep for pthread in the source code, and try to decide whether it needs thread support or not (sometimes packages use thread when available, but it is optional).
Quoted 4 lines
Quoted 1 line
Lines slightly too long, so I rewrapped.
What column wrapping is preferred for the Config.in files? I could throw it into my vim config to enforce it in the future.
I think 72 ?
Quoted 10 lines
Quoted 6 lines
As I said, those dependencies are optional, so I made them as such, and also used explicit --enable/--disable options. This allowed me to discover that the numa support was never enabled with your submission:
the numactl package was not installing its library/header file in $(STAGING_DIR). With an explicit --enable-libnuma, hwloc configure script bailed out since it couldn't find the libnuma library.This would probably explain why the 'perf' build wasn't finding the optional libnuma dependency as well -- hadn't figured out what was wrong there.
Yes, that would explain it.
Quoted 4 lines
Quoted 2 lines
So I committed a patch that installs libnuma to the staging directory as well.
Excellent. I'm not familiar with how the staging directory works.
It's actually quite simple. The staging directory, $(STAGING_DIR), is the "sysroot" of the toolchain. This is where the toolchain looks to find libraries and headers.
By default, packages only get installed to $(TARGET_DIR), because <pkg>_INSTALL_TARGET defaults to "YES". In this case <pkg>_INSTALL_TARGET_CMDS is called and does it job (of course, for autotools packages, you don't implement this variable manually in your package .mk file, since the autotools-package infra already has it implemented for you).
However, when your package is a library, or generally needs to install something in $(STAGING_DIR), you need to explicitly set <pkg>_INSTALL_STAGING to YES, because it defaults to NO. When set to YES, the top-level package infrastructure will call <pkg>_INSTALL_STAGING_CMDS (which, just like <pkg>_INSTALL_TARGET_CMDS, is already implemented for you for autotools packages, CMake packages and al.).
Quoted 1 line
Does that change work for any package depending on it (e.g. perf)?
Yes: from now on, whenever a package has "numactl" in its <pkg>_DEPENDENCIES variable, numactl will be installed to both $(TARGET_DIR) and $(STAGING_DIR), which means that such packages will be able to "see" the libnuma library and header files.
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com