mirror of https://gitlab.com/QEF/q-e.git
192 lines
4.9 KiB
Bash
Executable File
192 lines
4.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# In order to use this script, you must be logged to anonymous cvs:
|
|
# $ cvs login
|
|
# (password: cvsanon)
|
|
|
|
# choose a directory ROOT in which to perform the test
|
|
# the code is in PWROOT=$ROOT/espresso
|
|
# temporary files in TMPDIR=$ROOT/tmp
|
|
|
|
ROOT=/scratch/daily_test/
|
|
MAILTO=developers@pwscf.org
|
|
|
|
# cp does not write the restart file to outdir but to the current directory.
|
|
# All other restart files are either written to outdir and cleaned by this
|
|
# script or ignored, but if this is found the code will restart from last run
|
|
|
|
/bin/rm -r $ROOT/espresso/examples/example28/results/metadyn-cp_50.save/
|
|
|
|
# choose setting for the compiler you want to use
|
|
export CONFIG_OPTS="--disable-parallel"
|
|
# for g95 + MKL:
|
|
# export CONFIG_OPTS="--disable-parallel F90=g95"
|
|
# for ifort:
|
|
. /opt/intel/fce/10.1.008/bin/ifortvars.sh
|
|
. /opt/intel/mkl/10.0.1.014/tools/environment/mklvarsem64t.sh
|
|
export OMP_NUM_THREADS=1
|
|
# in order to use fortran lapack instead of mkl
|
|
#export CONFIG_OPTS="--disable-parallel LAPACK_LIBS=../flib/lapack.a"
|
|
#
|
|
# choose if you want to run only pw.x tests (fast=1) or all examples (fast=0)
|
|
fast=1
|
|
#
|
|
# choose if you want to update an existing cvs (update=1)
|
|
# or to download a new one (update=0)
|
|
update=1
|
|
######################################################################
|
|
export CVSROOT=:pserver:cvsanon@democritos.sissa.it:/home/cvs
|
|
PWROOT=$ROOT/espresso
|
|
TMPDIR=$ROOT/tmp
|
|
OUT=$PWROOT/daily.out
|
|
/bin/rm $OUT
|
|
touch $OUT
|
|
|
|
if ! test -d $PWROOT; then
|
|
mkdir -p $PWROOT
|
|
update=0
|
|
elif ! test -d $PWROOT/CVS; then
|
|
update=0
|
|
fi
|
|
if ! test -d $TMPDIR; then
|
|
mkdir -p $TMPDIR
|
|
fi
|
|
|
|
if test "$update" = "0" ; then
|
|
cd $ROOT
|
|
/bin/rm -r espresso
|
|
cvs co espresso >& cvs.log
|
|
cd $PWROOT
|
|
mv ../cvs.log .
|
|
else
|
|
cd $PWROOT
|
|
cvs update -d >& cvs.log
|
|
fi
|
|
# conflicts=`grep -c '^C ' cvs.log`
|
|
# do not consider conflicts in examples: some of them may be bogus
|
|
conflicts=`grep -v '^C examples/' cvs.log | grep -c '^C'`
|
|
if test "$conflicts" != "0" ; then
|
|
echo "#" >> $OUT
|
|
echo "# CONFLICTS IN CVS CHECKOUT " >> $OUT
|
|
echo "#" >> $OUT
|
|
grep '^C ' cvs.log >> $OUT
|
|
mail -s "RESULTS OF DAILY QE TEST" $MAILTO < $OUT
|
|
exit 1
|
|
fi
|
|
# do not re-run everything if only examples have changed
|
|
changes=` grep -e '^U ' -e'^P ' cvs.log | grep -c -v -e 'U examples' -e '^P examples' `
|
|
if test "$changes" = "0" ; then
|
|
#
|
|
# no changes to cvs, do nothing
|
|
#
|
|
exit 0
|
|
else
|
|
echo "#" >> $OUT
|
|
echo "# CHECKOUT ESPRESSO " >> $OUT
|
|
echo "#" >> $OUT
|
|
grep -e '^U ' -e'^P ' -e '^M ' cvs.log >> $OUT
|
|
fi
|
|
echo "#" >> $OUT
|
|
echo "# CONFIGURE " >> $OUT
|
|
echo "#" >> $OUT
|
|
./configure $CONFIG_OPTS >& configure.log
|
|
tail -1 config.log >> $OUT
|
|
|
|
echo "#" >> $OUT
|
|
echo "# MAKE ALL " >> $OUT
|
|
echo "#" >> $OUT
|
|
make all gipaw >& make.log
|
|
errors=`grep -c -e Error make.log`
|
|
if test "$errors" = "0" ; then
|
|
echo "make all: success" >> $OUT
|
|
else
|
|
echo "make all: failure! Last 50 lines from 'make all':" >> $OUT
|
|
echo "-------------------------------------------------" >> $OUT
|
|
tail -50 make.log >> $OUT
|
|
mail -s "RESULTS OF DAILY QE TEST" $MAILTO < $OUT
|
|
exit $errors
|
|
fi
|
|
#
|
|
if test "$fast" = "0" ; then
|
|
#
|
|
cd examples
|
|
./make_clean
|
|
echo "#" >> $OUT
|
|
echo "# RUNNING ALL EXAMPLES " >> $OUT
|
|
echo "#" >> $OUT
|
|
mv environment_variables environment_variables.orig
|
|
cat > environment_variables << EOF
|
|
BIN_DIR=$PWROOT/bin
|
|
PSEUDO_DIR=$PWROOT/pseudo
|
|
TMP_DIR=$TMPDIR
|
|
PARA_PREFIX=
|
|
PARA_POSTFIX=
|
|
EOF
|
|
#
|
|
echo > run.log
|
|
###./run_all_examples >& run.log
|
|
#
|
|
# TESTING ALL EXAMPLES
|
|
#
|
|
example_list=`/bin/ls -d example??`
|
|
for example in $example_list
|
|
do
|
|
|
|
cd $PWROOT/examples/$example
|
|
|
|
if test -x ./run_example ; then
|
|
if test "$example" = "example21" ; then
|
|
# the argument "64" to run_example is used in example 21
|
|
./run_example 64 >& run.log
|
|
else
|
|
# all other cases
|
|
./run_example >& run.log
|
|
fi
|
|
# get the exit status of the script run_example
|
|
exit_status=$?
|
|
N=`echo $example | sed 's/example//'`
|
|
if test $exit_status -eq 0; then
|
|
echo "example $N finished OK" >> $OUT
|
|
else
|
|
echo "example $N ERROR EXIT (exit status = $exit_status)" >> $OUT
|
|
fi
|
|
|
|
cat run.log >> ../run.log
|
|
/bin/rm run.log
|
|
fi
|
|
|
|
done
|
|
|
|
for example in $example_list
|
|
do
|
|
|
|
cd $PWROOT/examples/$example
|
|
|
|
N=`echo $example | sed 's/example//'`
|
|
|
|
if /bin/grep "HIGH VERBOSITY EXAMPLE" < run_example > /dev/null ; then
|
|
# high verbosity example: do not check
|
|
echo "#" >> $OUT
|
|
echo "# CHECK OF EXAMPLE # " $N " SKIPPED">> $OUT
|
|
echo "#" >> $OUT
|
|
else
|
|
# low-verbosity example: do a full check
|
|
echo "#" >> $OUT
|
|
echo "# CHECKING EXAMPLE # " $N >> $OUT
|
|
echo "#" >> $OUT
|
|
../check_example ./ >> $OUT
|
|
fi
|
|
done
|
|
|
|
cd $PWROOT/examples
|
|
mv environment_variables.orig environment_variables
|
|
#
|
|
else
|
|
#
|
|
cd tests
|
|
./check-pw.x.j >> $OUT
|
|
#
|
|
fi
|
|
#
|
|
mail -s "RESULTS OF DAILY QE TEST" $MAILTO < $OUT
|