From e01be47e532ba8f8426bb676619079fcea1668f1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra <eelco.dolstra@logicblox.com> Date: Sun, 5 Apr 2009 18:13:59 +0000 Subject: [PATCH] * aclocal wrapper: skip directories in ACLOCAL_PATH that don't exist, otherwise aclocal barfs. Updated the builder to use makeWrapper * Made Automake 1.10 the default. * Fixed `make check' in Automake by turning off indented logging in Make (there is a flag for that now). * Disabled the `make check' in Automake by default because it takes a REALLY long time (e.g. more than 2 hours on Cygwin, 50 minutes on Darwin, 25 minutes on Linux) which is a lot for a package that otherwise takes 10 seconds to build. We can add a Hydra job with doCheck enabled to do regression testing. * make-wrapper: allow --run commands to add additional flags to the invocation of the wrapped program. An example is the aclocal wrapper: it adds additional -I ... flags. * make-wrapper: call the wrapped program .foo-wrapped instead of .wrapped-foo to make it easier to tell programs apart in `ps' output. svn path=/nixpkgs/branches/stdenv-updates/; revision=14885 --- .../make-wrapper/make-wrapper.sh | 6 ++- .../tools/misc/automake/automake-1.10.x.nix | 13 ++++--- .../tools/misc/automake/automake-1.7.x.nix | 8 ++-- .../tools/misc/automake/automake-1.9.x.nix | 21 +++++++++- .../tools/misc/automake/builder.sh | 39 +++++-------------- .../misc/automake/test-broken-make.patch | 16 -------- pkgs/top-level/all-packages.nix | 8 ++-- 7 files changed, 49 insertions(+), 62 deletions(-) delete mode 100644 pkgs/development/tools/misc/automake/test-broken-make.patch diff --git a/pkgs/build-support/make-wrapper/make-wrapper.sh b/pkgs/build-support/make-wrapper/make-wrapper.sh index c13f623bcda0..461f30780ee0 100644 --- a/pkgs/build-support/make-wrapper/make-wrapper.sh +++ b/pkgs/build-support/make-wrapper/make-wrapper.sh @@ -66,7 +66,9 @@ makeWrapper() { fi done - echo "exec \"$original\" $flagsBefore \"\$@\"" >> $wrapper + # Note: extraFlagsArray is an array containing additional flags + # that may be set by --run actions. + echo exec "$original" $flagsBefore '"${extraFlagsArray[@]}"' '"$@"' >> $wrapper chmod +x $wrapper } @@ -90,7 +92,7 @@ filterExisting() { # Syntax: wrapProgram <PROGRAM> <MAKE-WRAPPER FLAGS...> wrapProgram() { local prog="$1" - local hidden="$(dirname "$prog")/.wrapped-$(basename "$prog")" + local hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped mv $prog $hidden makeWrapper $hidden $prog "$@" } diff --git a/pkgs/development/tools/misc/automake/automake-1.10.x.nix b/pkgs/development/tools/misc/automake/automake-1.10.x.nix index 10aecf7c678d..5296f0cbec32 100644 --- a/pkgs/development/tools/misc/automake/automake-1.10.x.nix +++ b/pkgs/development/tools/misc/automake/automake-1.10.x.nix @@ -1,9 +1,10 @@ -{stdenv, fetchurl, perl, autoconf}: +{stdenv, fetchurl, perl, autoconf, makeWrapper, doCheck ? false}: stdenv.mkDerivation rec { name = "automake-1.10.2"; builder = ./builder.sh; + setupHook = ./setup-hook.sh; src = fetchurl { @@ -11,12 +12,14 @@ stdenv.mkDerivation rec { sha256 = "03v4gsvi71nhqvnxxbhkrksdg5icrn8yda021852njfragzck2n3"; }; - patches = [ ./test-broken-make.patch ]; + buildInputs = [perl autoconf makeWrapper]; - buildInputs = [perl autoconf]; - - doCheck = true; + inherit doCheck; + # Disable indented log output from Make, otherwise "make.test" will + # fail. + preCheck = "unset NIX_INDENT_MAKE"; + # Don't fixup "#! /bin/sh" in Libtool, otherwise it will use the # "fixed" path in generated files! dontPatchShebangs = true; diff --git a/pkgs/development/tools/misc/automake/automake-1.7.x.nix b/pkgs/development/tools/misc/automake/automake-1.7.x.nix index fc34ef8e3aad..e0d8e516d3b5 100644 --- a/pkgs/development/tools/misc/automake/automake-1.7.x.nix +++ b/pkgs/development/tools/misc/automake/automake-1.7.x.nix @@ -1,14 +1,16 @@ -{stdenv, fetchurl, perl, autoconf}: +{stdenv, fetchurl, perl, autoconf, makeWrapper}: stdenv.mkDerivation { name = "automake-1.7.9"; + builder = ./builder.sh; - setupHook = ./setup-hook.sh; + src = fetchurl { url = http://nixos.org/tarballs/automake-1.7.9.tar.bz2; md5 = "571fd0b0598eb2a27dcf68adcfddfacb"; }; - buildInputs = [perl autoconf]; + + buildInputs = [perl autoconf makeWrapper]; # Don't fixup "#! /bin/sh" in Libtool, otherwise it will use the # "fixed" path in generated files! diff --git a/pkgs/development/tools/misc/automake/automake-1.9.x.nix b/pkgs/development/tools/misc/automake/automake-1.9.x.nix index ccc2c6baac64..5ca279d23adb 100644 --- a/pkgs/development/tools/misc/automake/automake-1.9.x.nix +++ b/pkgs/development/tools/misc/automake/automake-1.9.x.nix @@ -1,16 +1,33 @@ -{stdenv, fetchurl, perl, autoconf}: +{stdenv, fetchurl, perl, autoconf, makeWrapper}: stdenv.mkDerivation { name = "automake-1.9.6"; + builder = ./builder.sh; + setupHook = ./setup-hook.sh; + src = fetchurl { url = ftp://ftp.gnu.org/gnu/automake/automake-1.9.6.tar.gz; md5 = "c60f77a42f103606981d456f1615f5b4"; }; - buildInputs = [perl autoconf]; + + buildInputs = [perl autoconf makeWrapper]; # Don't fixup "#! /bin/sh" in Libtool, otherwise it will use the # "fixed" path in generated files! dontPatchShebangs = true; + + meta = { + homepage = http://www.gnu.org/software/automake/; + description = "GNU Automake, a GNU standard-compliant makefile generator"; + + longDescription = '' + GNU Automake is a tool for automatically generating + `Makefile.in' files compliant with the GNU Coding + Standards. Automake requires the use of Autoconf. + ''; + + license = "GPLv2+"; + }; } diff --git a/pkgs/development/tools/misc/automake/builder.sh b/pkgs/development/tools/misc/automake/builder.sh index 0f5e955f8806..6b0cd7e4fa22 100644 --- a/pkgs/development/tools/misc/automake/builder.sh +++ b/pkgs/development/tools/misc/automake/builder.sh @@ -2,46 +2,25 @@ source $stdenv/setup postInstall() { - # Create a wrapper around `aclocal' that converts every element in # `ACLOCAL_PATH' into a `-I dir' option. This way `aclocal' # becomes modular; M4 macros do not need to be stored in a single # global directory, while callers of `aclocal' do not need to pass # `-I' options explicitly. - mv $out/bin/aclocal $out/bin/_tmp - - for i in $out/bin/aclocal*; do - rm $i - ln -s aclocal $i - done - - cat > $out/bin/aclocal <<EOF -#! $SHELL -e - -oldIFS=\$IFS + for prog in $out/bin/aclocal*; do + wrapProgram $prog --run \ + ' +oldIFS=$IFS IFS=: -extra= -for i in \$ACLOCAL_PATH; do - if test -n "\$i"; then - extra="\$extra -I \$i" +for dir in $ACLOCAL_PATH; do + if test -n "$dir" -a -d "$dir"; then + extraFlagsArray=("${extraFlagsArray[@]}" "-I" "$dir") fi done -IFS=\$oldIFS - -exec $out/bin/aclocal-orig \${extra[@]} "\$@" -EOF - chmod +x $out/bin/aclocal - mv $out/bin/_tmp $out/bin/aclocal-orig - - - # Automatically let `ACLOCAL_PATH' include all build inputs that - # have a `.../share/aclocal' directory. - test -x $out/nix-support || mkdir $out/nix-support - cp -p $setupHook $out/nix-support/setup-hook - +IFS=$oldIFS' + done } -postInstall=postInstall genericBuild diff --git a/pkgs/development/tools/misc/automake/test-broken-make.patch b/pkgs/development/tools/misc/automake/test-broken-make.patch deleted file mode 100644 index b10754fe0d2b..000000000000 --- a/pkgs/development/tools/misc/automake/test-broken-make.patch +++ /dev/null @@ -1,16 +0,0 @@ -The version of GNU Make in Nixpkgs is "broken" in the sense that it -produces additional output, making `AM_MAKE_INCLUDE' (tested by `make.test') -fail. Thus, we just disable `make.test' for now. - -See http://article.gmane.org/gmane.comp.sysutils.automake.bugs/4234 . - ---- automake-1.10/tests/Makefile.in 2006-10-15 19:25:25.000000000 +0200 -+++ automake-1.10/tests/Makefile.in 2008-07-02 16:40:35.000000000 +0200 -@@ -482,7 +482,6 @@ ltdeps.test \ - ltlibobjs.test \ - ltlibsrc.test \ - maintclean.test \ --make.test \ - makej.test \ - makevars.test \ - man.test \ diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b2f492d790c7..bbdd90280165 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2271,18 +2271,18 @@ let inherit fetchurl stdenv perl m4 lzma; }; - automake = automake19x; + automake = automake110x; automake17x = import ../development/tools/misc/automake/automake-1.7.x.nix { - inherit fetchurl stdenv perl autoconf; + inherit fetchurl stdenv perl autoconf makeWrapper; }; automake19x = import ../development/tools/misc/automake/automake-1.9.x.nix { - inherit fetchurl stdenv perl autoconf; + inherit fetchurl stdenv perl autoconf makeWrapper; }; automake110x = import ../development/tools/misc/automake/automake-1.10.x.nix { - inherit fetchurl stdenv perl autoconf; + inherit fetchurl stdenv perl autoconf makeWrapper; }; avrdude = import ../development/tools/misc/avrdude {