#!/bin/sh # # $HEADER$ # # This script is used to make a nightly snapshot tarball of Open MPI. # # $1: scratch root # $2: e-mail address for destination # $3: SVN root # $4: dest dir # scratch_root="$1" email="$2" svnroot="$3" destdir="$4" # Set this to any value for additional output; typically only when # debugging debug= # do you want a success mail? want_success_mail=1 # how many snapshots to keep in the destdir? max_snapshots=5 ############################################################################ # Shouldn't need to change below this line ############################################################################ start_time="`date`" # Sanity checks if test -z "$scratch_root" -o -z "$email" -o -z "$svnroot" \ -o -z "$destdir"; then echo "Must specify scratch root directory, e-mail address, SVN root, and destination directory" exit 1 fi # send a mail # should only be called after logdir is set send_error_mail() { outfile="$scratch_root/output.txt" rm -f "$outfile" touch "$outfile" for file in `/bin/ls $logdir/* | sort`; do cat "$file" >> "$outfile" done Mail -s "=== CREATE ERROR ===" "$email" < "$outfile" rm -f "$outfile" } # send output error message die() { msg="$*" cat > "$logdir/00_announce.txt" < "$logfile" 2>&1 st=$? echo "*** Command complete: exit status: $st" else eval $cmd > "$logfile" 2>&1 st=$? fi if test "$st" != "0"; then cat > "$logdir/15-error.txt" < "$logdir/25-error.txt" < /dev/null 2>&1 cd ompi svnr="r`svn info . | egrep '^Revision: [0-9]+' | awk '{ print $2 }'`" cd .. rm -rf ompi root="$scratch_root/create-$svnr" rm -rf "$root" mkdir "$root" cd "$root" # startup the logfile logdir="$root/logs" mkdir "$logdir" # checkout a clean version do_command "svn co $svnroot ompi" # lets work on it cd ompi svnversion="`svnversion .`" # autogen is our friend do_command "./autogen.sh" # do config do_command "./configure --enable-dist" # do make dist do_command "make dist" # move the resulting tarballs to the destdir gz="`/bin/ls openmpi*tar.gz`" bz2="`/bin/ls openmpi*tar.bz2`" mv $gz $bz2 $destdir cd $destdir # make the latest_snapshot.txt file containing the last version version="`echo $gz | sed -e 's/openmpi-\(.*\)\.tar\.gz/\1/g'`" rm -f latest_snapshot.txt echo $version > latest_snapshot.txt # trim the destdir to $max_snapshots for ext in gz bz2; do count="`ls openmpi*.tar.$ext | wc -l | awk '{ print $1 }'`" if test "`expr $count \> $max_snapshots`" = "1"; then num_old="`expr $count - $max_snapshots`" old="`ls -rt openmpi*.tar.$ext | head -$num_old`" rm -f $old fi done # generate md5 and sha1 sums rm -f md5sums.txt sha1sums.txt touch md5sums.txt sha1sums.txt for file in `/bin/ls *gz *bz2 | grep -v latest`; do md5sum $file >> md5sums.txt sha1sum $file >> sha1sums.txt done # remove temp dirs cd "$scratch_root" rm -rf "$root" # send success mail if test "$want_success_mail" = "1"; then Mail -s "Success" "$email" <