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:
@@ -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,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";
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user