From 6891bb5605a97872f37914e8e908b12526c3f1d6 Mon Sep 17 00:00:00 2001 From: Michael Eden Date: Thu, 18 Apr 2019 13:45:18 -0400 Subject: [PATCH 1/2] glibc: remove sotruss in cross builds to not depend on build-time bash --- pkgs/development/libraries/glibc/common.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/libraries/glibc/common.nix b/pkgs/development/libraries/glibc/common.nix index 33c8e5076daa7..76aa817a83405 100644 --- a/pkgs/development/libraries/glibc/common.nix +++ b/pkgs/development/libraries/glibc/common.nix @@ -216,6 +216,6 @@ stdenv.mkDerivation ({ # To avoid a dependency on the build system 'bash'. preFixup = '' - rm -f $bin/bin/{ldd,tzselect,catchsegv,xtrace} + rm -f $bin/bin/{ldd,tzselect,catchsegv,xtrace,sotruss} ''; }) From 44d32d51008296e295749045271541d903d64ff7 Mon Sep 17 00:00:00 2001 From: Michael Eden Date: Sat, 30 Mar 2019 22:45:32 -0400 Subject: [PATCH 2/2] gcc: put target-specific libs in lib output --- pkgs/development/compilers/gcc/7/default.nix | 3 +++ pkgs/development/compilers/gcc/builder.sh | 21 +++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/pkgs/development/compilers/gcc/7/default.nix b/pkgs/development/compilers/gcc/7/default.nix index 68c05d289784a..3124b07367783 100644 --- a/pkgs/development/compilers/gcc/7/default.nix +++ b/pkgs/development/compilers/gcc/7/default.nix @@ -152,6 +152,9 @@ stdenv.mkDerivation ({ libc_dev = stdenv.cc.libc_dev; + # set this var to use in builder.sh + target_triple = targetPlatform.config; + hardeningDisable = [ "format" "pie" ]; # This should kill all the stdinc frameworks that gcc and friends like to diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh index 07a003691d6b2..795b52d0f5974 100644 --- a/pkgs/development/compilers/gcc/builder.sh +++ b/pkgs/development/compilers/gcc/builder.sh @@ -213,9 +213,24 @@ preInstall() { postInstall() { # Move runtime libraries to $lib. - moveToOutput "lib/lib*.so*" "$lib" - moveToOutput "lib/lib*.la" "$lib" - moveToOutput "lib/lib*.dylib" "$lib" + if [[ -d "$out/$target_triple/lib" && -n "$(ls -A $out/$target_triple/lib)" ]]; then + moveToOutput "$target_triple/lib/lib*.so*" "$lib" + moveToOutput "$target_triple/lib/lib*.la" "$lib" + moveToOutput "$target_triple/lib/lib*.dylib" "$lib" + mv "$lib/$target_triple"/lib/* "$lib/lib/" + rmdir -p --ignore-fail-on-non-empty "$lib/$target_triple/lib" || : + elif [[ -d "$out/$target_triple/lib64" && -n "$(ls -A $out/$target_triple/lib64)" ]]; then + moveToOutput "$target_triple/lib64/lib*.so*" "$lib" + moveToOutput "$target_triple/lib64/lib*.la" "$lib" + moveToOutput "$target_triple/lib64/lib*.dylib" "$lib" + mv "$lib/$target_triple"/lib64/* "$lib/lib/" + rmdir -p --ignore-fail-on-non-empty "$lib/$target_triple/lib64" || : + else + moveToOutput "lib/lib*.so*" "$lib" + moveToOutput "lib/lib*.la" "$lib" + moveToOutput "lib/lib*.dylib" "$lib" + fi + moveToOutput "share/gcc-*/python" "$lib" for i in "$lib"/lib/*.{la,py}; do