Porting changes from stdenv-updates into this branch.

This comes from:
svn diff  ^/nixpkgs/trunk/@18255 ^/nixpkgs/branches/stdenv-updates/ > diff
patch -p0 < diff
and then adding into svn all files new from the patch.

trunk@18255 comes from the last time I updated stdenv-updates from trunk.


svn path=/nixpkgs/stdenv-updates2/; revision=18272
This commit is contained in:
Lluís Batlle i Rossell
2009-11-08 00:32:12 +00:00
parent 6e86ca940f
commit 4b27d28701
63 changed files with 3088 additions and 201 deletions
@@ -0,0 +1,13 @@
{
sh = ./sh;
bzip2 = ./bzip2;
mkdir = ./mkdir;
cpio = ./cpio;
ln = ./ln;
curl = ./curl.bz2;
bootstrapTools = {
url = "http://vicerveza.homeunix.net/~viric/tmp/bootstrap-tools-armv5tel-linux.cpio.bz2";
sha256 = "0b7mrcl7naj1xpqx1qnlmd825dxzikzhxir3mw4pr3dy28n0b2ka";
};
}
+13 -5
View File
@@ -13,6 +13,7 @@ rec {
if system == "i686-linux" then import ./bootstrap/i686
else if system == "x86_64-linux" then import ./bootstrap/x86_64
else if system == "powerpc-linux" then import ./bootstrap/powerpc
else if system == "armv5tel-linux" then import ./bootstrap/armv5tel
else abort "unsupported platform for the pure Linux stdenv";
@@ -50,7 +51,10 @@ rec {
builder = bootstrapFiles.sh;
args = [ ./scripts/unpack-bootstrap-tools.sh ];
args = if (system == "armv5tel-linux") then
([ ./scripts/unpack-bootstrap-tools-arm.sh ])
else
([ ./scripts/unpack-bootstrap-tools.sh ]);
inherit (bootstrapFiles) bzip2 mkdir curl cpio;
@@ -120,12 +124,12 @@ rec {
# A helper function to call gcc-wrapper.
wrapGCC =
{gcc ? bootstrapTools, libc, binutils, shell ? "", name ? "bootstrap-gcc"}:
{gcc ? bootstrapTools, libc, binutils, coreutils, shell ? "", name ? "bootstrap-gcc-wrapper"}:
import ../../build-support/gcc-wrapper {
nativeTools = false;
nativeLibc = false;
inherit gcc binutils libc shell name;
inherit gcc binutils coreutils libc shell name;
stdenv = stdenvLinuxBoot0;
};
@@ -134,7 +138,8 @@ rec {
# of bootstrap tools only, and a minimal Glibc to keep the GCC
# configure script happy.
stdenvLinuxBoot1 = stdenvBootFun {
gcc = wrapGCC {libc = bootstrapGlibc; binutils = bootstrapTools;};
gcc = wrapGCC {libc = bootstrapGlibc; binutils = bootstrapTools;
coreutils = bootstrapTools; };
inherit fetchurl;
};
@@ -156,7 +161,8 @@ rec {
# this one uses the Glibc built in step 3. It still uses
# the rest of the bootstrap tools, including GCC.
stdenvLinuxBoot2 = removeAttrs (stdenvBootFun {
gcc = wrapGCC {binutils = bootstrapTools; libc = stdenvLinuxGlibc;};
gcc = wrapGCC {binutils = bootstrapTools; coreutils = bootstrapTools;
libc = stdenvLinuxGlibc;};
extraAttrs = {glibc = stdenvLinuxGlibc;};
inherit fetchurl;
}) ["gcc" "binutils"];
@@ -176,6 +182,7 @@ rec {
stdenvLinuxBoot3 = stdenvBootFun {
gcc = wrapGCC rec {
inherit (stdenvLinuxBoot2Pkgs) binutils;
coreutils = bootstrapTools;
libc = stdenvLinuxGlibc;
gcc = stdenvLinuxBoot2Pkgs.gcc.gcc;
name = "";
@@ -210,6 +217,7 @@ rec {
gcc = wrapGCC rec {
inherit (stdenvLinuxBoot2Pkgs) binutils;
inherit (stdenvLinuxBoot3Pkgs) coreutils;
libc = stdenvLinuxGlibc;
gcc = stdenvLinuxBoot2Pkgs.gcc.gcc;
shell = stdenvLinuxBoot3Pkgs.bash + "/bin/bash";
+13 -6
View File
@@ -10,20 +10,26 @@ rec {
aclSupport = false;
});
gccLinkStatic = wrapGCCWith (import ../../build-support/gcc-wrapper) uclibc
stdenv.gcc.gcc;
stdenvLinkStatic = overrideGCC stdenv gccLinkStatic;
curlDiet = import ../../tools/networking/curl {
curlStatic = import ../../tools/networking/curl {
stdenv = stdenvLinkStatic;
inherit fetchurl;
stdenv = useDietLibC stdenv;
zlibSupport = false;
sslSupport = false;
linkStatic = true;
};
bzip2Diet = import ../../tools/compression/bzip2 {
bzip2Static = import ../../tools/compression/bzip2 {
stdenv = stdenvLinkStatic;
inherit fetchurl;
stdenv = useDietLibC stdenv;
linkStatic = true;
};
#gccNoShared = wrapGCC ( gcc.gcc.override { enableShared = false; } );
build =
@@ -33,6 +39,7 @@ rec {
buildInputs = [nukeReferences cpio];
buildCommand = ''
set -x
ensureDir $out/bin $out/lib $out/libexec
# Copy what we need of Glibc.
@@ -132,8 +139,8 @@ rec {
cp ${klibc}/lib/klibc/bin.static/cpio $out/in-nixpkgs
cp ${klibc}/lib/klibc/bin.static/mkdir $out/in-nixpkgs
cp ${klibc}/lib/klibc/bin.static/ln $out/in-nixpkgs
cp ${curlDiet}/bin/curl $out/in-nixpkgs
cp ${bzip2Diet}/bin/bzip2 $out/in-nixpkgs
cp ${curlStatic}/bin/curl $out/in-nixpkgs
cp ${bzip2Static}/bin/bzip2 $out/in-nixpkgs
chmod u+w $out/in-nixpkgs/*
strip $out/in-nixpkgs/*
nuke-refs $out/in-nixpkgs/*
@@ -0,0 +1,48 @@
set -e
# Unpack the bootstrap tools tarball.
echo Unpacking the bootstrap tools...
$mkdir $out
$bzip2 -d < $tarball | (cd $out && $cpio -V -i)
# 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/*/*/*; do
echo patching $i
if ! test -L $i; then
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
fi
done
for i in $out/lib/librt* ; do
echo patching $i
if ! test -L $i; then
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
fi
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
# fetchurl needs curl.
bzip2 -d < $curl > $out/bin/curl
chmod +x $out/bin/curl
@@ -10,13 +10,24 @@ 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.2 $out/bin/cp $out/bin/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/*/*/*; do
echo patching $i
if ! test -L $i; then
LD_LIBRARY_PATH=$out/lib $out/lib/ld-linux*.so.2 \
./patchelf --set-interpreter $out/lib/ld-linux*.so.2 --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
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
fi
done
for i in $out/lib/librt* ; do
echo patching $i
if ! test -L $i; then
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
fi
done
@@ -24,6 +35,8 @@ done
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