diff --git a/pkgs/development/tools/mold/default.nix b/pkgs/development/tools/mold/default.nix index 514835e81e4c8..fac67e2ab2001 100644 --- a/pkgs/development/tools/mold/default.nix +++ b/pkgs/development/tools/mold/default.nix @@ -1,6 +1,7 @@ { stdenv , fetchFromGitHub , lib +, coreutils , autoPatchelfHook , cmake , llvmPackages_latest @@ -30,6 +31,39 @@ stdenv.mkDerivation rec { LTO = 1; makeFlags = [ "PREFIX=${placeholder "out"}" ]; + # The next three variables are substituted into the script scaffold below. + # add-flags.sh; add-hardening.sh; ld-wrapper.sh; utils.bash + suffixSalt = lib.replaceStrings ["-" "."] ["_" "_"] stdenv.targetPlatform.config; + # utils.bash + wrapperName = "MOLD_WRAPPER"; + # ld-wrapper.sh; utils.bash + coreutils_bin = lib.getBin coreutils; + + postInstall = let + targetPrefix = lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform) (stdenv.targetPlatform.config + "-"); + in '' + mkdir -p $out/nix-support + + mv $out/bin/mold $out/bin/.mold + + export prog=$out/bin/.mold + substituteAll \ + ${../../../build-support/bintools-wrapper/ld-wrapper.sh} \ + "$out/bin/${targetPrefix}mold" + chmod +x "$out/bin/${targetPrefix}mold" + ln -s $out/bin/${targetPrefix}mold $out/bin/${targetPrefix}ld + + substituteAll \ + ${../../../build-support/bintools-wrapper/add-flags.sh} \ + $out/nix-support/add-flags.sh + substituteAll \ + ${../../../build-support/bintools-wrapper/add-hardening.sh} \ + $out/nix-support/add-hardening.sh + substituteAll \ + ${../../../build-support/wrapper-common/utils.bash} \ + $out/nix-support/utils.bash + ''; + passthru = { updateScript = nix-update-script { attrPath = pname;