e01be47e53
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
98 lines
2.7 KiB
Bash
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 "$@"
|
|
}
|