From 5941f66f0e76cadbda30b3240ba00b30ea365ac7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 19 Mar 2004 16:53:04 +0000 Subject: [PATCH] * The stdenv setup script now defines a generic builder that allows builders for typical Autoconf-style to be much shorten, e.g., . $stdenv/setup genericBuild The generic builder does lots of stuff automatically: - Unpacks source archives specified by $src or $srcs (it knows about gzip, bzip2, tar, zip, and unpacked source trees). - Determines the source tree. - Applies patches specified by $patches. - Fixes libtool not to search for libraries in /lib etc. - Runs `configure'. - Runs `make'. - Runs `make install'. - Strips debug information from static libraries. - Writes nested log information (in the format accepted by `log2xml'). There are also lots of hooks and variables to customise the generic builder. See `stdenv/generic/docs.txt'. * Adapted the base packages (i.e., the ones used by stdenv) to use the generic builder. * We now use `curl' instead of `wget' to download files in `fetchurl'. * Neither `curl' nor `wget' are part of stdenv. We shouldn't encourage people to download stuff in builders (impure!). * Updated some packages. * `buildinputs' is now `buildInputs' (but the old name also works). * `findInputs' in the setup script now prevents inputs from being processed multiple times (which could happen, e.g., if an input was a propagated input of several other inputs; this caused the size variables like $PATH to blow up exponentially in the worst case). * Patched GNU Make to write nested log information in the format accepted by `log2xml'. Also, prior to writing the build command, Make now writes a line `building X' to indicate what is being built. This is unfortunately often obscured by the gigantic tool invocations in many Makefiles. The actual build commands are marked `unimportant' so that they don't clutter pages generated by `log2html'. svn path=/nixpkgs/trunk/; revision=845 --- pkgs/build-support/fetchurl/builder.sh | 10 +- pkgs/build-support/fetchurl/default.nix | 11 +- pkgs/development/compilers/gcc/builder.sh | 105 +++--- .../compilers/strategoxt/builder.sh | 13 +- .../compilers/strategoxt/default.nix | 16 +- .../libraries/aterm/aterm-2.0.5.nix | 10 - pkgs/development/libraries/aterm/builder.sh | 10 +- pkgs/development/libraries/aterm/default.nix | 12 +- .../libraries/fontconfig/builder.sh | 1 - pkgs/development/libraries/glibc/builder.sh | 40 ++- pkgs/development/libraries/glibc/default.nix | 7 +- .../libraries/gtk+-1/gtk+/builder.sh | 2 +- .../libraries/gtk+/gtk+/builder.sh | 12 +- .../libraries/gtk+/pango/builder.sh | 2 +- pkgs/development/libraries/libpng/builder.sh | 2 +- pkgs/development/libraries/pcre/builder.sh | 12 +- pkgs/development/libraries/pcre/default.nix | 6 +- pkgs/development/libraries/zlib/builder.sh | 14 +- pkgs/development/libraries/zlib/default.nix | 12 +- .../tools/build-managers/gnumake/builder.sh | 12 +- .../tools/build-managers/gnumake/default.nix | 8 +- .../tools/build-managers/gnumake/log.diff | 125 ++++++++ .../tools/misc/binutils/builder.sh | 19 +- .../tools/misc/binutils/default.nix | 2 +- .../linux/kernel-headers/builder.sh | 28 +- pkgs/shells/bash/builder.sh | 14 +- pkgs/shells/bash/default.nix | 8 +- pkgs/stdenv/generic/docs.txt | 93 ++++++ pkgs/stdenv/generic/setup.sh | 302 +++++++++++++++++- pkgs/stdenv/nix-linux/boot.nix | 6 +- pkgs/stdenv/nix/path.nix | 1 - pkgs/system/all-packages-generic.nix | 8 +- pkgs/system/populate-cache.nix | 90 +++--- pkgs/system/stdenvs.nix | 12 +- pkgs/tools/archivers/gnutar/builder.sh | 12 +- pkgs/tools/archivers/gnutar/default.nix | 6 +- pkgs/tools/archivers/unzip/builder.sh | 20 +- pkgs/tools/archivers/unzip/default.nix | 6 +- pkgs/tools/compression/bzip2/builder.sh | 12 +- pkgs/tools/compression/bzip2/default.nix | 6 +- pkgs/tools/compression/gzip/builder.sh | 12 +- pkgs/tools/compression/gzip/default.nix | 6 +- pkgs/tools/graphics/graphviz/builder.sh | 14 +- pkgs/tools/misc/coreutils/builder.sh | 12 +- pkgs/tools/misc/coreutils/default.nix | 6 +- pkgs/tools/misc/findutils/builder.sh | 12 +- pkgs/tools/misc/findutils/default.nix | 6 +- pkgs/tools/networking/curl/builder.sh | 4 + pkgs/tools/networking/curl/default.nix | 13 + pkgs/tools/networking/wget/builder.sh | 12 +- pkgs/tools/networking/wget/default.nix | 12 +- pkgs/tools/text/diffutils/builder.sh | 10 +- pkgs/tools/text/diffutils/default.nix | 6 +- pkgs/tools/text/gawk/builder.sh | 12 +- pkgs/tools/text/gawk/default.nix | 6 +- pkgs/tools/text/gnugrep/builder.sh | 13 +- pkgs/tools/text/gnugrep/default.nix | 8 +- pkgs/tools/text/gnused/builder.sh | 10 +- pkgs/tools/text/gnused/default.nix | 6 +- 59 files changed, 891 insertions(+), 376 deletions(-) delete mode 100644 pkgs/development/libraries/aterm/aterm-2.0.5.nix create mode 100644 pkgs/development/tools/build-managers/gnumake/log.diff create mode 100644 pkgs/stdenv/generic/docs.txt create mode 100755 pkgs/tools/networking/curl/builder.sh create mode 100644 pkgs/tools/networking/curl/default.nix diff --git a/pkgs/build-support/fetchurl/builder.sh b/pkgs/build-support/fetchurl/builder.sh index e0f2517e3c2..8ab2e6df9ed 100755 --- a/pkgs/build-support/fetchurl/builder.sh +++ b/pkgs/build-support/fetchurl/builder.sh @@ -1,13 +1,15 @@ -#! /bin/sh +#! /bin/sh -e . $stdenv/setup -echo "downloading $url into $out..." +header "downloading $out from $url" -wget --passive-ftp "$url" -O "$out" || exit 1 +curl "$url" > "$out" -actual=$(md5sum -b $out | cut -c1-32) +actual=$(md5sum -b "$out" | cut -c1-32) if test "$actual" != "$md5"; then echo "hash is $actual, expected $md5" exit 1 fi + +stopNext diff --git a/pkgs/build-support/fetchurl/default.nix b/pkgs/build-support/fetchurl/default.nix index fe2c79bbcdd..f1b9566fb27 100644 --- a/pkgs/build-support/fetchurl/default.nix +++ b/pkgs/build-support/fetchurl/default.nix @@ -1,9 +1,12 @@ -{stdenv}: {url, md5}: derivation { +{stdenv, curl}: {url, md5}: + +# Note that `curl' may be `null', in case of the native stdenv. + +derivation { name = baseNameOf (toString url); system = stdenv.system; builder = ./builder.sh; - stdenv = stdenv; - url = url; - md5 = md5; + buildInputs = [curl]; id = md5; + inherit stdenv url md5; } diff --git a/pkgs/development/compilers/gcc/builder.sh b/pkgs/development/compilers/gcc/builder.sh index c1438e6d0e8..1b35be16e43 100755 --- a/pkgs/development/compilers/gcc/builder.sh +++ b/pkgs/development/compilers/gcc/builder.sh @@ -1,65 +1,74 @@ #! /bin/sh -e -buildinputs="$binutils" . $stdenv/setup -tar xvfj $src -if test "$noSysDirs" = "1"; then - # Disable the standard include directories. - cd gcc-* - cat >> ./gcc/cppdefault.h <> ./gcc/cppdefault.h < $mf.tmp - mv $mf.tmp $mf +preConfigure=preConfigure - mf=gcc/Makefile - sed \ - -e "s^X_CFLAGS =\(.*\)^X_CFLAGS = \1 $extraflags^" \ - < $mf > $mf.tmp - mv $mf.tmp $mf - # Patch gcc/Makefile to prevent fixinc.sh from "fixing" system header files - # from /usr/include. - mf=gcc/Makefile - sed \ - -e "s^NATIVE_SYSTEM_HEADER_DIR =\(.*\)^NATIVE_SYSTEM_HEADER_DIR = /fixinc-disabled^" \ - < $mf > $mf.tmp - mv $mf.tmp $mf -fi +postConfigure() { + if test "$noSysDirs" = "1"; then + # Patch some of the makefiles to force linking against our own + # glibc. + . $NIX_GCC/nix-support/add-flags # add glibc/gcc flags + extraflags="-Wl,-s $NIX_CFLAGS_COMPILE $NIX_CFLAGS_LINK" + for i in $NIX_LDFLAGS; do + extraflags="$extraflags -Wl,$i" + done -# Build and install. -make bootstrap -make install + mf=Makefile + sed \ + -e "s^FLAGS_FOR_TARGET =\(.*\)^FLAGS_FOR_TARGET = \1 $extraflags^" \ + < $mf > $mf.tmp + mv $mf.tmp $mf -find $out -name "*.a" -exec strip -S {} \; + mf=gcc/Makefile + sed \ + -e "s^X_CFLAGS =\(.*\)^X_CFLAGS = \1 $extraflags^" \ + < $mf > $mf.tmp + mv $mf.tmp $mf + + # Patch gcc/Makefile to prevent fixinc.sh from "fixing" system + # header files from /usr/include. + mf=gcc/Makefile + sed \ + -e "s^NATIVE_SYSTEM_HEADER_DIR =\(.*\)^NATIVE_SYSTEM_HEADER_DIR = /fixinc-disabled^" \ + < $mf > $mf.tmp + mv $mf.tmp $mf + fi +} + +postConfigure=postConfigure + + +makeFlags="bootstrap" + +genericBuild diff --git a/pkgs/development/compilers/strategoxt/builder.sh b/pkgs/development/compilers/strategoxt/builder.sh index 13f29624239..68289b2f8be 100755 --- a/pkgs/development/compilers/strategoxt/builder.sh +++ b/pkgs/development/compilers/strategoxt/builder.sh @@ -1,10 +1,7 @@ -#! /bin/sh +#! /bin/sh -e -buildinputs="$aterm $sdf" -. $stdenv/setup || exit 1 +buildInputs="$aterm $sdf" +. $stdenv/setup -tar zxf $src || exit 1 -cd $dir* || exit 1 -./configure --prefix=$out --with-aterm=$aterm --with-sdf=$sdf || exit 1 -make || exit 1 -make install || exit 1 +configureFlags="--with-aterm=$aterm --with-sdf=$sdf" +genericBuild diff --git a/pkgs/development/compilers/strategoxt/default.nix b/pkgs/development/compilers/strategoxt/default.nix index 666fbce583c..75f8eacc3da 100644 --- a/pkgs/development/compilers/strategoxt/default.nix +++ b/pkgs/development/compilers/strategoxt/default.nix @@ -1,14 +1,12 @@ -{stdenv, fetchurl, aterm, sdf}: derivation { - name = "strategoxt-0.9.4-4626"; +{stdenv, fetchurl, aterm, sdf}: + +derivation { + name = "strategoxt-0.9.4"; system = stdenv.system; builder = ./builder.sh; src = fetchurl { - url = http://losser.labs.cs.uu.nl/~mbravenb/dailydist/strategoxt/src/strategoxt-0.9.4-4626.tar.gz; - md5 = "f33ae9fdb9d8628ae01fa0f26bfa0429"; + url = ftp://ftp.stratego-language.org/pub/stratego/StrategoXT/strategoxt-0.9.4.tar.gz; + md5 = "b61aee784cebac6cce0d96383bdb1b37"; }; - stdenv = stdenv; - aterm = aterm; - sdf = sdf; - tarfile = "true"; - dir = "strategoxt"; + inherit stdenv aterm sdf; } diff --git a/pkgs/development/libraries/aterm/aterm-2.0.5.nix b/pkgs/development/libraries/aterm/aterm-2.0.5.nix deleted file mode 100644 index 9ed878d3775..00000000000 --- a/pkgs/development/libraries/aterm/aterm-2.0.5.nix +++ /dev/null @@ -1,10 +0,0 @@ -{stdenv, fetchurl}: derivation { - name = "aterm-2.0.5"; - system = stdenv.system; - builder = ./builder.sh; - src = fetchurl { - url = http://www.cwi.nl/projects/MetaEnv/aterm/aterm-2.0.5.tar.gz; - md5 = "68aefb0c10b2ab876b8d3c0b2d0cdb1b"; - }; - stdenv = stdenv; -} diff --git a/pkgs/development/libraries/aterm/builder.sh b/pkgs/development/libraries/aterm/builder.sh index 5915dc0f87d..5946961adc5 100755 --- a/pkgs/development/libraries/aterm/builder.sh +++ b/pkgs/development/libraries/aterm/builder.sh @@ -1,10 +1,6 @@ #! /bin/sh -. $stdenv/setup || exit 1 +. $stdenv/setup -tar xvfz $src || exit 1 -cd aterm-* || exit 1 -./configure --prefix=$out --with-gcc || exit 1 -make || exit 1 -make install || exit 1 -strip -S $out/lib/*.a || exit 1 +configureFlags="--with-gcc" +genericBuild diff --git a/pkgs/development/libraries/aterm/default.nix b/pkgs/development/libraries/aterm/default.nix index 56b4c265ec0..2d2a946f60a 100644 --- a/pkgs/development/libraries/aterm/default.nix +++ b/pkgs/development/libraries/aterm/default.nix @@ -1,10 +1,12 @@ -{stdenv, fetchurl}: derivation { - name = "aterm-2.0"; +{stdenv, fetchurl}: + +derivation { + name = "aterm-2.0.5"; system = stdenv.system; builder = ./builder.sh; src = fetchurl { - url = http://www.cwi.nl/projects/MetaEnv/aterm/aterm-2.0.tar.gz; - md5 = "853474e4bcf4a85f7d38a0676b36bded"; + url = http://www.cwi.nl/projects/MetaEnv/aterm/aterm-2.0.5.tar.gz; + md5 = "68aefb0c10b2ab876b8d3c0b2d0cdb1b"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/development/libraries/fontconfig/builder.sh b/pkgs/development/libraries/fontconfig/builder.sh index 7a521ea16f0..dc4243fadfe 100755 --- a/pkgs/development/libraries/fontconfig/builder.sh +++ b/pkgs/development/libraries/fontconfig/builder.sh @@ -10,7 +10,6 @@ export TZ=UTC tar xvfz $src cd fontconfig-* ./configure --prefix=$out --with-confdir=$out/etc/fonts \ - --x-includes=$x11/include --x-libraries=$x11/lib \ --with-expat-includes=$expat/include --with-expat-lib=$expat/lib make make install diff --git a/pkgs/development/libraries/glibc/builder.sh b/pkgs/development/libraries/glibc/builder.sh index e2423ad37c2..29bcc7dc8e7 100755 --- a/pkgs/development/libraries/glibc/builder.sh +++ b/pkgs/development/libraries/glibc/builder.sh @@ -2,26 +2,36 @@ # glibc cannot have itself in its rpath. export NIX_NO_SELF_RPATH=1 -buildinputs="$patch" + . $stdenv/setup -tar xvfj $glibcSrc -(cd glibc-* && tar xvfj $linuxthreadsSrc) || false -(cd glibc-* && patch -p1 < $vaargsPatch) || false +postUnpack() { + cd $sourceRoot + unpackFile $linuxthreadsSrc + cd .. +} -mkdir build -cd build -../glibc-*/configure --prefix=$out --enable-add-ons --disable-profile +postUnpack=postUnpack -make -make install -make localedata/install-locales -strip -S $out/lib/*.a $out/lib/*.so $out/lib/gconv/*.so || true -strip -s $out/bin/* $out/sbin/* $out/libexec/* || true -rm $out/etc/ld.so.cache +preConfigure() { + mkdir ../build + cd ../build + configureScript=../$sourceRoot/configure + configureFlags="--enable-add-ons --disable-profile" +} -(cd $out/include && ln -s $kernelHeaders/include/* .) || false +preConfigure=preConfigure -exit 0 + +postInstall() { + make localedata/install-locales + rm $out/etc/ld.so.cache + (cd $out/include && ln -s $kernelHeaders/include/* .) || exit 1 +} + +postInstall=postInstall + + +genericBuild diff --git a/pkgs/development/libraries/glibc/default.nix b/pkgs/development/libraries/glibc/default.nix index 6106e92812f..c65281a7ce3 100644 --- a/pkgs/development/libraries/glibc/default.nix +++ b/pkgs/development/libraries/glibc/default.nix @@ -7,7 +7,7 @@ derivation { system = stdenv.system; builder = ./builder.sh; - glibcSrc = fetchurl { + src = fetchurl { url = ftp://ftp.nl.net/pub/gnu/glibc/glibc-2.3.2.tar.bz2; md5 = "ede969aad568f48083e413384f20753c"; }; @@ -18,7 +18,8 @@ derivation { # This is a patch to make glibc compile under GCC 3.3. Presumably # later releases of glibc won't need this. - vaargsPatch = ./glibc-2.3.2-sscanf-1.patch; + patches = [./glibc-2.3.2-sscanf-1.patch]; - inherit stdenv kernelHeaders patch; + buildInputs = [patch]; + inherit stdenv kernelHeaders; } diff --git a/pkgs/development/libraries/gtk+-1/gtk+/builder.sh b/pkgs/development/libraries/gtk+-1/gtk+/builder.sh index 38cd16b31c7..14ba61f7054 100755 --- a/pkgs/development/libraries/gtk+-1/gtk+/builder.sh +++ b/pkgs/development/libraries/gtk+-1/gtk+/builder.sh @@ -5,7 +5,7 @@ buildinputs="$x11 $glib" tar xvfz $src cd gtk+-* -./configure --prefix=$out --x-includes=$x11/include --x-libraries=$x11/lib +./configure --prefix=$out make make install diff --git a/pkgs/development/libraries/gtk+/gtk+/builder.sh b/pkgs/development/libraries/gtk+/gtk+/builder.sh index f899bec6cb6..0b444c1f009 100755 --- a/pkgs/development/libraries/gtk+/gtk+/builder.sh +++ b/pkgs/development/libraries/gtk+/gtk+/builder.sh @@ -3,9 +3,19 @@ buildinputs="$pkgconfig $x11 $glib $atk $pango $perl $libtiff $libjpeg $libpng" . $stdenv/setup +IFS=: +for i in $PATH; do echo $i; done + +#exit 1 +# A utility function for fixing up libtool scripts that scan in +# default directories like /usr. This is a bit of a hack. A better +# solution would be to fix libtool, but since it is included in so +# many packages that is not feasible right now. + tar xvfj $src cd gtk+-* -./configure --prefix=$out --x-includes=$x11/include --x-libraries=$x11/lib +fixLibtool ltmain.sh +./configure --prefix=$out make make install diff --git a/pkgs/development/libraries/gtk+/pango/builder.sh b/pkgs/development/libraries/gtk+/pango/builder.sh index e3d0a68fd5f..6242083508d 100755 --- a/pkgs/development/libraries/gtk+/pango/builder.sh +++ b/pkgs/development/libraries/gtk+/pango/builder.sh @@ -5,7 +5,7 @@ buildinputs="$pkgconfig $x11 $glib $xft" tar xvfj $src cd pango-* -./configure --prefix=$out --x-includes=$x11/include --x-libraries=$x11/lib +./configure --prefix=$out make make install diff --git a/pkgs/development/libraries/libpng/builder.sh b/pkgs/development/libraries/libpng/builder.sh index 51e7a38a831..24b847b5986 100755 --- a/pkgs/development/libraries/libpng/builder.sh +++ b/pkgs/development/libraries/libpng/builder.sh @@ -1,6 +1,6 @@ #! /bin/sh -e -buildinputs="$zlib" +buildInputs="$zlib" . $stdenv/setup tar xvfj $src diff --git a/pkgs/development/libraries/pcre/builder.sh b/pkgs/development/libraries/pcre/builder.sh index dea883667fc..a73f5a6d5b8 100755 --- a/pkgs/development/libraries/pcre/builder.sh +++ b/pkgs/development/libraries/pcre/builder.sh @@ -1,9 +1,3 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfj $src || exit 1 -cd pcre-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +#! /bin/sh -e +. $stdenv/setup +genericBuild diff --git a/pkgs/development/libraries/pcre/default.nix b/pkgs/development/libraries/pcre/default.nix index 9e18d88fccf..5b98a264e3c 100644 --- a/pkgs/development/libraries/pcre/default.nix +++ b/pkgs/development/libraries/pcre/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "pcre-4.3"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-4.3.tar.bz2; md5 = "7bc7d5b590a41e6f9ede30f272002a02"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/development/libraries/zlib/builder.sh b/pkgs/development/libraries/zlib/builder.sh index 4ca1a830544..b8e06a6907f 100755 --- a/pkgs/development/libraries/zlib/builder.sh +++ b/pkgs/development/libraries/zlib/builder.sh @@ -1,10 +1,4 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfz $src || exit 1 -cd zlib-* || exit 1 -./configure --prefix=$out --shared || exit 1 -make || exit 1 -mkdir $out || exit 1 -make install || exit 1 +#! /bin/sh -e +. $stdenv/setup +configureFlags="--shared" +genericBuild diff --git a/pkgs/development/libraries/zlib/default.nix b/pkgs/development/libraries/zlib/default.nix index 7dfe3e6a9ab..c5889e57fb4 100644 --- a/pkgs/development/libraries/zlib/default.nix +++ b/pkgs/development/libraries/zlib/default.nix @@ -1,10 +1,12 @@ -{stdenv, fetchurl}: derivation { - name = "zlib-1.1.4"; +{stdenv, fetchurl}: + +derivation { + name = "zlib-1.2.1"; system = stdenv.system; builder = ./builder.sh; src = fetchurl { - url = http://www.gzip.org/zlib/zlib-1.1.4.tar.gz; - md5 = "abc405d0bdd3ee22782d7aa20e440f08"; + url = http://www.gzip.org/zlib/zlib-1.2.1.tar.gz; + md5 = "ef1cb003448b4a53517b8f25adb12452"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/development/tools/build-managers/gnumake/builder.sh b/pkgs/development/tools/build-managers/gnumake/builder.sh index 362de7cd9a8..a73f5a6d5b8 100755 --- a/pkgs/development/tools/build-managers/gnumake/builder.sh +++ b/pkgs/development/tools/build-managers/gnumake/builder.sh @@ -1,9 +1,3 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfj $src || exit 1 -cd make-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +#! /bin/sh -e +. $stdenv/setup +genericBuild diff --git a/pkgs/development/tools/build-managers/gnumake/default.nix b/pkgs/development/tools/build-managers/gnumake/default.nix index 6ca56d57ba6..de0bd9c901d 100644 --- a/pkgs/development/tools/build-managers/gnumake/default.nix +++ b/pkgs/development/tools/build-managers/gnumake/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl, patch}: + +derivation { name = "gnumake-3.80"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,7 @@ url = ftp://ftp.nluug.nl/pub/gnu/make/make-3.80.tar.bz2; md5 = "0bbd1df101bc0294d440471e50feca71"; }; - stdenv = stdenv; + patches = [./log.diff]; + buildInputs = [patch]; + inherit stdenv; } diff --git a/pkgs/development/tools/build-managers/gnumake/log.diff b/pkgs/development/tools/build-managers/gnumake/log.diff new file mode 100644 index 00000000000..5d76ecdf4da --- /dev/null +++ b/pkgs/development/tools/build-managers/gnumake/log.diff @@ -0,0 +1,125 @@ +diff -rc make-3.80-orig/job.c make-3.80/job.c +*** make-3.80-orig/job.c 2002-08-10 03:27:17.000000000 +0200 +--- make-3.80/job.c 2004-03-18 22:13:11.000000000 +0100 +*************** +*** 987,993 **** + appear. */ + + message (0, (just_print_flag || (!(flags & COMMANDS_SILENT) && !silent_flag)) +! ? "%s" : (char *) 0, p); + + /* Tell update_goal_chain that a command has been started on behalf of + this target. It is important that this happens here and not in +--- 987,993 ---- + appear. */ + + message (0, (just_print_flag || (!(flags & COMMANDS_SILENT) && !silent_flag)) +! ? "\e[3s\e[a%s\e[b" : (char *) 0, p); + + /* Tell update_goal_chain that a command has been started on behalf of + this target. It is important that this happens here and not in +Only in make-3.80: job.c~ +diff -rc make-3.80-orig/main.c make-3.80/main.c +*** make-3.80-orig/main.c 2002-08-10 03:27:17.000000000 +0200 +--- make-3.80/main.c 2004-03-18 22:23:50.000000000 +0100 +*************** +*** 254,259 **** +--- 254,262 ---- + they appear out of date or not. */ + + int always_make_flag = 0; ++ ++ int logNesting = 0; ++ + + /* The usage output. We write it this way to make life easier for the + translators, especially those trying to translate to right-to-left +*************** +*** 827,832 **** +--- 830,842 ---- + } + + ++ static void closeNesting() ++ { ++ while (logNesting--) ++ printf("\e[q"); ++ } ++ ++ + #ifndef _AMIGA + int + main (argc, argv, envp) +*************** +*** 854,859 **** +--- 864,871 ---- + no_default_sh_exe = 1; + #endif + ++ atexit(closeNesting); ++ + default_goal_file = 0; + reading_file = 0; + +*************** +*** 2782,2787 **** +--- 2794,2805 ---- + + /* Use entire sentences to give the translators a fighting chance. */ + ++ if (entering) ++ { ++ printf("\e[p"); ++ logNesting++; ++ } ++ + if (makelevel == 0) + if (starting_directory == 0) + if (entering) +*************** +*** 2810,2813 **** +--- 2828,2837 ---- + else + printf (_("%s[%u]: Leaving directory `%s'\n"), + program, makelevel, starting_directory); ++ ++ if (!entering) ++ { ++ printf("\e[q"); ++ logNesting--; ++ } + } +Only in make-3.80: main.c~ +diff -rc make-3.80-orig/make.h make-3.80/make.h +*** make-3.80-orig/make.h 2002-09-11 18:55:44.000000000 +0200 +--- make-3.80/make.h 2004-03-18 22:22:00.000000000 +0100 +*************** +*** 559,562 **** +--- 559,566 ---- + extern int atomic_stat PARAMS ((const char *file, struct stat *buf)); + extern struct dirent *atomic_readdir PARAMS ((DIR *dir)); + ++ + #endif ++ ++ ++ extern int logNesting; +Only in make-3.80: make.h~ +diff -rc make-3.80-orig/remake.c make-3.80/remake.c +*** make-3.80-orig/remake.c 2002-08-08 02:11:19.000000000 +0200 +--- make-3.80/remake.c 2004-03-18 22:27:04.000000000 +0100 +*************** +*** 1049,1055 **** +--- 1049,1059 ---- + /* The normal case: start some commands. */ + if (!touch_flag || file->cmds->any_recurse) + { ++ message(0, "\e[pbuilding %s", file->name); ++ logNesting++; + execute_file_commands (file); ++ printf("\e[q"); ++ logNesting--; + return; + } + +Only in make-3.80: remake.c~ diff --git a/pkgs/development/tools/misc/binutils/builder.sh b/pkgs/development/tools/misc/binutils/builder.sh index 6de59a675d7..409cd4bba8c 100755 --- a/pkgs/development/tools/misc/binutils/builder.sh +++ b/pkgs/development/tools/misc/binutils/builder.sh @@ -2,16 +2,13 @@ . $stdenv/setup -tar xvfj $src -cd binutils-* +patchConfigure() { + # Clear the default library search path. + if test "$noSysDirs" = "1"; then + echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt + fi +} -# Clear the default library search path. -if test "$noSysDirs" = "1"; then - echo 'NATIVE_LIB_DIRS=' >> ld/configure.tgt -fi +preConfigure=patchConfigure -./configure --prefix=$out -make -make install - -strip -S $out/lib/*.a +genericBuild diff --git a/pkgs/development/tools/misc/binutils/default.nix b/pkgs/development/tools/misc/binutils/default.nix index 63039877d6f..5208abef637 100644 --- a/pkgs/development/tools/misc/binutils/default.nix +++ b/pkgs/development/tools/misc/binutils/default.nix @@ -5,7 +5,7 @@ derivation { system = stdenv.system; builder = ./builder.sh; src = fetchurl { - url = ftp://ftp.nluug.nl/pub/gnu/binutils/binutils-2.14.tar.bz2; + url = ftp://ftp.nl.net/pub/gnu/binutils/binutils-2.14.tar.bz2; md5 = "2da8def15d28af3ec6af0982709ae90a"; }; inherit stdenv noSysDirs; diff --git a/pkgs/os-specific/linux/kernel-headers/builder.sh b/pkgs/os-specific/linux/kernel-headers/builder.sh index 87d02234998..957a2552c87 100755 --- a/pkgs/os-specific/linux/kernel-headers/builder.sh +++ b/pkgs/os-specific/linux/kernel-headers/builder.sh @@ -2,16 +2,24 @@ . $stdenv/setup -tar xvfj $src -cd linux-* -make include/linux/version.h +buildPhase() { + make include/linux/version.h +} -mkdir $out -mkdir $out/include -cp -prvd include/linux include/asm-i386 $out/include -cd $out/include -ln -s asm-i386 asm +buildPhase=buildPhase -# config.h includes autoconf.h, which doesn't exist. -echo -n > $out/include/linux/autoconf.h + +installPhase() { + mkdir $out + mkdir $out/include + cp -prvd include/linux include/asm-i386 $out/include + cd $out/include + ln -s asm-i386 asm + echo -n > $out/include/linux/autoconf.h +} + +installPhase=installPhase + + +genericBuild diff --git a/pkgs/shells/bash/builder.sh b/pkgs/shells/bash/builder.sh index 7b0d093c576..73a4e9020eb 100755 --- a/pkgs/shells/bash/builder.sh +++ b/pkgs/shells/bash/builder.sh @@ -1,10 +1,4 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfz $src || exit 1 -cd bash-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 -(cd $out/bin; ln -s bash sh) || exit 1 +#! /bin/sh -e +. $stdenv/setup +genericBuild +(cd $out/bin && ln -s bash sh) || exit 1 diff --git a/pkgs/shells/bash/default.nix b/pkgs/shells/bash/default.nix index 92199565904..3e824cfecc5 100644 --- a/pkgs/shells/bash/default.nix +++ b/pkgs/shells/bash/default.nix @@ -1,10 +1,12 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "bash-2.05b"; system = stdenv.system; builder = ./builder.sh; src = fetchurl { - url = ftp://ftp.nluug.nl/pub/gnu/bash/bash-2.05b.tar.gz; + url = ftp://ftp.nl.net/pub/gnu/bash/bash-2.05b.tar.gz; md5 = "5238251b4926d778dfe162f6ce729733"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/stdenv/generic/docs.txt b/pkgs/stdenv/generic/docs.txt new file mode 100644 index 00000000000..060f3cd154b --- /dev/null +++ b/pkgs/stdenv/generic/docs.txt @@ -0,0 +1,93 @@ +* genericBuild performs a generic build of (typically) autotool-style + packages + + +* unpack phase + +** may be overriden by setting $unpackPhase to point at a function that + unpacks the source (which should set $sourceRoot) + +** the generic unpacker unpacks all sources specified by $srcs, or + $src if $srcs is empty + +** supports tar, bzipped tar, gzipped tar, compressed tar, zip + +** zip must be in scope (in $buildinputs) + +** additional file types may be supported by setting $findUnpacker, + which is called with a single argument specifying the file to be + unpacked + +** $findUnpacker should set $unpackCmd, specifying the full command to + unpack the file (must include the file name) + +** alternatively, $unpackCmd can be set before calling the generic + builder (e.g., 'unpackCmd="unrar x $src"'); this only works if + there is a single source file + +** the generic unpacker then sets $sourceRoot to the name of the + directory created by unpacking the source archives + +** the source archives should produce only one directory + +** alternatively, $setSourceRoot may be set to a function that sets + $sourceRoot + + +* the generic builder then chdirs to $sourceRoot + + +* patch phase (skipped if neither $patchPhase nor $patches are set) + +** may be overriden by setting $patchPhase to point at a function that + unpacks the source (which should set $sourceRoot) + +** if the $patches variable is set, it runs `patch -p1 < ...' in + $sourceRoot for each element in $patches (the `patch' command + should be in $PATH; note that it isn't in the standard environment) + + +* configuration phase + +** may be overriden by setting $configurePhase to point at a function + +** calls $preConfigurer first, if set (useful for running + autoconf/automake) + +** the configure script is specified by $configureScript, which + defaults to ./configure + +** if no executable file exists at $configureScript, does nothing + +** if a file ./ltmain.sh exists and $dontFixLibtool is not set, calls + function fixLibtool to remove its default search path (/usr etc.) + +** adds "--prefix=$out" to $configureFlags unless $dontAddPrefix is + set + +** calls $configureScript with $configureFlags + +** calls $postConfigurer, if set (useful for any last-minute patches + prior to building) + + +* build phase + +** may be overriden by setting $buildPhase to point at a function + +** runs make with flags $makeFlags + + +* install phase + +** may be overriden by setting $installPhase to point at a function + +** runs make with flags $installFlags + +** unless $dontStrip is set or $NIX_STRIP_DEBUG is not 1, finds all *.a + files in $out and runs "strip -S" on them (executables and dynamic + libraries can be stripped automatically by setting NIX_STRIP_DEBUG + to 1 (default)) + +** if $propagatedBuildInputs is set, its contents are written to + $out/nix-support/propagated-build-inputs diff --git a/pkgs/stdenv/generic/setup.sh b/pkgs/stdenv/generic/setup.sh index 2dedf46ac2b..f64260f490a 100644 --- a/pkgs/stdenv/generic/setup.sh +++ b/pkgs/stdenv/generic/setup.sh @@ -40,7 +40,14 @@ fi findInputs() { local pkg=$1 - pkgs=(${pkgs[@]} $pkg) + + case $pkgs in + *\ $pkg\ *) + return 0 + ;; + esac + + pkgs="$pkgs $pkg " if test -f $pkg/nix-support/setup-hook; then . $pkg/nix-support/setup-hook @@ -53,8 +60,11 @@ findInputs() fi } -pkgs=() -for i in $buildinputs; do +pkgs="" +if test -n "$buildinputs"; then + buildInputs="$buildinputs" # compatibility +fi +for i in $buildInputs; do findInputs $i done @@ -66,7 +76,7 @@ addToEnv() local pkg=$1 if test -d $1/bin; then - export _PATH=$_PATH:$1/bin + export _PATH=$_PATH${_PATH:+:}$1/bin fi for i in "${envHooks[@]}"; do @@ -74,7 +84,7 @@ addToEnv() done } -for i in "${pkgs[@]}"; do +for i in $pkgs; do addToEnv $i done @@ -121,3 +131,285 @@ PATH=$_PATH${_PATH:+:}$PATH if test "$NIX_DEBUG" = "1"; then echo "Final path: $PATH" fi + + +###################################################################### +# What follows is the generic builder. + + +nestingLevel=0 + +startNest() { + nestingLevel=$(($nestingLevel + 1)) + echo -en "\e[$1p" +} + +stopNest() { + nestingLevel=$(($nestingLevel - 1)) + echo -en "\e[q" +} + +header() { + startNest "$2" + echo "$1" +} + +# Make sure that even when we exit abnormally, the original nesting +# level is properly restored. +closeNest() { + while test $nestingLevel -gt 0; do + stopNest + done +} + +trap "closeNest" EXIT + + +# Utility function: return the base name of the given path, with the +# prefix `HASH-' removed, if present. +stripHash() { + strippedName=$(basename $1); + if echo "$strippedName" | grep -q '^[a-f0-9]\{32\}-'; then + strippedName=$(echo "$strippedName" | cut -c34-) + fi +} + + +unpackFile() { + local file=$1 + local cmd + + case $file in + *.tar) cmd="tar xvf $file";; + *.tar.gz | *.tgz | *.tar.Z) cmd="tar xvfz $file";; + *.tar.bz2 | *.tbz2) cmd="tar xvfj $file";; + *.zip) cmd="unzip $file";; + *) + if test -d "$file"; then + stripHash $file + cmd="cp -prvd $file $strippedName" + else + if test -n "$findUnpacker"; then + $findUnpacker $1; + fi + if test -z "$unpackCmd"; then + echo "source archive $file has unknown type" + exit 1 + fi + cmd=$unpackCmd + fi + ;; + esac + + header "unpacking source archive $file (using $cmd)" 3 + $cmd + stopNest +} + + +unpackW() { + if test -n "$unpackPhase"; then + $unpackPhase + return + fi + + if test -z "$srcs"; then + if test -z "$src"; then + echo 'variable $src or $srcs should point to the source' + exit 1 + fi + srcs="$src" + fi + + # To determine the source directory created by unpacking the + # source archives, we record the contents of the current + # directory, then look below which directory got added. Yeah, + # it's rather hacky. + local dirsBefore="" + for i in *; do + if test -d "$i"; then + dirsBefore="$dirsBefore $i " + fi + done + + # Unpack all source archives. + for i in $srcs; do + unpackFile $i + done + + # Find the source directory. + if test -n "$setSourceRoot"; then + $setSourceRoot + else + sourceRoot= + for i in *; do + if test -d "$i"; then + case $dirsBefore in + *\ $i\ *) + ;; + *) + if test -n "$sourceRoot"; then + echo "unpacker produced multiple directories" + exit 1 + fi + sourceRoot=$i + ;; + esac + fi + done + fi + + if test -z "$sourceRoot"; then + echo "unpacker appears to have produced no directories" + exit 1 + fi + + echo "source root is $sourceRoot" + + if test -n "$postUnpack"; then + $postUnpack + fi +} + + +unpackPhase() { + header "unpacking sources" + unpackW + stopNest +} + + +patchW() { + if test -n "$patchPhase"; then + $patchPhase + return + fi + + for i in $patches; do + header "applying patch $i" 3 + patch -p1 < $i + stopNest + done +} + + +patchPhase() { + if test -z "$patchPhase" -a -z "$patches"; then return; fi + header "patching sources" + patchW + stopNest +} + + +fixLibtool () { + sed 's^eval sys_lib_.*search_path=.*^^' < $1 > $1.tmp + mv $1.tmp $1 +} + + +configureW() { + if test -n "$configurePhase"; then + $configurePhase + stopNest + return + fi + + if test -n "$preConfigure"; then + $preConfigure + fi + + if test -z "$configureScript"; then + configureScript=./configure + fi + + if ! test -x $configureScript; then + echo "no configure script, doing nothing" + return + fi + + if test -z "$dontFixLibtool" -a -f ./ltmain.sh; then + fixLibtool ./ltmain.sh + fi + + if test -z "$dontAddPrefix"; then + configureFlags="--prefix=$out $configureFlags" + fi + + echo "configure flags: $configureFlags" + $configureScript $configureFlags + + if test -n "$postConfigure"; then + $postConfigure + fi +} + + +configurePhase() { + header "configuring" + configureW + stopNest +} + + +buildW() { + if test -n "$buildPhase"; then + $buildPhase + return + fi + + echo "make flags: $makeFlags" + make $makeFlags +} + + +buildPhase() { + header "building" + buildW + stopNest +} + + +installW() { + if test -n "$installPhase"; then + $installPhase + return + fi + + if test -n "$preInstall"; then + $preInstall + fi + + make install $installFlags + + if test -z "$dontStrip" -a "$NIX_STRIP_DEBUG" = 1; then + find $out -name "*.a" -exec echo stripping {} \; -exec strip -S {} \; + fi + + if test -n "$propagatedBuildInputs"; then + mkdir -f $out/nix-support + echo "$propagatedBuildInputs" > $out/nix-support/propagated-build-inputs + fi + + if test -n "$postInstall"; then + $postInstall + fi +} + + +installPhase() { + header "installing" + installW + stopNest +} + + +genericBuild () { + header "building $out" + unpackPhase + cd $sourceRoot + patchPhase + configurePhase + buildPhase + installPhase + stopNest +} diff --git a/pkgs/stdenv/nix-linux/boot.nix b/pkgs/stdenv/nix-linux/boot.nix index 2e1f272fc60..de2d5128e28 100644 --- a/pkgs/stdenv/nix-linux/boot.nix +++ b/pkgs/stdenv/nix-linux/boot.nix @@ -1,13 +1,13 @@ -{stdenv, glibc}: +{stdenv, glibc, genericStdenv, gccWrapper}: -(import ../generic) { +genericStdenv { name = "stdenv-nix-linux-boot"; preHook = ./prehook-boot.sh; initialPath = "/usr/local /usr /"; inherit stdenv; - gcc = (import ../../build-support/gcc-wrapper) { + gcc = gccWrapper { name = "gcc-native"; nativeTools = true; nativeGlibc = false; diff --git a/pkgs/stdenv/nix/path.nix b/pkgs/stdenv/nix/path.nix index b3348cb0f35..c05c0ec7ec0 100644 --- a/pkgs/stdenv/nix/path.nix +++ b/pkgs/stdenv/nix/path.nix @@ -8,7 +8,6 @@ pkgs.gnutar pkgs.gzip pkgs.bzip2 - pkgs.wget pkgs.binutils pkgs.gnumake pkgs.gcc diff --git a/pkgs/system/all-packages-generic.nix b/pkgs/system/all-packages-generic.nix index 7a263f124ee..db0f0325b31 100644 --- a/pkgs/system/all-packages-generic.nix +++ b/pkgs/system/all-packages-generic.nix @@ -2,7 +2,7 @@ # identifier and a standard build environment, returns the set of all # packages provided by the Nix Package Collection. -{stdenv, noSysDirs ? true}: +{stdenv, bootCurl, noSysDirs ? true}: rec { @@ -13,6 +13,7 @@ rec { fetchurl = (import ../build-support/fetchurl) { inherit stdenv; + curl = bootCurl; }; fetchsvn = (import ../build-support/fetchsvn) { @@ -86,6 +87,10 @@ rec { inherit fetchurl stdenv; }; + curl = (import ../tools/networking/curl) { + inherit fetchurl stdenv zlib; + }; + par2cmdline = (import ../tools/networking/par2cmdline) { inherit fetchurl stdenv; }; @@ -176,6 +181,7 @@ rec { gnumake = (import ../development/tools/build-managers/gnumake) { inherit fetchurl stdenv; + patch = gnupatch; }; bison = (import ../development/tools/parsing/bison) { diff --git a/pkgs/system/populate-cache.nix b/pkgs/system/populate-cache.nix index d8eeee34dda..a716f6be4ee 100644 --- a/pkgs/system/populate-cache.nix +++ b/pkgs/system/populate-cache.nix @@ -2,54 +2,54 @@ let { pkgs = import ./i686-linux.nix; body = [ -# pkgs.coreutils -# pkgs.findutils -# pkgs.diffutils -# pkgs.gnupatch -# pkgs.gnused -# pkgs.gnugrep -# pkgs.gawk -# pkgs.gnutar -# pkgs.zip -# pkgs.unzip -# pkgs.gzip -# pkgs.bzip2 -# pkgs.wget -# pkgs.par2cmdline -# pkgs.cksfv -# pkgs.bittorrent -# pkgs.graphviz -# pkgs.bash -# pkgs.binutils -# pkgs.gnum4 -# pkgs.valgrind -# pkgs.texinfo + pkgs.coreutils + pkgs.findutils + pkgs.diffutils + pkgs.gnupatch + pkgs.gnused + pkgs.gnugrep + pkgs.gawk + pkgs.gnutar + pkgs.zip + pkgs.unzip + pkgs.gzip + pkgs.bzip2 + pkgs.wget + pkgs.par2cmdline + pkgs.cksfv + pkgs.bittorrent + pkgs.graphviz + pkgs.bash + pkgs.binutils + pkgs.gnum4 + pkgs.valgrind + pkgs.texinfo pkgs.octavefront -# pkgs.gnumake -# pkgs.bisonnew -# pkgs.flexnew + pkgs.gnumake + pkgs.bisonnew + pkgs.flexnew pkgs.gcc -# pkgs.strategoxt093 -# pkgs.ghc -# pkgs.helium -# pkgs.perl -# pkgs.python -# pkgs.libxml2 -# pkgs.libxslt -# pkgs.docbook_xml_dtd -# pkgs.docbook_xml_xslt + pkgs.strategoxt093 + pkgs.ghc + pkgs.helium + pkgs.perl + pkgs.python + pkgs.libxml2 + pkgs.libxslt + pkgs.docbook_xml_dtd + pkgs.docbook_xml_xslt pkgs.subversion pkgs.pan -# pkgs.sylpheed -# pkgs.firefox -# pkgs.MPlayer -# pkgs.MPlayerPlugin -# pkgs.vlc -# pkgs.zapping -# pkgs.gqview -# pkgs.hello -# pkgs.nxml -# pkgs.uml -# pkgs.nix + pkgs.sylpheed + pkgs.firefox + pkgs.MPlayer + pkgs.MPlayerPlugin + pkgs.vlc + pkgs.zapping + pkgs.gqview + pkgs.hello + pkgs.nxml + pkgs.uml + pkgs.nix ]; } diff --git a/pkgs/system/stdenvs.nix b/pkgs/system/stdenvs.nix index ecf8fa0f528..d8006ddb829 100644 --- a/pkgs/system/stdenvs.nix +++ b/pkgs/system/stdenvs.nix @@ -25,7 +25,11 @@ # with it (e.g., because they require GNU Make). stdenvNative = (import ../stdenv/native) {stdenv = stdenvInitial;}; - stdenvNativePkgs = allPackages {stdenv = stdenvNative; noSysDirs = false;}; + stdenvNativePkgs = allPackages { + stdenv = stdenvNative; + bootCurl = null; + noSysDirs = false; + }; # The Nix build environment. @@ -49,10 +53,14 @@ stdenvLinuxBoot1 = (import ../stdenv/nix-linux/boot.nix) { stdenv = stdenvNative; glibc = stdenvLinuxGlibc; + inherit genericStdenv gccWrapper; }; # 3) Now we can build packages that will have the Nix glibc. - stdenvLinuxBoot1Pkgs = allPackages {stdenv = stdenvLinuxBoot1;}; + stdenvLinuxBoot1Pkgs = allPackages { + stdenv = stdenvLinuxBoot1; + bootCurl = null; + }; # 4) However, since these packages are built by an native C compiler # and linker, they may well pick up impure references (e.g., bash diff --git a/pkgs/tools/archivers/gnutar/builder.sh b/pkgs/tools/archivers/gnutar/builder.sh index f79d158b86a..a73f5a6d5b8 100755 --- a/pkgs/tools/archivers/gnutar/builder.sh +++ b/pkgs/tools/archivers/gnutar/builder.sh @@ -1,9 +1,3 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfz $src || exit 1 -cd tar-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +#! /bin/sh -e +. $stdenv/setup +genericBuild diff --git a/pkgs/tools/archivers/gnutar/default.nix b/pkgs/tools/archivers/gnutar/default.nix index b7c18e872ad..e5cbf559cf8 100644 --- a/pkgs/tools/archivers/gnutar/default.nix +++ b/pkgs/tools/archivers/gnutar/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "gnutar-1.13.25"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = ftp://alpha.gnu.org/gnu/tar/tar-1.13.25.tar.gz; md5 = "6ef8c906e81eee441f8335652670ac4a"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/tools/archivers/unzip/builder.sh b/pkgs/tools/archivers/unzip/builder.sh index 90613620c7b..f0b9d031802 100755 --- a/pkgs/tools/archivers/unzip/builder.sh +++ b/pkgs/tools/archivers/unzip/builder.sh @@ -1,8 +1,16 @@ -#! /bin/sh +#! /bin/sh -e -. $stdenv/setup || exit 1 +. $stdenv/setup -tar xvfz $src || exit 1 -cd unzip-* || exit 1 -make -f unix/Makefile generic || exit 1 -make -f unix/Makefile prefix=$out install || exit 1 +builder() { + make -f unix/Makefile generic +} + +installer() { + make -f unix/Makefile prefix=$out install +} + +buildPhase=builder +installPhase=installer + +genericBuild diff --git a/pkgs/tools/archivers/unzip/default.nix b/pkgs/tools/archivers/unzip/default.nix index b9904ea8646..8467e00d029 100644 --- a/pkgs/tools/archivers/unzip/default.nix +++ b/pkgs/tools/archivers/unzip/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "unzip-5.50"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = ftp://ftp.info-zip.org/pub/infozip/src/unzip550.tar.gz; md5 = "798592d62e37f92571184236947122ed"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/tools/compression/bzip2/builder.sh b/pkgs/tools/compression/bzip2/builder.sh index 2fa113aa17a..e2c5982852e 100755 --- a/pkgs/tools/compression/bzip2/builder.sh +++ b/pkgs/tools/compression/bzip2/builder.sh @@ -1,8 +1,4 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfz $src || exit 1 -cd bzip2-* || exit 1 -make || exit 1 -make install PREFIX=$out || exit 1 +#! /bin/sh -e +. $stdenv/setup +installFlags="PREFIX=$out" +genericBuild diff --git a/pkgs/tools/compression/bzip2/default.nix b/pkgs/tools/compression/bzip2/default.nix index 1684edd1659..af3ec46dec7 100644 --- a/pkgs/tools/compression/bzip2/default.nix +++ b/pkgs/tools/compression/bzip2/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "bzip2-1.0.2"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = ftp://sources.redhat.com/pub/bzip2/v102/bzip2-1.0.2.tar.gz; md5 = "ee76864958d568677f03db8afad92beb"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/tools/compression/gzip/builder.sh b/pkgs/tools/compression/gzip/builder.sh index 0254e252958..a73f5a6d5b8 100755 --- a/pkgs/tools/compression/gzip/builder.sh +++ b/pkgs/tools/compression/gzip/builder.sh @@ -1,9 +1,3 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfz $src || exit 1 -cd gzip-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +#! /bin/sh -e +. $stdenv/setup +genericBuild diff --git a/pkgs/tools/compression/gzip/default.nix b/pkgs/tools/compression/gzip/default.nix index a5902361fe7..d766635b05b 100644 --- a/pkgs/tools/compression/gzip/default.nix +++ b/pkgs/tools/compression/gzip/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "gzip-1.3.3"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = http://www.gzip.org/gzip-1.3.3.tar.gz; md5 = "52eaf713673507d21f7abefee98ba662"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/tools/graphics/graphviz/builder.sh b/pkgs/tools/graphics/graphviz/builder.sh index f37ee4412c2..3fd6c6bb902 100755 --- a/pkgs/tools/graphics/graphviz/builder.sh +++ b/pkgs/tools/graphics/graphviz/builder.sh @@ -1,10 +1,10 @@ -#! /bin/sh +#! /bin/sh -e buildinputs="$x11 $libpng $libjpeg $expat $freetype" -. $stdenv/setup || exit 1 +. $stdenv/setup -tar xvfz $src || exit 1 -cd graphviz-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +if test -z "$x11"; then + configureFlags="$configureFlags --without-x" +fi + +genericBuild diff --git a/pkgs/tools/misc/coreutils/builder.sh b/pkgs/tools/misc/coreutils/builder.sh index 75308639108..a73f5a6d5b8 100755 --- a/pkgs/tools/misc/coreutils/builder.sh +++ b/pkgs/tools/misc/coreutils/builder.sh @@ -1,9 +1,3 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfj $src || exit 1 -cd coreutils-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +#! /bin/sh -e +. $stdenv/setup +genericBuild diff --git a/pkgs/tools/misc/coreutils/default.nix b/pkgs/tools/misc/coreutils/default.nix index d5a4b729556..009ff76ab67 100644 --- a/pkgs/tools/misc/coreutils/default.nix +++ b/pkgs/tools/misc/coreutils/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "coreutils-5.0"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = ftp://ftp.nluug.nl/pub/gnu/coreutils/coreutils-5.0.tar.bz2; md5 = "94e5558ee2a65723d4840bfde2d323f0"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/tools/misc/findutils/builder.sh b/pkgs/tools/misc/findutils/builder.sh index f61ec740c1b..a73f5a6d5b8 100755 --- a/pkgs/tools/misc/findutils/builder.sh +++ b/pkgs/tools/misc/findutils/builder.sh @@ -1,9 +1,3 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfz $src || exit 1 -cd findutils-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +#! /bin/sh -e +. $stdenv/setup +genericBuild diff --git a/pkgs/tools/misc/findutils/default.nix b/pkgs/tools/misc/findutils/default.nix index 957aef5e0e4..1aafc999915 100644 --- a/pkgs/tools/misc/findutils/default.nix +++ b/pkgs/tools/misc/findutils/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "findutils-4.1.20"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = ftp://alpha.gnu.org/pub/gnu/findutils/findutils-4.1.20.tar.gz; md5 = "e90ce7222daadeb8616b8db461e17cbc"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/tools/networking/curl/builder.sh b/pkgs/tools/networking/curl/builder.sh new file mode 100755 index 00000000000..6e33f41fff5 --- /dev/null +++ b/pkgs/tools/networking/curl/builder.sh @@ -0,0 +1,4 @@ +#! /bin/sh -e +. $stdenv/setup +configureFlags="--without-ssl" +genericBuild diff --git a/pkgs/tools/networking/curl/default.nix b/pkgs/tools/networking/curl/default.nix new file mode 100644 index 00000000000..a2e9c273847 --- /dev/null +++ b/pkgs/tools/networking/curl/default.nix @@ -0,0 +1,13 @@ +{stdenv, fetchurl, zlib}: + +derivation { + name = "curl-7.11.1"; + system = stdenv.system; + builder = ./builder.sh; + src = fetchurl { + url = http://curl.haxx.se/download/curl-7.11.1.tar.bz2; + md5 = "c2af7c3364a1a8839516f74961b6bd11"; + }; + buildInputs = [zlib]; + inherit stdenv; +} diff --git a/pkgs/tools/networking/wget/builder.sh b/pkgs/tools/networking/wget/builder.sh index 9523d7e9ca8..a73f5a6d5b8 100755 --- a/pkgs/tools/networking/wget/builder.sh +++ b/pkgs/tools/networking/wget/builder.sh @@ -1,9 +1,3 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfz $src || exit 1 -cd wget-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +#! /bin/sh -e +. $stdenv/setup +genericBuild diff --git a/pkgs/tools/networking/wget/default.nix b/pkgs/tools/networking/wget/default.nix index d0b7d01c1de..b3ec1829421 100644 --- a/pkgs/tools/networking/wget/default.nix +++ b/pkgs/tools/networking/wget/default.nix @@ -1,10 +1,12 @@ -{stdenv, fetchurl}: derivation { - name = "wget-1.9"; +{stdenv, fetchurl}: + +derivation { + name = "wget-1.9.1"; system = stdenv.system; builder = ./builder.sh; src = fetchurl { - url = ftp://ftp.nluug.nl/pub/gnu/wget/wget-1.9.tar.gz; - md5 = "18ac093db70801b210152dd69b4ef08a"; + url = ftp://ftp.nl.net/pub/gnu/wget/wget-1.9.1.tar.gz; + md5 = "e6051f1e1487ec0ebfdbda72bedc70ad"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/tools/text/diffutils/builder.sh b/pkgs/tools/text/diffutils/builder.sh index 408b75eb803..46f69284ae8 100755 --- a/pkgs/tools/text/diffutils/builder.sh +++ b/pkgs/tools/text/diffutils/builder.sh @@ -1,9 +1,3 @@ #! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfz $src || exit 1 -cd diffutils-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +. $stdenv/setup +genericBuild diff --git a/pkgs/tools/text/diffutils/default.nix b/pkgs/tools/text/diffutils/default.nix index bbf1990f713..bcb9a4891b6 100644 --- a/pkgs/tools/text/diffutils/default.nix +++ b/pkgs/tools/text/diffutils/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "diffutils-2.8.1"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = ftp://ftp.nluug.nl/pub/gnu/diffutils/diffutils-2.8.1.tar.gz; md5 = "71f9c5ae19b60608f6c7f162da86a428"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/tools/text/gawk/builder.sh b/pkgs/tools/text/gawk/builder.sh index f1a951f1fd5..a73f5a6d5b8 100755 --- a/pkgs/tools/text/gawk/builder.sh +++ b/pkgs/tools/text/gawk/builder.sh @@ -1,9 +1,3 @@ -#! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfj $src || exit 1 -cd gawk-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +#! /bin/sh -e +. $stdenv/setup +genericBuild diff --git a/pkgs/tools/text/gawk/default.nix b/pkgs/tools/text/gawk/default.nix index 85de9289dd0..26340d74f4d 100644 --- a/pkgs/tools/text/gawk/default.nix +++ b/pkgs/tools/text/gawk/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "gawk-3.1.3"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = ftp://ftp.nluug.nl/pub/gnu/gawk/gawk-3.1.3.tar.bz2; md5 = "a116eec17e7ba085febb74c7758823bd"; }; - stdenv = stdenv; + inherit stdenv; } diff --git a/pkgs/tools/text/gnugrep/builder.sh b/pkgs/tools/text/gnugrep/builder.sh index cb2c91a6b07..a73f5a6d5b8 100755 --- a/pkgs/tools/text/gnugrep/builder.sh +++ b/pkgs/tools/text/gnugrep/builder.sh @@ -1,14 +1,3 @@ #! /bin/sh -e - -set -x -export NIX_DEBUG=1 -buildinputs="$pcre" . $stdenv/setup - -echo $NIX_LDFLAGS - -tar xvfj $src -cd grep-* -./configure --prefix=$out -make -make install +genericBuild diff --git a/pkgs/tools/text/gnugrep/default.nix b/pkgs/tools/text/gnugrep/default.nix index b526c81fa77..f8a2563de6e 100644 --- a/pkgs/tools/text/gnugrep/default.nix +++ b/pkgs/tools/text/gnugrep/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl, pcre}: derivation { +{stdenv, fetchurl, pcre}: + +derivation { name = "gnugrep-2.5.1"; system = stdenv.system; builder = ./builder.sh; @@ -6,6 +8,6 @@ url = ftp://ftp.nluug.nl/pub/gnu/grep/grep-2.5.1.tar.bz2; md5 = "ddd99e2d5d4f4611357e31e97f080cf2"; }; - stdenv = stdenv; - pcre = pcre; + buildInputs = [pcre]; + inherit stdenv; } diff --git a/pkgs/tools/text/gnused/builder.sh b/pkgs/tools/text/gnused/builder.sh index 12663532792..46f69284ae8 100755 --- a/pkgs/tools/text/gnused/builder.sh +++ b/pkgs/tools/text/gnused/builder.sh @@ -1,9 +1,3 @@ #! /bin/sh - -. $stdenv/setup || exit 1 - -tar xvfz $src || exit 1 -cd sed-* || exit 1 -./configure --prefix=$out || exit 1 -make || exit 1 -make install || exit 1 +. $stdenv/setup +genericBuild diff --git a/pkgs/tools/text/gnused/default.nix b/pkgs/tools/text/gnused/default.nix index a92b3996515..bcca43fcec7 100644 --- a/pkgs/tools/text/gnused/default.nix +++ b/pkgs/tools/text/gnused/default.nix @@ -1,4 +1,6 @@ -{stdenv, fetchurl}: derivation { +{stdenv, fetchurl}: + +derivation { name = "gnused-4.0.7"; system = stdenv.system; builder = ./builder.sh; @@ -6,5 +8,5 @@ url = ftp://ftp.nluug.nl/pub/gnu/sed/sed-4.0.7.tar.gz; md5 = "005738e7f97bd77d95b6907156c8202a"; }; - stdenv = stdenv; + inherit stdenv; }