summaryrefslogtreecommitdiff
path: root/validate
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2011-11-16 13:00:55 +0000
committerSimon Marlow <marlowsd@gmail.com>2011-11-16 14:39:25 +0000
commit1bbb89f3ab009367fcca84b73b351ddcf5be16a4 (patch)
tree8daf094aacfa4ca53d86218dcb1fe23c75f79163 /validate
parente7b42bd4925ce91999f070d74e137a6a0ff6e3e4 (diff)
downloadhaskell-1bbb89f3ab009367fcca84b73b351ddcf5be16a4.tar.gz
Make the --fast option to validate faster, and add --normal
The --fast option now disables the following: - dynamic libs - bindist and bindisttest Which knocks several minutes off validate for me, but it's still over 30 minutes using 5 cores on 64-bit Linux. Usual caveats apply: if you're using --fast, then make sure you aren't doing anything that might destabilise dynamic libs or binary dists.
Diffstat (limited to 'validate')
-rwxr-xr-xvalidate85
1 files changed, 53 insertions, 32 deletions
diff --git a/validate b/validate
index 0010d743e4..eae6d01280 100755
--- a/validate
+++ b/validate
@@ -9,7 +9,8 @@
# compiler the test suite covers.
# 2008-07-01: 63% slower than the default.
# HTML generated here: testsuite/hpc_output/hpc_index.html
-# --fast: Default. Opposite to --slow.
+# --normal: Default settings
+# --fast: Omit dyn way, omit binary distribution
# --slow: Build stage2 with -DDEBUG.
# 2008-07-01: 14% slower than the default.
@@ -18,7 +19,7 @@ set -e
no_clean=0
testsuite_only=0
hpc=NO
-slow=NO
+speed=NORMAL
while [ $# -gt 0 ]
do
@@ -33,10 +34,13 @@ do
hpc=YES
;;
--slow)
- slow=YES
+ speed=SLOW
;;
--fast)
- slow=NO
+ speed=FAST
+ ;;
+ --normal)
+ speed=NORMAL
;;
*)
echo "Bad argument: $1" >&2
@@ -88,32 +92,41 @@ thisdir=`utils/ghc-pwd/dist-boot/ghc-pwd`
echo "Validating=YES" > mk/are-validating.mk
-$make -j$threads ValidateHpc=$hpc ValidateSlow=$slow
+$make -j$threads ValidateHpc=$hpc ValidateSpeed=$speed
# For a "debug make", add "--debug=b --debug=m"
-$make binary-dist-prep
-$make test_bindist TEST_PREP=YES
-
-#
-# Install the mtl package into the bindist, because it is used by some
-# tests. It isn't essential that we do this (the failing tests will
-# be treated as expected failures), but we get a bit more test
-# coverage, and also verify that we can install a package into the
-# bindist with Cabal.
-#
-bindistdir="bindisttest/install dir"
-cd libraries/mtl
-"$thisdir/$bindistdir/bin/ghc" --make Setup
-./Setup configure --with-ghc="$thisdir/$bindistdir/bin/ghc" --with-haddock="$thisdir/$bindistdir/bin/haddock" --global --builddir=dist-bindist --prefix="$thisdir/$bindistdir"
-./Setup build --builddir=dist-bindist
-./Setup haddock --builddir=dist-bindist
-./Setup install --builddir=dist-bindist
-./Setup clean --builddir=dist-bindist
-rm -f Setup Setup.exe Setup.hi Setup.o
-cd $thisdir
+# -----------------------------------------------------------------------------
+# Build and test a binary distribution (not --fast)
+
+if [ $speed != "FAST" ]; then
+
+ $make binary-dist-prep
+ $make test_bindist TEST_PREP=YES
+
+ #
+ # Install the mtl package into the bindist, because it is used by some
+ # tests. It isn't essential that we do this (the failing tests will
+ # be treated as expected failures), but we get a bit more test
+ # coverage, and also verify that we can install a package into the
+ # bindist with Cabal.
+ #
+ bindistdir="bindisttest/install dir"
+ cd libraries/mtl
+ "$thisdir/$bindistdir/bin/ghc" --make Setup
+ ./Setup configure --with-ghc="$thisdir/$bindistdir/bin/ghc" --with-haddock="$thisdir/$bindistdir/bin/haddock" --global --builddir=dist-bindist --prefix="$thisdir/$bindistdir"
+ ./Setup build --builddir=dist-bindist
+ ./Setup haddock --builddir=dist-bindist
+ ./Setup install --builddir=dist-bindist
+ ./Setup clean --builddir=dist-bindist
+ rm -f Setup Setup.exe Setup.hi Setup.o
+ cd $thisdir
+fi
fi # testsuite-only
+# -----------------------------------------------------------------------------
+# Run the testsuite
+
if [ "$hpc" = YES ]
then
# XXX With threads we'd need to give a different tix file to each thread
@@ -124,14 +137,22 @@ then
rm -f $HPCTIXFILE
fi
-if [ "$slow" = YES ]
-then
-MAKE_TEST_TARGET=fulltest
-else
-MAKE_TEST_TARGET=test
-fi
+case "$speed" in
+SLOW)
+ MAKE_TEST_TARGET=fulltest
+ BINDIST="BINDIST=YES"
+ ;;
+NORMAL)
+ MAKE_TEST_TARGET=test
+ BINDIST="BINDIST=YES"
+ ;;
+FAST)
+ MAKE_TEST_TARGET=test
+ BINDIST="BINDIST=NO"
+ ;;
+esac
-$make $MAKE_TEST_TARGET stage=2 BINDIST=YES THREADS=$threads 2>&1 | tee testlog
+$make $MAKE_TEST_TARGET stage=2 $BINDIST THREADS=$threads 2>&1 | tee testlog
if [ "$hpc" = YES ]
then