nixpkgs/pkgs/build-support/make-wrapper/make-wrapper.sh
Eelco Dolstra e01be47e53 * 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
2009-04-05 18:13:59 +00:00

98 lines
2.7 KiB
Bash

makeWrapper() {
local original=$1
local wrapper=$2
local params varName value command separator n fileNames
local flagsBefore flags
ensureDir "$(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"; then
varName=${params[$((n + 1))]}
separator=${params[$((n + 2))]}
fileNames=${params[$((n + 3))]}
n=$((n + 3))
for fileName in $fileNames; do
echo "export $varName=\$$varName\${$varName:+$separator}$(cat $fileName)" >> $wrapper
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 "$@"
}