SIP2: Return slightly more hold info
[working/Evergreen.git] / build / tools / update.sh
index 55b28a1..75f1f65 100755 (executable)
@@ -5,14 +5,14 @@
 # 
 # Based on initial version by Bill Erickson.
 
-function svn_or_git {
-    echo -en "###########\nUpdating source directory: ";
-    pwd;
+function fetch_changes {
+    echo -en "###########\nUpdating source directory:" `pwd` "\n";
     if [ -d "./.git" ]; then
-        git svn fetch;
-        git svn rebase origin;
+        git fetch;
+        # git rebase origin || die_msg "git rebase origin failed";
     else
-        svn update;
+        echo "You don't appear to be using Git yet, please fix that"
+        exit 1;
     fi
 }
 
@@ -37,7 +37,7 @@ function usage {
 usage: $0 [-e /eg_trunk] [-i /openils_dir] [-s /srf_trunk] [-[cfbvt]]
 
 PARAMETERS:
-   -e  specify Evergreen (OpenILS) source repository (default ~/ILS/trunk)
+   -e  specify Evergreen (OpenILS) source repository (default pwd)
    -i  specify Evergreen installed directory (default /openils)
    -s  specify OpenSRF source repository (default ~/OpenSRF/trunk)
 
@@ -53,10 +53,11 @@ The purpose of this script is to consolidate a lot of the annoying
 and error-prone tasks associated with an upgrade for a developer.
 
 Considerations:
- * Run as opensrf.  
+ * Run as opensrf user
  * opensrf needs sudo 
- * Assumes opensrf has a configured (as in ./configure) both ILS and 
-   OpenSRF as svn or git-svn checkouts
+ * Assumes opensrf has OpenILS and OpenSRF repositories as Git
+   checkouts and both have been configured (as in ./configure) 
+  
 END_OF_USAGE
 }
 
@@ -91,8 +92,9 @@ BASE=~      # default to $HOME (~ doesn't like :- syntax for whatever reason)
 [ -z "$OPT_BASEDIR" ] || BASE="$OPT_BASEDIR";
 
 OSRF=${OPT_OSRFDIR:-$BASE/OpenSRF/trunk};
-ILS=${OPT_EGDIR:-$BASE/ILS/trunk};
+ILS=${OPT_EGDIR:-$(pwd)};
 XUL="$INSTALL/var/web/xul";
+JSDIR="$INSTALL/lib/javascript";    # only used for FULL install
 
 # ----------------------------------
 # TEST and SANITY CHECK
@@ -103,6 +105,8 @@ XUL="$INSTALL/var/web/xul";
 [ ! -d "$OSRF"    ]   && die_msg "OpenSRF Source Directory '$OSRF' does not exist!";
 which sudo >/dev/null || die_msg "sudo not installed (or in PATH)";
 
+[ -d "${ILS}/.git" ] || [ -d ${ILS}/.bzr ] || die_msg "Evergreen Source Directory '$ILS' is not a SVN, bzr or git repo";
+
 if [ ! -z "$OPT_TEST" ] ; then
     feedback;
     exit;
@@ -111,6 +115,9 @@ fi
 # ----------------------------------
 # MAIN
 # ----------------------------------
+if [ -n "$OPT_FULL"  ]; then
+    echo; echo; echo '*** Performing FULL installation ***' ; echo; echo;
+fi
 if [ -z "$OPT_VERBOSE" ] ; then
     echo "Running with some make output suppressed.  To see all output, run $0 with -v (verbose)";
     echo "This may take a few minutes... ";
@@ -128,38 +135,64 @@ $INSTALL/bin/osrf_ctl.sh -l -a stop_all;
 # OpenSRF perl directory is not shared.  update the drone
 # ssh 10.5.0.202 "./update_osrf_perl.sh";
 
-cd $OSRF; svn_or_git;
-cd $ILS;  svn_or_git;
+cd $OSRF; fetch_changes;
+cd $ILS;  fetch_changes;
 
 if [ -n "$OPT_CLEAN" ]; then
     cd $OSRF && make clean;
     cd $ILS  && make clean;
 fi
 
-if [ -z "$OPT_FULL"  ]; then
+if [ -n "$OPT_FULL"  ]; then
     cd $OSRF && make;
     cd $ILS  && make;
     cd $OSRF && sudo make install;
+    if [ -d "$JSDIR" ]; then
+        echo "Copying OpenSRF javascript files into $JSDIR";
+        cp ./src/javascript/* $JSDIR;
+    fi
 fi
 sudo chown -R opensrf:opensrf $INSTALL
 
-BID=$(date +"%Y-%m-%dT%H:%M:%S");   # or "current"
-cd $ILS && sudo make install STAFF_CLIENT_BUILD_ID=$BID;
+BIDDATE=$(date +"%Y-%m-%dT%H:%M:%S");
+BID=${STAFF_CLIENT_BUILD_ID:-$BIDDATE};   # or "current"
+
+rm -f "$XUL/current" || rm -rf "$XUL/current";      # removing the old link/build
+cd $ILS && sudo make install STAFF_CLIENT_STAMP_ID=$BID STAFF_CLIENT_BUILD_ID=$BID;
 sudo chown -R opensrf:opensrf $INSTALL
 
+[ -d "$XUL/$BID" ] || die_msg "New build directory $XUL/$BID was not created.  sudo make install failed?";
+
 if [ -z "$OPT_VERBOSE" ] ; then
     exec 1>&3   # Restore STDOUT
 fi
 
 cd $XUL || die_msg "Could not cd to $XUL";
 pwd;
-rm -f ./current-client-build.zip;
+rm -f $XUL/current-client-build.zip;
 cp -r "$ILS/Open-ILS/xul/staff_client/build" ./
 zip -rq current-client-build.zip build;
+echo -n "BUILD_ID: ";
+cat ./build/BUILD_ID;
+echo -n "STAMP_ID: ";
+cat ./build/STAMP_ID;
+echo -n " VERSION: ";
+cat ./build/VERSION;
 rm -rf ./build;
+
+echo "build ID is '$BID'";
+
+if [ "$BID" != "$BIDDDATE" ] ; then
+    mv $BID $BIDDATE;    # Move the non-timestamp directory to timestamp-based spot
+    ln -s $BIDDATE $BID; # link back to it
+fi
+
 rm -f current;      # removing the link to the old build
-ln -s $BID current; # linking "current" to the new build
+ln -s $BIDDATE current; # linking "current" to the new build
+
+rm -f server;
 ln -s current/server server;
+    
 
 sudo chown -R opensrf:opensrf $OSRF $ILS
 $INSTALL/bin/osrf_ctl.sh -l -a start_all
@@ -167,3 +200,4 @@ sleep 2;
 cd $INSTALL/bin; ./autogen.sh ../conf/opensrf_core.xml;
 sudo /etc/init.d/apache2 start;
 
+echo $'done\a'  # \a = Bell character for beep