haskell.compiler.ghc*Binary: detect -lnuma based on library list

This is more robust when new bindists are added to expressions since no
additional conditional needs to be updated.
This commit is contained in:
sternenseemann 2025-05-27 14:49:07 +02:00
parent a0d0ba9ef3
commit 3c3fef04a2
4 changed files with 40 additions and 20 deletions

View File

@ -342,12 +342,17 @@ stdenv.mkDerivation {
-exec sed -i "s@extra-lib-dirs: @extra-lib-dirs: ${libiconv}/lib@" {} \;
''
+
# aarch64 does HAVE_NUMA so -lnuma requires it in library-dirs in rts/package.conf.in
# Some platforms do HAVE_NUMA so -lnuma requires it in library-dirs in rts/package.conf.in
# FFI_LIB_DIR is a good indication of places it must be needed.
lib.optionalString (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) ''
find . -name package.conf.in \
-exec sed -i "s@FFI_LIB_DIR@FFI_LIB_DIR ${numactl.out}/lib@g" {} \;
''
lib.optionalString
(
lib.meta.availableOn stdenv.hostPlatform numactl
&& builtins.any ({ nixPackage, ... }: nixPackage == numactl) binDistUsed.archSpecificLibraries
)
''
find . -name package.conf.in \
-exec sed -i "s@FFI_LIB_DIR@FFI_LIB_DIR ${numactl.out}/lib@g" {} \;
''
+
# Rename needed libraries and binaries, fix interpreter
lib.optionalString stdenv.hostPlatform.isLinux ''

View File

@ -311,12 +311,17 @@ stdenv.mkDerivation {
-i {} \;
''
+
# aarch64 does HAVE_NUMA so -lnuma requires it in library-dirs in rts/package.conf.in
# Some platforms do HAVE_NUMA so -lnuma requires it in library-dirs in rts/package.conf.in
# FFI_LIB_DIR is a good indication of places it must be needed.
lib.optionalString (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) ''
find . -name package.conf.in \
-exec sed -i "s@FFI_LIB_DIR@FFI_LIB_DIR ${numactl.out}/lib@g" {} \;
''
lib.optionalString
(
lib.meta.availableOn stdenv.hostPlatform numactl
&& builtins.any ({ nixPackage, ... }: nixPackage == numactl) binDistUsed.archSpecificLibraries
)
''
find . -name package.conf.in \
-exec sed -i "s@FFI_LIB_DIR@FFI_LIB_DIR ${numactl.out}/lib@g" {} \;
''
+
# Rename needed libraries and binaries, fix interpreter
lib.optionalString stdenv.hostPlatform.isLinux ''

View File

@ -297,12 +297,17 @@ stdenv.mkDerivation {
-i {} \;
''
+
# aarch64 does HAVE_NUMA so -lnuma requires it in library-dirs in rts/package.conf.in
# Some platforms do HAVE_NUMA so -lnuma requires it in library-dirs in rts/package.conf.in
# FFI_LIB_DIR is a good indication of places it must be needed.
lib.optionalString (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) ''
find . -name package.conf.in \
-exec sed -i "s@FFI_LIB_DIR@FFI_LIB_DIR ${numactl.out}/lib@g" {} \;
''
lib.optionalString
(
lib.meta.availableOn stdenv.hostPlatform numactl
&& builtins.any ({ nixPackage, ... }: nixPackage == numactl) binDistUsed.archSpecificLibraries
)
''
find . -name package.conf.in \
-exec sed -i "s@FFI_LIB_DIR@FFI_LIB_DIR ${numactl.out}/lib@g" {} \;
''
+
# Rename needed libraries and binaries, fix interpreter
lib.optionalString stdenv.hostPlatform.isLinux ''

View File

@ -311,12 +311,17 @@ stdenv.mkDerivation {
-i {} \;
''
+
# aarch64 does HAVE_NUMA so -lnuma requires it in library-dirs in rts/package.conf.in
# Some platforms do HAVE_NUMA so -lnuma requires it in library-dirs in rts/package.conf.in
# FFI_LIB_DIR is a good indication of places it must be needed.
lib.optionalString (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) ''
find . -name package.conf.in \
-exec sed -i "s@FFI_LIB_DIR@FFI_LIB_DIR ${numactl.out}/lib@g" {} \;
''
lib.optionalString
(
lib.meta.availableOn stdenv.hostPlatform numactl
&& builtins.any ({ nixPackage, ... }: nixPackage == numactl) binDistUsed.archSpecificLibraries
)
''
find . -name package.conf.in \
-exec sed -i "s@FFI_LIB_DIR@FFI_LIB_DIR ${numactl.out}/lib@g" {} \;
''
+
# Rename needed libraries and binaries, fix interpreter
lib.optionalString stdenv.hostPlatform.isLinux ''