diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2012-05-19 02:52:36 +0000 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2012-05-19 02:52:36 +0000 |
commit | 41840af6894bf718a1038ba1045adef26a687919 (patch) | |
tree | 0975bb732d3c3bd20ea3b31558c7fa8aba060702 /pkgs/build-support/setup-hooks | |
parent | 76c0be09f8aa397231f81c998c9b4d850e4a50df (diff) | |
download | nixpkgs-41840af6894bf718a1038ba1045adef26a687919.tar nixpkgs-41840af6894bf718a1038ba1045adef26a687919.tar.gz nixpkgs-41840af6894bf718a1038ba1045adef26a687919.tar.bz2 nixpkgs-41840af6894bf718a1038ba1045adef26a687919.tar.lz nixpkgs-41840af6894bf718a1038ba1045adef26a687919.tar.xz nixpkgs-41840af6894bf718a1038ba1045adef26a687919.tar.zst nixpkgs-41840af6894bf718a1038ba1045adef26a687919.zip |
* Add a setup hook ‘autoreconfHook’ to simplify packages that need to
run autoreconf: buildInputs = [ autoreconfHook ]; is essentially equivalent to buildInputs = [ autoconf automake libtool ]; preConfigure = "autoreconf -i"; svn path=/nixpkgs/branches/x-updates/; revision=34181
Diffstat (limited to 'pkgs/build-support/setup-hooks')
-rw-r--r-- | pkgs/build-support/setup-hooks/autoreconf.sh | 11 | ||||
-rw-r--r-- | pkgs/build-support/setup-hooks/make-wrapper.sh | 102 |
2 files changed, 113 insertions, 0 deletions
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 <PROGRAM> <MAKE-WRAPPER FLAGS...> +wrapProgram() { + local prog="$1" + local hidden="$(dirname "$prog")/.$(basename "$prog")"-wrapped + mv $prog $hidden + makeWrapper $hidden $prog "$@" +} |