# This file defines a bunch of useful functions to automatize the build of SimGrid. # get_version: define the version number of the svn into a version variable get_version() { if [ x$version = x ] ; then cd ${SIMGRID_SVN_ROOT} if [ -e .svn ] ; then set +e svn up 2>/dev/null if [ $? = 0 ] ; then version="simgrid-3.3.4-svn-r"`svnversion` else version="simgrid-3.3.4-svn-r"`head -n 4 .svn/entries |tail -n 1` fi set -e else if [ -e .git ] ; then version="simgrid-3.3.4-git-r"`git log --oneline -1 | sed 's| .*||'` fi fi export version fi } # wait_archive: wait until the archive gets defined into the right position wait_archive() { while [ ! -e ${SIMGRID_BASEDIR}/${version}.tar.gz ] ; do echo ${SIMGRID_BASEDIR}/${version}.tar.gz not found. Wait five seconds. sleep 5 done } # make_dist: rebuild an archive from the svn make_dist() { get_version if [ ! -e ${SIMGRID_BASEDIR}/${version}.tar.gz ] ; then cd ${SIMGRID_SVN_ROOT} echo "rebuild the missing files for compilation" if [ ! -e configure ] ; then ./bootstrap fi # Reconfigure in any case or the svn version won't get updated # (disable compilation optim to make it built faster) ./configure --enable-maintainer-mode --disable-compile-optimizations echo "Make the archive" make -C src libgras.la make -C tools/gras make dist echo "Copy the archive in position" mkdir -p ${SIMGRID_BASEDIR} mv ${version}.tar.gz ${SIMGRID_BASEDIR} else echo "${SIMGRID_BASEDIR}/${version}.tar.gz already exists. Don't rebuild" fi } # clean_node: remove everything about this node clean_node() { OS=`uname` node=`uname -n` # OS specific working directory BUILDDIR=${SIMGRID_BASEDIR}/$OS/$node/$version export BUILDDIR # Clean any leftover from previous install if [ -e $BUILDDIR ] ; then echo "remove old directory $BUILDDIR" rm -rf $BUILDDIR fi mkdir -p $BUILDDIR } # open_archive: wait for archive to be built, cleanup previous open_archive() { get_version clean_node wait_archive cd $BUILDDIR/.. tar xfz ${SIMGRID_BASEDIR}/${version}.tar.gz cd $BUILDDIR }