1
1
Nightly build of trunk and test-suite (PMB and mpich-testsuite)
  as defined in build-HOSTNAME.txt
  Uses build_tarball.pl (which creates ompi-out-VERSION.txt)
  Uses build_tests.pl (which uses ompi-out-VERSION.txt and creates
ompi-tests-out-TEST_VERSION.txt)
  Then should qsub the all created combinations of MPI-installations

build_tests.pl:
 - Updated to take package_dir; the test-suites subdirectory to 
   configure -- currently PMB and mpich-testsuite

This commit was SVN r6604.
Этот коммит содержится в:
Rainer Keller 2005-07-26 01:11:03 +00:00
родитель dcc81eb598
Коммит 95653399ac
2 изменённых файлов: 197 добавлений и 24 удалений

Просмотреть файл

@ -378,10 +378,15 @@ sub try_untar {
} }
sub try_configure { sub try_configure {
my ($name, $merge_output, $tarball, $srcroot, $installdir, my ($name, $merge_output, $tarball, $srcroot, $package_dir, $installdir,
$vpath_mode, $confargs) = @_; $vpath_mode, $confargs) = @_;
my $ret; my $ret;
#
# Attention -- package_dir should only be one level higher...
#
chdir ($package_dir);
# configure it # configure it
my $config_command = "./configure"; my $config_command = "./configure";
if ($vpath_mode) { if ($vpath_mode) {
@ -389,12 +394,9 @@ sub try_configure {
chdir("vpath_build"); chdir("vpath_build");
if ($vpath_mode eq "relative") { if ($vpath_mode eq "relative") {
$config_command = "../configure"; $config_command = "../configure";
} else {
$config_command = "$srcroot/$file_base_name-$version/$package_dir/configure";
} }
#
# Disable absolute for now
# else {
# $config_command = "$srcroot/$file_base_name-$version/configure";
# }
} }
$ret = do_command(1, "$config_command $confargs --prefix=$installdir"); $ret = do_command(1, "$config_command $confargs --prefix=$installdir");
@ -435,6 +437,8 @@ sub try_configure {
chdir (".."); chdir ("..");
} }
chdir ("..");
return { return {
make_all_stderr => $make_all_stderr, make_all_stderr => $make_all_stderr,
status => 0, status => 0,
@ -697,7 +701,6 @@ if ($outfile_arg) {
test_abort("Could not find output file:$outfile -- aborting") test_abort("Could not find output file:$outfile -- aborting")
if ( ! -f $outfile ); if ( ! -f $outfile );
open OUTFILE, "$outfile";
# loop over all configurations # loop over all configurations
# be lazy: if no configurations supplied, do a default # be lazy: if no configurations supplied, do a default
@ -712,12 +715,18 @@ if (! $config_arg || ! -f $config_arg) {
die "NOT SUPPORTED YET\n"; die "NOT SUPPORTED YET\n";
$install_dir="$dir/install";
if ($install_dir_arg) {
$install_dir="$install_dir_arg/$name";
}
$ret = try_untar($name, 0, $tarball_name, $ret = try_untar($name, 0, $tarball_name,
$dir, "$dir/install", "", $config); $dir, "$install_dir", "", $config);
$ret = try_configure($name, 0, $tarball_name, $ret = try_configure($name, 0, $tarball_name,
$dir, "$dir/install", "", $config); $dir, "$install_dir", "", $config);
$ret = cleanup($name, 0, $tarball_name, $ret = cleanup($name, 0, $tarball_name,
$dir, "$dir/install", "", $config); $dir, "$install_dir", "", $config);
$results->{$name} = $ret; $results->{$name} = $ret;
$results->{$name}->{config} = $config; $results->{$name}->{config} = $config;
$results->{$name}->{want_stderr} = 1; $results->{$name}->{want_stderr} = 1;
@ -748,30 +757,32 @@ if (! $config_arg || ! -f $config_arg) {
# stupid emacs: '" # stupid emacs: '"
my $merge_output = $want_stderr ? 0 : 1; my $merge_output = $want_stderr ? 0 : 1;
$ret = try_untar($name, $merge_output, $tarball_name, $ret = try_untar($name, $merge_output, $tarball_name,
$dir, "$dir/install", $dir, "$install_dir",
$vpath_mode, $config); $vpath_mode, $config);
open OUTFILE, "$outfile";
while (<OUTFILE>) { while (<OUTFILE>) {
my $mpi_dir=$_; my $mpi_dir=$_;
my $added_config="$config --with-mpi-dir=$mpi_dir"; my $added_config="$config --with-mpi-dir=$mpi_dir";
my @check_this = split (/\//, $mpi_dir);
my $mpi_installation = pop (@check_this);
chomp($mpi_installation);
# print "mpi_dir:$mpi_dir\n";
$install_dir="$dir/install"; $install_dir="$dir/install";
if ($install_dir_arg) { if ($install_dir_arg) {
$install_dir="$install_dir_arg/$name"; $install_dir="$install_dir_arg/mpi_$mpi_installation/config_$name";
} }
# printf "install_dir:$install_dir\n";
chdir ("PMB-2.2");
$ret = try_configure($name, $merge_output, $tarball_name, $ret = try_configure($name, $merge_output, $tarball_name,
$dir, "$install_dir", $dir, "PMB-2.2", "$install_dir",
$vpath_mode, $added_config);
$ret = try_configure($name, $merge_output, $tarball_name,
$dir, "mpich_tester", "$install_dir",
$vpath_mode, $added_config); $vpath_mode, $added_config);
chdir ("..");
chdir ("mpich_tester");
$ret = try_configure($name, $merge_output, $tarball_name,
$dir, "$install_dir",
$vpath_mode, $added_config);
chdir ("..");
$results->{$name} = $ret; $results->{$name} = $ret;
$results->{$name} = $ret; $results->{$name} = $ret;
$results->{$name} = $ret; $results->{$name} = $ret;
@ -779,11 +790,11 @@ if (! $config_arg || ! -f $config_arg) {
$results->{$name}->{want_stderr} = $want_stderr; $results->{$name}->{want_stderr} = $want_stderr;
$results->{$name}->{vpath_mode} = $vpath_mode; $results->{$name}->{vpath_mode} = $vpath_mode;
$results->{$name}->{installdir} = "$install_dir"; $results->{$name}->{installdir} = "$install_dir";
} }
$ret = cleanup($name, $merge_output, $tarball_name, close OUTFILE;
$dir, "$install_dir", # $ret = cleanup($name, $merge_output, $tarball_name,
$vpath_mode, $config); # $dir, "$install_dir",
# $vpath_mode, $config);
++$i; ++$i;
} }
} }

162
contrib/nightly/ompi_cronjob.sh Исполняемый файл
Просмотреть файл

@ -0,0 +1,162 @@
#!/bin/sh
#
# Please adjust the below parameters for Your setup.
#
#
SRCDIR=$HOME/WORK/OPENMPI # Where the script and the tar-balls reside
LAST_VERSION=1.0a1r6211 # Should be detected by download
TEST_VERSION=r360
CONFIG_FILE=build-$HOSTNAME.txt
#EMAIL="testing@open-mpi.org"
EMAIL="keller@hlrs.de"
# download "latest" filename
latest_name="latest_snapshot.txt"
#
# This is required on some machines, that do not
# have autoconf-tools (cron passes only a short PATH)
#
export PATH=$HOME/bin:$PATH
if [ "x$HOSTNAME" = "xstrider" ] ; then
export PATH=$PATH:/opt/pathscale/bin
fi
#######################################################
#
# Local functions
#
# find a program from a list and load it into the target variable
find_program() {
var=$1
shift
# first zero out the target variable
str="$var="
eval $str
# loop through the list and save the first one that we find
am_done=
while test -z "$am_done" -a -n "$1" ; do
prog=$1
shift
if test -z "$prog" ; then
am_done=1
else
not_found="`which $prog 2>&1 | egrep '^no'`"
which $prog > /dev/null 2>&1
if test "$?" = "0" -a -z "$not_found" ; then
str="$var=$prog"
eval $str
am_done=1
fi
fi
done
}
dump () {
file=$1
shift
echo "$1" >> $file
}
############################################
# Main part
############################################
if [ \! -d $SRCDIR ] ; then
echo "WARNING $SRCDIR does not exist"
exit
fi
cd $SRCDIR
# figure out what download command to use
find_program download wget lynx curl
if test -z "$download"; then
echo "cannot find downloading program -- aborting in despair"
exit 1
fi
# get the latest snapshot version number
# rm -f "$latest_name"
# $download "$url_arg/$latest_name"
# if test ! -f "$latest_name" ; then
# echo "Could not download latest snapshot number -- aborting"
# exit 1
# fi
# version=$LAST_VERSION
version="`cat $latest_name`"
test_version=$TEST_VERSION
#
# If the config-file does not exist, create one standard test file
#
if [ \! -r $CONFIG_FILE ] ; then
echo "CONFIG_FILE:$CONFIG_FILE does not exist, create default file"
CONFIG_FILE=build_sample_config.txt
rm -f $CONFIG_FILE
echo "gcc:1::--enable-picky" >> $CONFIG_FILE
# echo "default build:::" >> $CONFIG_FILE
# echo "static build:::--disable-shared --enable-static" >> $CONFIG_FILE
# echo "non-threaded build:::--without-threads" >> $CONFIG_FILE
fi
#
# Here comes the main part.
#
perl build_tarball.pl --email $EMAIL --config $CONFIG_FILE --file openmpi-$version.tar.bz2 --leave-install $SRCDIR/ompi-out-$version.txt --install-dir=$HOME/ompi-install --nocheck
if [ \! -r ompi-out-$version.txt ] ; then
echo "No ompi-out-$version.txt file found; none of the configurations have been built?"
exit
fi
#
# Now compile and install the tests for different combinations...
#
perl build_tests.pl --email $EMAIL --config $CONFIG_FILE --file openmpi-tests-$test_version.tar.bz2 --leave-install $SRCDIR/ompi-tests-out-$test_version.txt --outfile $SRCDIR/ompi-out-$version.txt --install-dir=$HOME/ompi-tests-install --nocheck
f="ompi-script-$version"
rm -fr $f
dump $f "#!/bin/bash"
dump $f "#PBS -l nodes=4,walltime=0:10:00" # Four nodes, and 10 minutes are enough
dump $f "#PBS -k eo" # Combine stderr/stdout
dump $f "#PBS -m ae" # Send mail on abort/end of job
dump $f "#PBS -M $EMAIL" # Mail-adresses to send to
dump $f ""
dump $f "OLD_PATH=\$PATH"
dump $f "OLD_LD_LIBRARY_PATH=\$LD_LIBRARY_PATH"
dump $f "rm -fr $HOME/ompi-tmp/openmpi-sessions-*"
dump $f "killall -9 orted"
for MPI_DIR in `cat $SRCDIR/ompi-out-$version.txt` ; do
dump $f " echo Starting to test MPI_DIR:$MPI_DIR"
dump $f " echo -------------------------------------------------"
dump $f " export PATH=$MPI_DIR/bin:\$OLD_PATH"
dump $f " export LD_LIBRARY_PATH=$MPI_DIR/lib:\$OLD_LD_LIBRARY_PATH"
dump $f " rm -fr $HOME/ompi-tmp/openmpi-sessions-*"
# Start the orted deamon in a commonly accessible directory (/tmp is local to each node)
dump $f " orted --tmpdir $HOME/ompi-tmp --seed --persistent --scope public"
for j in `cat $SRCDIR/ompi-tests-out-$test_version.txt` ; do
dump $f " cd $j/bin"
dump $f " mpirun -x LD_LIBRARY_PATH -hostfile \$PBS_NODEFILE -tmpdir $HOME/ompi-tmp -np 8 ./PMB-MPI1 PingPong PingPing Sendrecv Exchange Allreduce Reduce Allgather Allgatherv Alltoall Bcast Barrier"
dump $f " ./tester -m -x LD_LIBRARY_PATH -hostfile \$PBS_NODEFILE -tmpdir $HOME/ompi-tmp -- mpich_all_tests"
dump $f " cd -"
dump $f " echo -------------------------------------------------"
done
dump $f " killall -9 orted"
dump $f " sleep 10"
dump $f " echo -------------------------------------------------"
done
# qsub $SRCDIR/ompi-script-$version