diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.nix b/pkgs/stdenv/linux/make-bootstrap-tools.nix index 0586cd1021d..df09226183e 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.nix +++ b/pkgs/stdenv/linux/make-bootstrap-tools.nix @@ -7,13 +7,14 @@ let # stdenv-linux's dependencies, rather than building new ones with # dietlibc. bootStdenv = removeAttrs (pkgs.useDietLibC pkgs.stdenv) - ["bash" "bzip2" "coreutils"]; + ["bash" "bzip2" "coreutils" "gnutar" "patchelf"]; }; generator = pkgs.stdenv.mkDerivation { name = "bootstrap-tools-generator"; builder = ./make-bootstrap-tools.sh; - inherit (pkgsDiet) bash bzip2 coreutils; + inherit (pkgsDiet) bash bzip2 coreutils gnutar; + curl = pkgsDiet.realCurl; # The result should not contain any references (store paths) so # that we can safely copy them out of the store and to other diff --git a/pkgs/stdenv/linux/make-bootstrap-tools.sh b/pkgs/stdenv/linux/make-bootstrap-tools.sh index 775b99a502f..e7f170f49a8 100644 --- a/pkgs/stdenv/linux/make-bootstrap-tools.sh +++ b/pkgs/stdenv/linux/make-bootstrap-tools.sh @@ -3,6 +3,11 @@ source $stdenv/setup ensureDir $out/in-nixpkgs ensureDir $out/on-server +# Everything we put in check-only is merely to allow Nix to check that +# we aren't putting binaries with store path references in tarballs. +ensureDir $out/check-only + + nukeRefs() { # Dirty, disgusting, but it works ;-) fileName=$1 @@ -11,11 +16,35 @@ nukeRefs() { mv $fileName.tmp $fileName } + cp $bash/bin/bash $out/in-nixpkgs cp $bzip2/bin/bunzip2 $out/in-nixpkgs -cp $coreutils/bin/cp $out/in-nixpkgs +cp $gnutar/bin/tar $out/in-nixpkgs +cp $curl/bin/curl $out/check-only +bzip2 < $curl/bin/curl > $out/in-nixpkgs/curl.bz2 nukeRefs $out/in-nixpkgs/bash +nukeRefs $out/in-nixpkgs/tar -chmod +w $out/in-nixpkgs/* -strip -s $out/in-nixpkgs/* +for i in $out/in-nixpkgs/*; do + if test -x $i; then + chmod +w $i + strip -s $i + fi +done + + +mkdir tools +mkdir tools/bin + +cp $coreutils/bin/* tools/bin +rm tools/bin/groups # has references +rm tools/bin/printf # idem + +#cp $patchelf/bin/* tools/bin +tar cvfj $out/on-server/static-tools.tar.bz2 tools + + +for i in $out/on-server/*.tar.bz2; do + (cd $out/check-only && tar xvfj $i) +done diff --git a/pkgs/tools/archivers/gnutar-diet/default.nix b/pkgs/tools/archivers/gnutar-diet/default.nix deleted file mode 100644 index d6c3dd2f19c..00000000000 --- a/pkgs/tools/archivers/gnutar-diet/default.nix +++ /dev/null @@ -1,12 +0,0 @@ -{stdenv, fetchurl, dietgcc}: - -stdenv.mkDerivation { - name = "gnutar-1.15.1"; - src = fetchurl { - url = http://nix.cs.uu.nl/dist/tarballs/tar-1.15.1.tar.bz2; - md5 = "57da3c38f8e06589699548a34d5a5d07"; - }; - NIX_GCC = dietgcc; - NIX_GLIBC_FLAGS_SET=1; - NIX_CFLAGS_COMPILE="-D_BSD_SOURCE=1"; -} diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix index f05194e7b2c..91584e8ea0b 100644 --- a/pkgs/tools/networking/curl/default.nix +++ b/pkgs/tools/networking/curl/default.nix @@ -1,17 +1,26 @@ -{stdenv, fetchurl, zlib, sslSupport ? false, openssl ? null}: +{stdenv, fetchurl, zlibSupport ? false, zlib, sslSupport ? false, openssl ? null}: +assert zlibSupport -> zlib != null; assert sslSupport -> openssl != null; -stdenv.mkDerivation { +stdenv.mkDerivation ({ name = "curl-7.15.5"; src = fetchurl { url = http://nix.cs.uu.nl/dist/tarballs/curl-7.15.5.tar.bz2; md5 = "594142c7d53bbdd988e8cef6354eeeff"; }; - buildInputs = [zlib (if sslSupport then openssl else null)]; + buildInputs = + (if zlibSupport then [zlib] else []) + ++ (if sslSupport then [openssl] else []); patches = [./configure-cxxcpp.patch]; configureFlags = " ${if sslSupport then "--with-ssl=${openssl}" else "--without-ssl"} "; inherit sslSupport openssl; } + +// (if stdenv ? isDietLibC then { + CFLAGS = "-DHAVE_INET_NTOA_R_2_ARGS=1"; +} else {}) + +) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 95e4f7645db..b46d0f4e32e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -206,11 +206,6 @@ rec { inherit fetchurl stdenv; }); - bzip2Diet = import ../tools/compression/bzip2 { - inherit fetchurl; - stdenv = useDietLibC stdenv; - }; - cabextract = import ../tools/archivers/cabextract { inherit fetchurl stdenv; }; @@ -224,24 +219,12 @@ rec { inherit fetchurl stdenv; }); - coreutilsDiet = import ../tools/misc/coreutils { - inherit fetchurl; - stdenv = useDietLibC stdenv; - }; - cpio = import ../tools/archivers/cpio { inherit fetchurl stdenv; }; curl = if stdenv ? curl then stdenv.curl else (assert false; null); - curlDiet = import ../tools/networking/curl { - inherit fetchurl zlib; - stdenv = addAttrsToDerivation { - CFLAGS = "-DHAVE_INET_NTOA_R_2_ARGS=1"; - } (useDietLibC stdenv); - }; - dhcp = import ../tools/networking/dhcp { inherit fetchurl stdenv groff nettools coreutils iputils gnused bash; }; @@ -321,10 +304,6 @@ rec { inherit fetchurl stdenv; }); - gnutarDiet = import ../tools/archivers/gnutar-diet { - inherit fetchurl stdenv dietgcc; - }; - graphviz = import ../tools/graphics/graphviz { inherit fetchurl stdenv libpng libjpeg expat x11 yacc libtool; inherit (xlibs) libXaw; @@ -428,6 +407,7 @@ rec { realCurl = import ../tools/networking/curl { inherit fetchurl stdenv zlib; + zlibSupport = !stdenv ? isDietLibC; }; sablotron = import ../tools/text/xml/sablotron { @@ -513,11 +493,6 @@ rec { inherit fetchurl stdenv; }); - bashDiet = import ../shells/bash { - inherit fetchurl; - stdenv = useDietLibC stdenv; - }; - tcsh = import ../shells/tcsh { inherit fetchurl stdenv ncurses; }; @@ -1674,6 +1649,7 @@ rec { zlib = import ../development/libraries/zlib { inherit fetchurl stdenv; + static = !stdenv ? isDietLibC; }; zlibStatic = import ../development/libraries/zlib {