By creating symlinks instead of actually creating files we still get the
benefits of using a temporary directory, but the preparation is about
three times as fast. Test used:
$ time bash -c 'for ((i=0; i < 100; ++i)); do
autotools/run-in-tempdir true; done'
Signed-off-by: Michael Hanselmann <hansmi@google.com>
Reviewed-by: Bernardo Dal Seno <bdalseno@google.com>
tmpdir=$(mktemp -d -t gntbuild.XXXXXXXX)
trap "rm -rf $tmpdir" EXIT
-# fully copy items
-cp -r autotools daemons scripts lib tools qa $tmpdir
+linkcopy() {
+ cp -L -s -r "$@"
+}
+
+dirs=( autotools daemons scripts lib tools qa )
if [[ -z "$COPY_DOC" ]]; then
mkdir $tmpdir/doc
ln -s $PWD/doc/examples $tmpdir/doc
else
# Building documentation requires all files
- cp -r doc $tmpdir
+ dirs+=( doc )
fi
+# Create symlinks
+for i in ${dirs[@]}; do
+ linkcopy $PWD/$i $tmpdir
+done
+
mkdir $tmpdir/test/
-cp -r test/py $tmpdir/test/py
+linkcopy $PWD/test/py $tmpdir/test/py
ln -s $PWD/test/data $tmpdir/test
ln -s $PWD/test/hs $tmpdir/test