You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@buildr.apache.org by do...@apache.org on 2012/10/07 09:00:23 UTC
svn commit: r1395237 - /buildr/trunk/ci.sh
Author: donaldp
Date: Sun Oct 7 07:00:23 2012
New Revision: 1395237
URL: http://svn.apache.org/viewvc?rev=1395237&view=rev
Log:
Add in a mechanism for moving and upgrading rvm and add some traps to ensure the locks are correctly removed
Modified:
buildr/trunk/ci.sh
Modified: buildr/trunk/ci.sh
URL: http://svn.apache.org/viewvc/buildr/trunk/ci.sh?rev=1395237&r1=1395236&r2=1395237&view=diff
==============================================================================
--- buildr/trunk/ci.sh (original)
+++ buildr/trunk/ci.sh Sun Oct 7 07:00:23 2012
@@ -42,15 +42,57 @@ else
export BUILDR_RUBY_VERSION=ruby-1.9.3-p194
fi
-# TODO: Use traps to remove lock files
-# See http://stackoverflow.com/questions/169964/how-to-prevent-a-script-from-running-simultaneously
+function __sig_exit {
+ echo "Cleaing up locks"
+ rm -rf mkdir "$HOME/.rvm_lock"
+}
+
+function __sig_int {
+ echo "WARNING: SIGINT caught"
+ exit 1002
+}
+
+function __sig_quit {
+ echo "SIGQUIT caught"
+ exit 1003
+}
+
+function __sig_term {
+ echo "WARNING: SIGTERM caught"
+ exit 1015
+}
+
+function __sig_noop {
+ true
+}
+
+while ! `mkdir "$HOME/.rvm_lock" 2> /dev/null`; do
+ echo "Waiting"
+ sleep 1
+done
+
+trap __sig_exit EXIT # SIGEXIT
+trap __sig_int INT # SIGINT
+trap __sig_quit QUIT # SIGQUIT
+trap __sig_term TERM # SIGTERM
+export BUILDR_GEMSET=${BUILDR_GEMSET-CI_$BUILD_JVM}
+export PATH=$JAVA_HOME/bin:$PATH
export PATH=$PATH:$HOME/.rvm/bin
+
+export EXPECTED_RVM=random_value
+export CURRENT_RVM=`cat "$HOME/.rvm_install" 2> /dev/null`
+if [ "X$CURRENT_RVM" != "X$EXPECTED_RVM" ]; then
+ echo Removing old RVM version
+ rm -rf "$HOME/.rvm"
+fi
+
if [[ ! -s "$HOME/.rvm/scripts/rvm" ]]; then
- curl -L https://get.rvm.io | bash -s stable
+ curl -L https://get.rvm.io | bash -s stable --auto
+ echo $EXPECTED_RVM > "$HOME/.rvm_install"
source "$HOME/.rvm/scripts/rvm"
touch "$HOME/.rvm_ci_update"
-elif mkdir "$HOME/.rvm_lock"; then
+else
if [[ ! -s "$HOME/.rvm_ci_update" ]]; then
touch "$HOME/.rvm_ci_update"
fi
@@ -59,11 +101,15 @@ elif mkdir "$HOME/.rvm_lock"; then
rvm get stable --auto
touch "$HOME/.rvm_ci_update"
fi
- rmdir "$HOME/.rvm_lock"
fi
-export BUILDR_GEMSET=${BUILDR_GEMSET-CI_$BUILD_JVM}
-export PATH=$JAVA_HOME/bin:$PATH
+rmdir "$HOME/.rvm_lock"
+
+trap __sig_noop EXIT # SIGEXIT
+trap __sig_noop INT # SIGINT
+trap __sig_noop QUIT # SIGQUIT
+trap __sig_noop TERM # SIGTERM
+
source "$HOME/.rvm/scripts/rvm"
rvm ${BUILDR_RUBY_VERSION} --force gemset delete ${BUILDR_GEMSET} 2>&1 > /dev/null