shellfiles/build_stx_libjava.sh
changeset 112 8df32339b6cd
child 113 28d9dbbe08c2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/shellfiles/build_stx_libjava.sh	Thu Feb 07 09:31:05 2013 +0100
@@ -0,0 +1,148 @@
+#!/bin/bash
+
+# Simple Unix shell script to build STX:LIBJAVA using Jenkins CI
+# Actually, it is used on Windows (with UnxUtils) as well.
+
+PROJECT="STX_LIBJAVA"
+
+# Determine operating system, bit simple but works
+if [ "$OS" == "Windows_NT" ]; then
+    WIN32=1
+    UNIX=0
+else
+    WIN32=0
+    UNIX=1
+fi
+
+if [ "$1" == "-tests" ]; then
+    SKIP_CHECKOUT=yes
+    SKIP_COMPILE=yes
+    SKIP_ARTIFACTS=yes
+
+    RUN_REPORTS=yes
+fi
+
+
+
+
+# Setup...
+if [ "$WIN32" == "1" ]; then
+    # WINDOWS
+    # MUST export this, otherwise libjpeg fails to build!!!"
+    export BCB="C:\Borland\BCC55"
+    # To make cvs/ssh happy
+    export CVS_RSH=plink
+    # Set home
+    export HOME=$USERPROFILE
+    # Defaults
+    export CVSROOT=":pserver:jenkinsBuild:blablu@cvs.bh.exept.de:/cvs/stx"
+    # Make using bmake here..."
+    MAKE="cmd /C bmake.bat"
+else
+    # LINUX
+    # to get Mercurial
+    export PATH=$PATH:/home/vrany/bin
+    # Make using regular make here..."
+    MAKE=make
+    # Defaults
+    export CVSROOT="/cvs/stx"
+fi
+
+
+
+# Sorry, it's lot easier for JV to have all the messages in EN :-)
+export LANG=en_GB.UTF-8
+
+
+# When run interactively, Jenkins env variables
+# may not be set...
+if [ -z "$WORKSPACE" ]; then
+  WORKSPACE="$PWD"
+    INTERACTIVE=1
+else
+    INTERACTIVE=0
+fi
+
+if [ "$INTERACTIVE" == "0" ]; then
+  if [ "$WIN32" == "1" ]; then
+    WORKSPACE="$PWD"
+  fi
+fi
+
+if [ -z "$BUILD_NUMBER" ]; then
+    BUILD_NUMBER=$(date +%Y_%m_%d_interactive)
+fi
+
+#BUILD="$WORKSPACE/${PROJECT}_${BUILD_NUMBER}_linux_build"
+BUILD="build"
+
+
+echo "INFO: BUILD=\"$BUILD\""
+
+if [ -d "$BUILD" ]; then
+  echo "WARN: Build directory already exists!"
+else
+    mkdir -p "$BUILD"
+fi
+
+pushd "$BUILD"
+
+if [ -z "$SKIP_CHECKOUT" ]; then
+
+    echo "INFO: Checking out source code"
+    
+    # Checkout stx
+    if [ ! -d stx ]; then
+      if ! cvs co stx; then
+        echo "ERROR: CVS: Cannot checkout stx";  
+        exit;
+      fi
+    else
+      (cd stx && cvs update)
+    fi
+    
+    # Checkout stx:libjava
+    if [ -d stx/libjava/CVS ]; then
+      rm -rf stx/libjava
+    fi
+
+    if [ ! -d stx/libjava ]; then
+      if ! hg clone https://swing.fit.cvut.cz/hg/stx.libjava/ stx/libjava -b development;  then
+        echo "ERROR: HG: Cannot clone stx/libjava";  
+        exit;
+      fi     
+    else 
+      if ! hg --cwd stx/libjava pull;  then
+        echo "ERROR: HG: Cannot pull stx/libjava";  
+        exit;
+      fi
+      if ! hg --cwd stx/libjava update;  then
+        echo "ERROR: HG: Cannot update stx/libjava";  
+        exit;
+      fi
+    fi
+
+else
+    echo "INFO: Checkout skipped (SKIP_CHECKOUT=$SKIP_CHECKOUT)"
+fi
+
+# Compile
+
+if [ -z "$SKIP_COMPILE" ]; then
+
+    echo "INFO: Compiling"
+    TARGETS1="stx stx/libjava stx/goodies/petitparser stx/libjava/tools stx/libjava/experiments stx/projects/smalltalk stx/librun"
+    for target in $TARGETS1; do
+      if ! (cd "$target" && $MAKE); then
+        echo "ERROR:  cannot $MAKE in $target"
+        exit 3
+      fi
+    done
+  
+else
+    echo "INFO: Compilation skipped (SKIP_COMPILE=$SKIP_COMPILE)"
+fi
+
+popd
+
+echo "INFO: $PROJECT SUCCESSFULLY BUILT"