diff options
author | Lluís Batlle i Rossell <viric@vicerveza.homeunix.net> | 2015-02-09 22:14:57 +0100 |
---|---|---|
committer | Lluís Batlle i Rossell <viric@vicerveza.homeunix.net> | 2015-02-09 22:36:10 +0100 |
commit | 6790caf713d3bfbb1d45719b16c821fa3ccb8ed4 (patch) | |
tree | 852934855f86be3e5ff3ba17a46d45859b4bea03 | |
parent | 7fc94dd3bb79f1ad3086daeb6d47702131717e01 (diff) | |
download | nixlib-6790caf713d3bfbb1d45719b16c821fa3ccb8ed4.tar nixlib-6790caf713d3bfbb1d45719b16c821fa3ccb8ed4.tar.gz nixlib-6790caf713d3bfbb1d45719b16c821fa3ccb8ed4.tar.bz2 nixlib-6790caf713d3bfbb1d45719b16c821fa3ccb8ed4.tar.lz nixlib-6790caf713d3bfbb1d45719b16c821fa3ccb8ed4.tar.xz nixlib-6790caf713d3bfbb1d45719b16c821fa3ccb8ed4.tar.zst nixlib-6790caf713d3bfbb1d45719b16c821fa3ccb8ed4.zip |
I add back the arm unpack script
The unified made by ambro doesn't work for me in the sheevaplug.
-rw-r--r-- | pkgs/stdenv/linux/default.nix | 5 | ||||
-rw-r--r-- | pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh | 64 |
2 files changed, 68 insertions, 1 deletions
diff --git a/pkgs/stdenv/linux/default.nix b/pkgs/stdenv/linux/default.nix index 1876a8957e9a..3838f3e12d24 100644 --- a/pkgs/stdenv/linux/default.nix +++ b/pkgs/stdenv/linux/default.nix @@ -44,7 +44,10 @@ rec { builder = bootstrapFiles.busybox; - args = [ "ash" "-e" ./scripts/unpack-bootstrap-tools.sh ]; + args = if system == "armv5tel-linux" then + [ "ash" "-e" ./scripts/unpack-bootstrap-tools-arm.sh ] + else + [ "ash" "-e" ./scripts/unpack-bootstrap-tools.sh ]; tarball = bootstrapFiles.bootstrapTools; diff --git a/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh new file mode 100644 index 000000000000..4fe86776e3b9 --- /dev/null +++ b/pkgs/stdenv/linux/scripts/unpack-bootstrap-tools-arm.sh @@ -0,0 +1,64 @@ +set -e + +# Unpack the bootstrap tools tarball. +echo Unpacking the bootstrap tools... +$builder mkdir $out +< $tarball $builder unxz | $builder tar x -C $out + +# Set the ELF interpreter / RPATH in the bootstrap binaries. +echo Patching the bootstrap tools... + +# On x86_64, ld-linux-x86-64.so.2 barfs on patchelf'ed programs. So +# use a copy of patchelf. +LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? $out/bin/cp $out/bin/patchelf . + +for i in $out/bin/* $out/libexec/gcc/*/*/* $out/lib/librt*; do + if test ${i%.la} != $i; then continue; fi + if test ${i%*.so*} != $i; then continue; fi + if ! test -f $i; then continue; fi + if test -L $i; then continue; fi + echo patching $i + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-interpreter $out/lib/ld-linux*.so.? --set-rpath $out/lib --force-rpath $i +done +for i in $out/lib/librt* $out/lib/libcloog* $out/lib/libppl* $out/lib/libgmp* $out/lib/libpcre*; do + if ! test -f $i; then continue; fi + if test -L $i; then continue; fi + echo patching $i + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-rpath $out/lib --force-rpath $i + LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.? \ + $out/bin/patchelf --set-rpath $out/lib --force-rpath $i +done + +# Fix the libc linker script. +export PATH=$out/bin +cat $out/lib/libc.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libc.so.tmp +mv $out/lib/libc.so.tmp $out/lib/libc.so +cat $out/lib/libpthread.so | sed "s|/nix/store/e*-[^/]*/|$out/|g" > $out/lib/libpthread.so.tmp +mv $out/lib/libpthread.so.tmp $out/lib/libpthread.so + +# Provide some additional symlinks. +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 + +# Provide xz (actually only xz -d will work). +echo "#! $out/bin/sh" > $out/bin/xz +echo "exec $builder unxz \"\$@\"" >> $out/bin/xz + +chmod +x $out/bin/egrep $out/bin/fgrep $out/bin/xz |