From 5d398c5b8dfc57e2fa35a092f0c9e07561da578a Mon Sep 17 00:00:00 2001 From: mquinson Date: Tue, 13 Jul 2004 01:53:51 +0000 Subject: [PATCH] Helper script for compilation on adverse platforms git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@261 48e7efb5-ca39-0410-a469-dd3cf9ba447f --- tools/compile-remote-worker.in | 137 +++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 tools/compile-remote-worker.in diff --git a/tools/compile-remote-worker.in b/tools/compile-remote-worker.in new file mode 100644 index 0000000000..8e47ce4fa3 --- /dev/null +++ b/tools/compile-remote-worker.in @@ -0,0 +1,137 @@ +#! /bin/sh +# @WARNING@ +# It is used to compile on remote hosts + +### +# Configuration +### + +# Where to install the stuff into (REMOTE_PREFIX gets fixed by the makefile) +PREFIX=$REMOTE_PREFIX + +# Where extra libraries are installed (if any) +LD_LIBRARY_PATH="$PREFIX/lib" + +# Extra environment to pass to configure +CONFIGURE_ENV="" + +# Argument of configure +CONFIGURE_ARGS="--prefix=$PREFIX/@PACKAGE@" + +# make target +MAKE_ALL="clean all" +MAKE_INSTALL=install +MAKE_CHECK="-k check" + +echo "Launching $0" + +### +# Magic to search a working shell (from autobook) +### +# Zsh is not Bourne compatible without the following: +if test -n "$ZSH_VERSION"; then + emulate sh + NULLCMD=: +fi + +# Bash is not POSIX compliant without the following: +test -n "$BASH_VERSION" && set -o posix + +SHELL="${SHELL-/bin/sh}" +if test x"$1" = x--re-executed; then + # Functional shell was found. Remove option and continue + shift +elif "$SHELL" -c 'foo () { exit 0; }; foo' 2>/dev/null && + "$SHELL" -c 'export toto=tutu' 2>/dev/null ; then + # The current shell works already! + echo "Current shell ($SHELL) working" +else + # Try alternative shells that (sometimes) support functions + for cmd in bash sh ash bsh ksh zsh sh5 + do + for dir in `echo $PATH | sed -e 's/:/ /g'` /bin /usr/bin + do + shell="$dir/$cmd" + if (test -f "$shell" || test -f "$shell.exe") && + "$shell" -c 'foo () { exit 0; }; foo' 2>/dev/null && + "$shell" -c 'export toto=tutu' 2>/dev/null + then + # Re-execute with discovered functional shell + echo "Reexecute $0 $@ with shell $shell" + SHELL="$shell" exec "$shell" "$0" --re-executed ${1+"$@"} + fi + done + done + echo "Unable to locate a shell interpreter with function support and export syntax" >&2 + exit 1 +fi + + + +### +# Real script +### +# expend the path for solaris +PATH="$PATH:/usr/xpg4/bin" +export PATH + +fail () { + echo $1; + echo CONFIG-LOG-DUMP-BEGIN + cat config.log + echo CONFIG-LOG-DUMP-END + exit 1; +} + +printenv; +echo PATH=$PATH + +cd $PREFIX/src || fail "Cannot cd to $PREFIX/src" + +do_cmd() { + echo "Do $1" + eval `echo $1` 2>&1 || fail "$2" + echo "Done $1" +} + +if echo $@ | grep clean >/dev/null ; then + for name in @PACKAGE@* ; do + if test "$name" != "@PACKAGE@-@VERSION@.tar.gz" ; then + echo "XXX Remove $name"; + rm -rf $name; + fi; + done; + + echo "XXX Untar @PACKAGE@-@VERSION@" + do_cmd "gunzip @PACKAGE@-@VERSION@.tar.gz" "Cannot gunzip" + do_cmd "tar xf @PACKAGE@-@VERSION@.tar" "Cannot untar" +fi + +if echo $@ | grep touch >/dev/null ; then + echo "XXX Touch everything within the tarball" + find @PACKAGE@-@VERSION@ -type f | while read f; do touch $f;done + sleep 2 +fi +cd @PACKAGE@-@VERSION@ || fail "Cannot cd to @PACKAGE@-@VERSION@" + +if echo $@ | grep config >/dev/null ; then + do_cmd "env $CONFIGURE_ENV \ + ./configure $CONFIGURE_ARGS" "Cannot configure" +fi + +if echo $@ | grep compile >/dev/null ; then + do_cmd "make $MAKE_ALL" "Cannot make" +fi + +if echo $@ | grep install >/dev/null ; then + do_cmd "make $MAKE_INSTALL" "Cannot make install" +fi + +if echo $@ | grep check >/dev/null ; then + do_cmd "make $MAKE_CHECK 2>&1" || fail "Cannot make check" +fi + +echo +echo +echo Remote compilation sucessful. +exit 0 -- 2.20.1