summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pkgs/build-support/setup-hooks/fix-darwin-dylib-names.sh9
-rw-r--r--pkgs/development/compilers/gcc/6/default.nix31
2 files changed, 26 insertions, 14 deletions
diff --git a/pkgs/build-support/setup-hooks/fix-darwin-dylib-names.sh b/pkgs/build-support/setup-hooks/fix-darwin-dylib-names.sh
index 1b36f5f555da..af2ff0cc9662 100644
--- a/pkgs/build-support/setup-hooks/fix-darwin-dylib-names.sh
+++ b/pkgs/build-support/setup-hooks/fix-darwin-dylib-names.sh
@@ -23,7 +23,14 @@ fixDarwinDylibNames() {
for fn in "$@"; do
if [ -L "$fn" ]; then continue; fi
echo "$fn: fixing dylib"
- install_name_tool -id "$fn" "${flags[@]}" "$fn"
+ int_out=$(install_name_tool -id "$fn" "${flags[@]}" "$fn" 2>&1)
+ result=$?
+ if [ "$result" -ne 0 ] &&
+ ! grep "shared library stub file and can't be changed" <<< "$out"
+ then
+ echo "$int_out" >&2
+ exit "$result"
+ fi
done
}
diff --git a/pkgs/development/compilers/gcc/6/default.nix b/pkgs/development/compilers/gcc/6/default.nix
index adaf4e36ce96..6fd1995354f6 100644
--- a/pkgs/development/compilers/gcc/6/default.nix
+++ b/pkgs/development/compilers/gcc/6/default.nix
@@ -180,18 +180,23 @@ stdenv.mkDerivation ({
hardeningDisable = [ "format" "pie" ];
- # This should kill all the stdinc frameworks that gcc and friends like to
- # insert into default search paths.
- prePatch = stdenv.lib.optionalString hostPlatform.isDarwin ''
- substituteInPlace gcc/config/darwin-c.c \
- --replace 'if (stdinc)' 'if (0)'
-
- substituteInPlace libgcc/config/t-slibgcc-darwin \
- --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)"
-
- substituteInPlace libgfortran/configure \
- --replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname"
- '';
+ prePatch =
+ (stdenv.lib.optionalString (langJava || langGo) ''
+ export lib=$out
+ '')
+
+ # This should kill all the stdinc frameworks that gcc and friends like to
+ # insert into default search paths.
+ + stdenv.lib.optionalString hostPlatform.isDarwin ''
+ substituteInPlace gcc/config/darwin-c.c \
+ --replace 'if (stdinc)' 'if (0)'
+
+ substituteInPlace libgcc/config/t-slibgcc-darwin \
+ --replace "-install_name @shlib_slibdir@/\$(SHLIB_INSTALL_NAME)" "-install_name $lib/lib/\$(SHLIB_INSTALL_NAME)"
+
+ substituteInPlace libgfortran/configure \
+ --replace "-install_name \\\$rpath/\\\$soname" "-install_name $lib/lib/\\\$soname"
+ '';
postPatch =
if targetPlatform != hostPlatform || stdenv.cc.libc != null then
@@ -447,7 +452,7 @@ stdenv.mkDerivation ({
// optionalAttrs (enableMultilib) { dontMoveLib64 = true; }
-// optionalAttrs (langJava) {
+// optionalAttrs (langJava && !stdenv.hostPlatform.isDarwin) {
postFixup = ''
target="$(echo "$out/libexec/gcc"/*/*/ecj*)"
patchelf --set-rpath "$(patchelf --print-rpath "$target"):$out/lib" "$target"