diff --git a/pkgs/build-support/libredirect/default.nix b/pkgs/build-support/libredirect/default.nix index e92945a4030c..7caca2fc0033 100644 --- a/pkgs/build-support/libredirect/default.nix +++ b/pkgs/build-support/libredirect/default.nix @@ -10,6 +10,8 @@ stdenv.mkDerivation { libName = "libredirect" + stdenv.targetPlatform.extensions.sharedLibrary; + outputs = ["out" "hook"]; + buildPhase = '' $CC -Wall -std=c99 -O3 -shared libredirect.c \ -o "$libName" -fPIC -ldl @@ -21,17 +23,25 @@ stdenv.mkDerivation { installPhase = '' install -vD "$libName" "$out/lib/$libName" + + mkdir -p "$hook/nix-support" + cat < "$hook/nix-support/setup-hook" + ${if stdenv.isDarwin then '' + export DYLD_INSERT_LIBRARIES="$out/lib/$libName" + export DYLD_FORCE_FLAT_NAMESPACE=1 + '' else '' + export LD_PRELOAD="$out/lib/$libName" + ''} + SETUP_HOOK ''; doInstallCheck = true; - installCheckPhase = if stdenv.isDarwin then '' - NIX_REDIRECTS="/foo/bar/test=${coreutils}/bin/true" \ - DYLD_INSERT_LIBRARIES="$out/lib/$libName" \ - DYLD_FORCE_FLAT_NAMESPACE=1 ./test - '' else '' - NIX_REDIRECTS="/foo/bar/test=${coreutils}/bin/true" \ - LD_PRELOAD="$out/lib/$libName" ./test + installCheckPhase = '' + ( + source "$hook/nix-support/setup-hook" + NIX_REDIRECTS="/foo/bar/test=${coreutils}/bin/true" ./test + ) ''; meta = {