diff options
author | Dan Peebles <pumpkin@me.com> | 2016-10-15 21:36:51 -0400 |
---|---|---|
committer | Dan Peebles <pumpkin@me.com> | 2016-10-15 21:36:51 -0400 |
commit | 6a380c20e02e7c36fb357d450c609180fafe5e47 (patch) | |
tree | f056fa6c9a663534e81bd24aad468360d6812f50 /pkgs/stdenv/darwin/make-bootstrap-tools.nix | |
parent | 31b286467c858480670dec7aa0f1f2dffb756f2b (diff) | |
download | nixpkgs-6a380c20e02e7c36fb357d450c609180fafe5e47.tar nixpkgs-6a380c20e02e7c36fb357d450c609180fafe5e47.tar.gz nixpkgs-6a380c20e02e7c36fb357d450c609180fafe5e47.tar.bz2 nixpkgs-6a380c20e02e7c36fb357d450c609180fafe5e47.tar.lz nixpkgs-6a380c20e02e7c36fb357d450c609180fafe5e47.tar.xz nixpkgs-6a380c20e02e7c36fb357d450c609180fafe5e47.tar.zst nixpkgs-6a380c20e02e7c36fb357d450c609180fafe5e47.zip |
darwin.make-bootstrap-tools: Fix test target
I'll probably get rid of this eventually since the test-pkgs stuff is more realistic, but this gives quick feedback for now.
Diffstat (limited to 'pkgs/stdenv/darwin/make-bootstrap-tools.nix')
-rw-r--r-- | pkgs/stdenv/darwin/make-bootstrap-tools.nix | 56 |
1 files changed, 53 insertions, 3 deletions
diff --git a/pkgs/stdenv/darwin/make-bootstrap-tools.nix b/pkgs/stdenv/darwin/make-bootstrap-tools.nix index 11a52eb423e..10d2b4decdd 100644 --- a/pkgs/stdenv/darwin/make-bootstrap-tools.nix +++ b/pkgs/stdenv/darwin/make-bootstrap-tools.nix @@ -197,14 +197,49 @@ in rec { fi done + install_name_tool \ + -id $out/lib/system/libsystem_c.dylib \ + $out/lib/system/libsystem_c.dylib + + install_name_tool \ + -id $out/lib/system/libsystem_kernel.dylib \ + $out/lib/system/libsystem_kernel.dylib + + # TODO: this logic basically duplicates similar logic in the Libsystem expression. Deduplicate them! + libs=$(otool -arch x86_64 -L /usr/lib/libSystem.dylib | tail -n +3 | awk '{ print $1 }') + + for i in $libs; do + if [ "$i" != "/usr/lib/system/libsystem_kernel.dylib" ] && [ "$i" != "/usr/lib/system/libsystem_c.dylib" ]; then + args="$args -reexport_library $i" + fi + done + + ld -macosx_version_min 10.7 \ + -arch x86_64 \ + -dylib \ + -o $out/lib/libSystem.B.dylib \ + -compatibility_version 1.0 \ + -current_version 1226.10.1 \ + -reexport_library $out/lib/system/libsystem_c.dylib \ + -reexport_library $out/lib/system/libsystem_kernel.dylib \ + $args + + ln -s libSystem.B.dylib $out/lib/libSystem.dylib + + for name in c dbm dl info m mx poll proc pthread rpcsvc util gcc_s.10.4 gcc_s.10.5; do + ln -s libSystem.dylib $out/lib/lib$name.dylib + done + + ln -s libresolv.9.dylib $out/lib/libresolv.dylib + for i in $out/lib/*.dylib $out/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation; do - if ! test -L $i; then - echo patching $i + if test ! -L "$i" -a "$i" != "$out/lib/libSystem*.dylib"; then + echo "Patching $i" id=$(otool -D "$i" | tail -n 1) install_name_tool -id "$(dirname $i)/$(basename $id)" $i - libs=$(otool -L "$i" | tail -n +2 | grep -v Libsystem | cat) + libs=$(otool -L "$i" | tail -n +2 | grep -v libSystem | cat) if [ -n "$libs" ]; then install_name_tool -add_rpath $out/lib $i fi @@ -214,9 +249,24 @@ in rec { ln -s bash $out/bin/sh ln -s bzip2 $out/bin/bunzip2 + # Provide a gunzip script. + cat > $out/bin/gunzip <<EOF + #!$out/bin/sh + exec $out/bin/gzip -d "\$@" + EOF + chmod +x $out/bin/gunzip + + # Provide fgrep/egrep. + echo "#! $out/bin/sh" > $out/bin/egrep + echo "exec $out/bin/grep -E \"\$@\"" >> $out/bin/egrep + echo "#! $out/bin/sh" > $out/bin/fgrep + echo "exec $out/bin/grep -F \"\$@\"" >> $out/bin/fgrep + cat >$out/bin/dsymutil << EOF #!$out/bin/sh EOF + + chmod +x $out/bin/egrep $out/bin/fgrep $out/bin/dsymutil ''; allowedReferences = [ "out" ]; |