From 41840af6894bf718a1038ba1045adef26a687919 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sat, 19 May 2012 02:52:36 +0000 Subject: * Add a setup hook ‘autoreconfHook’ to simplify packages that need to run autoreconf: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit buildInputs = [ autoreconfHook ]; is essentially equivalent to buildInputs = [ autoconf automake libtool ]; preConfigure = "autoreconf -i"; svn path=/nixpkgs/branches/x-updates/; revision=34181 --- pkgs/build-support/make-wrapper/make-wrapper.sh | 102 ------------------------ pkgs/build-support/setup-hooks/autoreconf.sh | 11 +++ pkgs/build-support/setup-hooks/make-wrapper.sh | 102 ++++++++++++++++++++++++ pkgs/os-specific/linux/mountall/default.nix | 6 +- pkgs/os-specific/linux/usbutils/default.nix | 4 +- pkgs/tools/networking/sitecopy/default.nix | 6 +- pkgs/top-level/all-packages.nix | 10 ++- 7 files changed, 125 insertions(+), 116 deletions(-) delete mode 100644 pkgs/build-support/make-wrapper/make-wrapper.sh create mode 100644 pkgs/build-support/setup-hooks/autoreconf.sh create mode 100644 pkgs/build-support/setup-hooks/make-wrapper.sh diff --git a/pkgs/build-support/make-wrapper/make-wrapper.sh b/pkgs/build-support/make-wrapper/make-wrapper.sh deleted file mode 100644 index 41f2a59246d..00000000000 --- a/pkgs/build-support/make-wrapper/make-wrapper.sh +++ /dev/null @@ -1,102 +0,0 @@ -makeWrapper() { - local original=$1 - local wrapper=$2 - local params varName value command separator n fileNames - local flagsBefore flags - - mkdir -p "$(dirname $wrapper)" - - echo "#! $SHELL -e" > $wrapper - - params=("$@") - for ((n = 2; n < ${#params[*]}; n += 1)); do - p=${params[$n]} - - if test "$p" = "--set"; then - varName=${params[$((n + 1))]} - value=${params[$((n + 2))]} - n=$((n + 2)) - echo "export $varName=$value" >> $wrapper - fi - - if test "$p" = "--run"; then - command=${params[$((n + 1))]} - n=$((n + 1)) - echo "$command" >> $wrapper - fi - - if test "$p" = "--suffix" -o "$p" = "--prefix"; then - varName=${params[$((n + 1))]} - separator=${params[$((n + 2))]} - value=${params[$((n + 3))]} - n=$((n + 3)) - if test -n "$value"; then - if test "$p" = "--suffix"; then - echo "export $varName=\$$varName\${$varName:+$separator}$value" >> $wrapper - else - echo "export $varName=$value\${$varName:+$separator}\$$varName" >> $wrapper - fi - fi - fi - - if test "$p" = "--suffix-each"; then - varName=${params[$((n + 1))]} - separator=${params[$((n + 2))]} - values=${params[$((n + 3))]} - n=$((n + 3)) - for value in $values; do - echo "export $varName=\$$varName\${$varName:+$separator}$value" >> $wrapper - done - fi - - if test "$p" = "--suffix-contents" -o "$p" = "--prefix-contents"; then - varName=${params[$((n + 1))]} - separator=${params[$((n + 2))]} - fileNames=${params[$((n + 3))]} - n=$((n + 3)) - for fileName in $fileNames; do - if test "$p" = "--suffix-contents"; then - echo "export $varName=\$$varName\${$varName:+$separator}$(cat $fileName)" >> $wrapper - else - echo "export $varName=$(cat $fileName)\${$varName:+$separator}\$$varName" >> $wrapper - fi - done - fi - - if test "$p" = "--add-flags"; then - flags=${params[$((n + 1))]} - n=$((n + 1)) - flagsBefore="$flagsBefore $flags" - fi - done - - # Note: extraFlagsArray is an array containing additional flags - # that may be set by --run actions. - echo exec "$original" $flagsBefore '"${extraFlagsArray[@]}"' '"$@"' >> $wrapper - - chmod +x $wrapper -} - -addSuffix() { - suffix=$1 - shift - for name in "$@"; do - echo "$name$suffix" - done -} - -filterExisting() { - for fn in "$@"; do - if test -e "$fn"; then - echo "$fn" - fi - done -} - -# Syntax: wrapProgram -wrapProgram() { - local prog="$1" - local hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped - mv $prog $hidden - makeWrapper $hidden $prog "$@" -} diff --git a/pkgs/build-support/setup-hooks/autoreconf.sh b/pkgs/build-support/setup-hooks/autoreconf.sh new file mode 100644 index 00000000000..027c8322163 --- /dev/null +++ b/pkgs/build-support/setup-hooks/autoreconf.sh @@ -0,0 +1,11 @@ +preConfigurePhases+=" autoreconfPhase" + +for i in @autoconf@ @automake@ @libtool@; do + findInputs $i nativePkgs propagated-build-native-inputs +done + +autoreconfPhase() { + runHook preAutoreconf + autoreconf ${autoreconfFlags:---install --force} + runHook postAutoreconf +} diff --git a/pkgs/build-support/setup-hooks/make-wrapper.sh b/pkgs/build-support/setup-hooks/make-wrapper.sh new file mode 100644 index 00000000000..41f2a59246d --- /dev/null +++ b/pkgs/build-support/setup-hooks/make-wrapper.sh @@ -0,0 +1,102 @@ +makeWrapper() { + local original=$1 + local wrapper=$2 + local params varName value command separator n fileNames + local flagsBefore flags + + mkdir -p "$(dirname $wrapper)" + + echo "#! $SHELL -e" > $wrapper + + params=("$@") + for ((n = 2; n < ${#params[*]}; n += 1)); do + p=${params[$n]} + + if test "$p" = "--set"; then + varName=${params[$((n + 1))]} + value=${params[$((n + 2))]} + n=$((n + 2)) + echo "export $varName=$value" >> $wrapper + fi + + if test "$p" = "--run"; then + command=${params[$((n + 1))]} + n=$((n + 1)) + echo "$command" >> $wrapper + fi + + if test "$p" = "--suffix" -o "$p" = "--prefix"; then + varName=${params[$((n + 1))]} + separator=${params[$((n + 2))]} + value=${params[$((n + 3))]} + n=$((n + 3)) + if test -n "$value"; then + if test "$p" = "--suffix"; then + echo "export $varName=\$$varName\${$varName:+$separator}$value" >> $wrapper + else + echo "export $varName=$value\${$varName:+$separator}\$$varName" >> $wrapper + fi + fi + fi + + if test "$p" = "--suffix-each"; then + varName=${params[$((n + 1))]} + separator=${params[$((n + 2))]} + values=${params[$((n + 3))]} + n=$((n + 3)) + for value in $values; do + echo "export $varName=\$$varName\${$varName:+$separator}$value" >> $wrapper + done + fi + + if test "$p" = "--suffix-contents" -o "$p" = "--prefix-contents"; then + varName=${params[$((n + 1))]} + separator=${params[$((n + 2))]} + fileNames=${params[$((n + 3))]} + n=$((n + 3)) + for fileName in $fileNames; do + if test "$p" = "--suffix-contents"; then + echo "export $varName=\$$varName\${$varName:+$separator}$(cat $fileName)" >> $wrapper + else + echo "export $varName=$(cat $fileName)\${$varName:+$separator}\$$varName" >> $wrapper + fi + done + fi + + if test "$p" = "--add-flags"; then + flags=${params[$((n + 1))]} + n=$((n + 1)) + flagsBefore="$flagsBefore $flags" + fi + done + + # Note: extraFlagsArray is an array containing additional flags + # that may be set by --run actions. + echo exec "$original" $flagsBefore '"${extraFlagsArray[@]}"' '"$@"' >> $wrapper + + chmod +x $wrapper +} + +addSuffix() { + suffix=$1 + shift + for name in "$@"; do + echo "$name$suffix" + done +} + +filterExisting() { + for fn in "$@"; do + if test -e "$fn"; then + echo "$fn" + fi + done +} + +# Syntax: wrapProgram +wrapProgram() { + local prog="$1" + local hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped + mv $prog $hidden + makeWrapper $hidden $prog "$@" +} diff --git a/pkgs/os-specific/linux/mountall/default.nix b/pkgs/os-specific/linux/mountall/default.nix index b563b80f9a9..3d72b0a258e 100644 --- a/pkgs/os-specific/linux/mountall/default.nix +++ b/pkgs/os-specific/linux/mountall/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, libnih, dbus, udev, autoconf, automake, libtool, gettext }: +{ stdenv, fetchurl, pkgconfig, libnih, dbus, udev, gettext, autoreconfHook }: stdenv.mkDerivation { name = "mountall-2.35"; @@ -10,9 +10,7 @@ stdenv.mkDerivation { patches = [ ./no-plymouth.patch ./fix-usr1-race.patch ]; - preConfigure = "rm -R aclocal.m4; gettextize -f; autoreconf -vfi"; - - buildInputs = [ pkgconfig libnih dbus.libs udev autoconf automake libtool gettext ]; + buildInputs = [ pkgconfig libnih dbus.libs udev gettext autoreconfHook ]; makeFlags = "initramfshookdir=$(out)/share/initramfs-tools/hooks upstart_jobs_initramfs_configdir=$(out)/share/initramfs-tools/event-driven/upstart-jobs"; diff --git a/pkgs/os-specific/linux/usbutils/default.nix b/pkgs/os-specific/linux/usbutils/default.nix index ed8cc56d267..5614f55a622 100644 --- a/pkgs/os-specific/linux/usbutils/default.nix +++ b/pkgs/os-specific/linux/usbutils/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, pkgconfig, libusb1, zlib, autoconf, automake, libtool }: +{ stdenv, fetchurl, pkgconfig, libusb1, zlib, autoreconfHook }: let @@ -18,7 +18,7 @@ stdenv.mkDerivation rec { sha256 = "05sxkm7b7lj8p8kr8kw68m49h66351s803z42233b8lssmc3wlra"; }; - buildInputs = [ pkgconfig libusb1 autoconf automake libtool zlib ]; + buildInputs = [ pkgconfig libusb1 autoreconfHook ]; preConfigure = "autoreconf -i"; diff --git a/pkgs/tools/networking/sitecopy/default.nix b/pkgs/tools/networking/sitecopy/default.nix index 6beaff56aea..5667744ef22 100644 --- a/pkgs/tools/networking/sitecopy/default.nix +++ b/pkgs/tools/networking/sitecopy/default.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, neon, zlib, openssl, autoconf, automake, libtool }: +{ stdenv, fetchurl, neon, zlib, openssl, autoreconfHook }: stdenv.mkDerivation rec { name = "sitecopy-0.16.6"; @@ -10,9 +10,7 @@ stdenv.mkDerivation rec { patches = [ ./neon-29.patch ]; - preConfigure = "autoreconf"; - - buildInputs = [ openssl neon zlib autoconf automake libtool ]; + buildInputs = [ openssl neon zlib autoreconfHook ]; configureFlags= "--with-ssl=openssl"; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c5b8dde2624..4ec940b6393 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -245,6 +245,10 @@ let theAttrSet = arg; }; + autoreconfHook = makeSetupHook + { substitutions = { inherit autoconf automake libtool; }; } + ../build-support/setup-hooks/autoreconf.sh; + buildEnv = import ../build-support/buildenv { inherit (pkgs) runCommand perl; }; @@ -327,7 +331,7 @@ let inherit stdenv perl cpio contents ubootChooser; }; - makeWrapper = makeSetupHook {} ../build-support/make-wrapper/make-wrapper.sh; + makeWrapper = makeSetupHook { } ../build-support/setup-hooks/make-wrapper.sh; makeModulesClosure = {kernel, rootModules, allowMissing ? false}: import ../build-support/kernel/modules-closure.nix { @@ -5824,9 +5828,7 @@ let module_init_tools = callPackage ../os-specific/linux/module-init-tools { }; - mountall = callPackage ../os-specific/linux/mountall { - automake = automake111x; - }; + mountall = callPackage ../os-specific/linux/mountall { }; aggregateModules = modules: import ../os-specific/linux/module-init-tools/aggregator.nix { -- cgit 1.4.1