shellfiles/build_stx_libjava.sh
changeset 112 8df32339b6cd
child 113 28d9dbbe08c2
equal deleted inserted replaced
111:d0fa0756222b 112:8df32339b6cd
       
     1 #!/bin/bash
       
     2 
       
     3 # Simple Unix shell script to build STX:LIBJAVA using Jenkins CI
       
     4 # Actually, it is used on Windows (with UnxUtils) as well.
       
     5 
       
     6 PROJECT="STX_LIBJAVA"
       
     7 
       
     8 # Determine operating system, bit simple but works
       
     9 if [ "$OS" == "Windows_NT" ]; then
       
    10     WIN32=1
       
    11     UNIX=0
       
    12 else
       
    13     WIN32=0
       
    14     UNIX=1
       
    15 fi
       
    16 
       
    17 if [ "$1" == "-tests" ]; then
       
    18     SKIP_CHECKOUT=yes
       
    19     SKIP_COMPILE=yes
       
    20     SKIP_ARTIFACTS=yes
       
    21 
       
    22     RUN_REPORTS=yes
       
    23 fi
       
    24 
       
    25 
       
    26 
       
    27 
       
    28 # Setup...
       
    29 if [ "$WIN32" == "1" ]; then
       
    30     # WINDOWS
       
    31     # MUST export this, otherwise libjpeg fails to build!!!"
       
    32     export BCB="C:\Borland\BCC55"
       
    33     # To make cvs/ssh happy
       
    34     export CVS_RSH=plink
       
    35     # Set home
       
    36     export HOME=$USERPROFILE
       
    37     # Defaults
       
    38     export CVSROOT=":pserver:jenkinsBuild:blablu@cvs.bh.exept.de:/cvs/stx"
       
    39     # Make using bmake here..."
       
    40     MAKE="cmd /C bmake.bat"
       
    41 else
       
    42     # LINUX
       
    43     # to get Mercurial
       
    44     export PATH=$PATH:/home/vrany/bin
       
    45     # Make using regular make here..."
       
    46     MAKE=make
       
    47     # Defaults
       
    48     export CVSROOT="/cvs/stx"
       
    49 fi
       
    50 
       
    51 
       
    52 
       
    53 # Sorry, it's lot easier for JV to have all the messages in EN :-)
       
    54 export LANG=en_GB.UTF-8
       
    55 
       
    56 
       
    57 # When run interactively, Jenkins env variables
       
    58 # may not be set...
       
    59 if [ -z "$WORKSPACE" ]; then
       
    60   WORKSPACE="$PWD"
       
    61     INTERACTIVE=1
       
    62 else
       
    63     INTERACTIVE=0
       
    64 fi
       
    65 
       
    66 if [ "$INTERACTIVE" == "0" ]; then
       
    67   if [ "$WIN32" == "1" ]; then
       
    68     WORKSPACE="$PWD"
       
    69   fi
       
    70 fi
       
    71 
       
    72 if [ -z "$BUILD_NUMBER" ]; then
       
    73     BUILD_NUMBER=$(date +%Y_%m_%d_interactive)
       
    74 fi
       
    75 
       
    76 #BUILD="$WORKSPACE/${PROJECT}_${BUILD_NUMBER}_linux_build"
       
    77 BUILD="build"
       
    78 
       
    79 
       
    80 echo "INFO: BUILD=\"$BUILD\""
       
    81 
       
    82 if [ -d "$BUILD" ]; then
       
    83   echo "WARN: Build directory already exists!"
       
    84 else
       
    85     mkdir -p "$BUILD"
       
    86 fi
       
    87 
       
    88 pushd "$BUILD"
       
    89 
       
    90 if [ -z "$SKIP_CHECKOUT" ]; then
       
    91 
       
    92     echo "INFO: Checking out source code"
       
    93     
       
    94     # Checkout stx
       
    95     if [ ! -d stx ]; then
       
    96       if ! cvs co stx; then
       
    97         echo "ERROR: CVS: Cannot checkout stx";  
       
    98         exit;
       
    99       fi
       
   100     else
       
   101       (cd stx && cvs update)
       
   102     fi
       
   103     
       
   104     # Checkout stx:libjava
       
   105     if [ -d stx/libjava/CVS ]; then
       
   106       rm -rf stx/libjava
       
   107     fi
       
   108 
       
   109     if [ ! -d stx/libjava ]; then
       
   110       if ! hg clone https://swing.fit.cvut.cz/hg/stx.libjava/ stx/libjava -b development;  then
       
   111         echo "ERROR: HG: Cannot clone stx/libjava";  
       
   112         exit;
       
   113       fi     
       
   114     else 
       
   115       if ! hg --cwd stx/libjava pull;  then
       
   116         echo "ERROR: HG: Cannot pull stx/libjava";  
       
   117         exit;
       
   118       fi
       
   119       if ! hg --cwd stx/libjava update;  then
       
   120         echo "ERROR: HG: Cannot update stx/libjava";  
       
   121         exit;
       
   122       fi
       
   123     fi
       
   124 
       
   125 else
       
   126     echo "INFO: Checkout skipped (SKIP_CHECKOUT=$SKIP_CHECKOUT)"
       
   127 fi
       
   128 
       
   129 # Compile
       
   130 
       
   131 if [ -z "$SKIP_COMPILE" ]; then
       
   132 
       
   133     echo "INFO: Compiling"
       
   134     TARGETS1="stx stx/libjava stx/goodies/petitparser stx/libjava/tools stx/libjava/experiments stx/projects/smalltalk stx/librun"
       
   135     for target in $TARGETS1; do
       
   136       if ! (cd "$target" && $MAKE); then
       
   137         echo "ERROR:  cannot $MAKE in $target"
       
   138         exit 3
       
   139       fi
       
   140     done
       
   141   
       
   142 else
       
   143     echo "INFO: Compilation skipped (SKIP_COMPILE=$SKIP_COMPILE)"
       
   144 fi
       
   145 
       
   146 popd
       
   147 
       
   148 echo "INFO: $PROJECT SUCCESSFULLY BUILT"