diff --git a/pkgs/stdenv/darwin/make-bootstrap-tools.nix b/pkgs/stdenv/darwin/make-bootstrap-tools.nix index 836a938b84ae..83e982142d30 100644 --- a/pkgs/stdenv/darwin/make-bootstrap-tools.nix +++ b/pkgs/stdenv/darwin/make-bootstrap-tools.nix @@ -49,14 +49,6 @@ rec { scpSupport = false; }); - gnutar_ = (gnutar.override { libintl = null; }).overrideAttrs (old: { - configureFlags = [ - "--disable-nls" - ] ++ old.configureFlags or []; - }); - - xz_ = xz.override { enableStatic = true; }; - unpackScript = writeText "bootstrap-tools-unpack.sh" '' set -euo pipefail @@ -77,6 +69,9 @@ rec { updateInstallName "$lib" done + # as is a wrapper around clang. need to replace the nuked store paths + sed -i 's|/.*/bin/|'"$out"'/bin/|' $out/bin/as + # Provide a gunzip script. cat > $out/bin/gunzip <&2 exit 1 fi done + shopt -u extglob } - for i in $out/bin/* unpack/bin/* $out/lib{,/darwin}/*.dylib; do + for i in {unpack,$out}/bin/* {unpack,$out}/lib{,/darwin}/*.dylib; do if [[ ! -L $i ]] && isMachO "$i"; then rpathify "$i" checkDeps "$i" fi done - nuke-refs $out/bin/* - nuke-refs $out/lib/* + nuke-refs {unpack,$out}/bin/* + nuke-refs {unpack,$out}/lib/* nuke-refs $out/lib/darwin/* - nuke-refs $out/lib/system/* - nuke-refs unpack/bin/* mkdir $out/.pack mv $out/* $out/.pack mv $out/.pack $out/pack - # validate that tools contain no references into the archive - for tool in unpack/bin/*; do - deps=$(${stdenv.cc.targetPrefix}otool -l "$tool"| grep '@rpath/' || true) - if [[ -n "$deps" ]]; then - printf "error: $tool is not self contained\n$deps\n" >&2 - exit 1 - fi - done - mkdir $out/on-server cp -r unpack $out @@ -339,19 +319,26 @@ rec { # Create a pure environment where we use just what's in the bootstrap tools. buildCommand = '' + mkdir -p $out/bin - ls -l - mkdir $out - mkdir $out/bin - sed --version - find --version - diff --version - patch --version - make --version - awk --version - grep --version - clang --version - xz --version + for exe in $tools/bin/*; do + [[ $exe =~ bunzip2|codesign.*|false|install_name_tool|ld|lipo|pbzx|ranlib|rewrite-tbd|sigtool ]] && continue + $exe --version > /dev/null || { echo $exe failed >&2; exit 1; } + done + + # run all exes that don't take a --version flag + bunzip2 -h + codesign --help + codesign_allocate -i $tools/bin/true -r -o true + false || (($? == 1)) + install_name_tool -id true true + ld -v + lipo -info true + pbzx -v + # ranlib gets tested bulding hello + rewrite-tbd