From e01be47e532ba8f8426bb676619079fcea1668f1 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra 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 c13f623bcda..461f30780ee 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 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 10aecf7c678..5296f0cbec3 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 fc34ef8e3aa..e0d8e516d3b 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 ccc2c6baac6..5ca279d23ad 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 0f5e955f880..6b0cd7e4fa2 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 <