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 {