Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
fd8c719125d45057d864fc6283d2030b664e377d
[simgrid.git] / buildtools / scripts / simgrid_build.functions
1 # This file defines a bunch of useful functions to automatize the build of SimGrid.
2
3
4
5 # get_version: define the version number of the svn into a version variable
6 get_version() {
7   if [ x$version = x ] ; then
8     cd ${SIMGRID_SVN_ROOT}
9     if [ -e .svn ] ; then
10       svn up 2>/dev/null
11       if [ $? = 0 ] ; then
12         version="simgrid-3.3.4-svn-r"`svnversion`
13       else
14         version="simgrid-3.3.4-svn-r"`head -n 4 .svn/entries |tail -n 1`
15       fi
16     else if [ -e .git ] ; then
17       version="simgrid-3.3.4-git-r"`git log --oneline -1 | sed 's| .*||'`
18     fi fi
19     export version
20   fi
21 }
22
23 # wait_archive: wait until the archive gets defined into the right position
24 wait_archive() {
25   while [ ! -e ${SIMGRID_BASEDIR}/${version}.tar.gz ] ; do
26     echo ${SIMGRID_BASEDIR}/${version}.tar.gz not found. Wait five seconds.
27     sleep 5
28   done
29 }
30
31 # make_dist: rebuild an archive from the svn
32 make_dist() {
33   get_version
34   if [ ! -e ${SIMGRID_BASEDIR}/${version}.tar.gz ] ; then
35     cd ${SIMGRID_SVN_ROOT}
36     echo "rebuild the missing files for compilation"
37     if [ ! -e configure ] ; then
38       ./bootstrap
39     fi
40     # Reconfigure in any case or the svn version won't get updated
41     # (disable compilation optim to make it built faster)
42     ./configure --enable-maintainer-mode --disable-compile-optimizations
43     echo "Make the archive"
44     make -C src libgras.la
45     make -C tools/gras
46     make dist
47
48     echo "Copy the archive in position"
49     mkdir -p ${SIMGRID_BASEDIR}
50     mv ${version}.tar.gz ${SIMGRID_BASEDIR}
51   else
52     echo "${SIMGRID_BASEDIR}/${version}.tar.gz already exists. Don't rebuild"
53   fi
54 }
55
56 # clean_node: remove everything about this node
57 clean_node() {
58   OS=`uname`
59   node=`uname -n`
60   # OS specific working directory 
61   BUILDDIR=${SIMGRID_BASEDIR}/$OS/$node/$version
62   export BUILDDIR
63   
64   # Clean any leftover from previous install
65   if [ -e $BUILDDIR ] ; then
66     echo "remove old directory $BUILDDIR"
67     rm -rf $BUILDDIR
68   fi
69   mkdir -p $BUILDDIR
70 }
71
72 # open_archive: wait for archive to be built, cleanup previous
73 open_archive() {
74   get_version
75   clean_node
76   wait_archive
77   cd $BUILDDIR/..
78   tar xfz ${SIMGRID_BASEDIR}/${version}.tar.gz
79   cd $BUILDDIR
80 }
81