Merge branch 'main' into 18842-arv-mount-disk-config
[arvados.git] / tools / arvbox / lib / arvbox / docker / common.sh
index 54379a5ed3dc49fc8c2cb5456e4ddf44e4acb74f..ba81426f0bfc35a7b916496970edf0cbb9648300 100644 (file)
@@ -6,12 +6,14 @@ export RUBY_VERSION=2.7.0
 export BUNDLER_VERSION=2.2.19
 
 export DEBIAN_FRONTEND=noninteractive
-export PATH=${PATH}:/usr/local/go/bin:/var/lib/arvados/bin
+export PATH=${PATH}:/usr/local/go/bin:/var/lib/arvados/bin:/usr/src/arvados/sdk/cli/binstubs
 export npm_config_cache=/var/lib/npm
 export npm_config_cache_min=Infinity
 export R_LIBS=/var/lib/Rlibs
 export HOME=$(getent passwd arvbox | cut -d: -f6)
 export ARVADOS_CONTAINER_PATH=/var/lib/arvados-arvbox
+export GEM_HOME=$HOME/.gem
+GEMLOCK=$HOME/gems.lock
 
 defaultdev=$(/sbin/ip route|awk '/default/ { print $5 }')
 dockerip=$(/sbin/ip route | grep default | awk '{ print $3 }')
@@ -35,7 +37,6 @@ services=(
   [api]=8004
   [controller]=8003
   [controller-ssl]=8000
-  [composer]=4200
   [arv-git-httpd-ssl]=9000
   [arv-git-httpd]=9001
   [keep-web]=9003
@@ -62,7 +63,7 @@ else
 fi
 
 run_bundler() {
-    /var/lib/arvados/bin/gem install --no-document bundler:$BUNDLER_VERSION
+    flock $GEMLOCK /var/lib/arvados/bin/gem install --no-document --user bundler:$BUNDLER_VERSION
     if test -f Gemfile.lock ; then
         frozen=--frozen
     else
@@ -73,8 +74,13 @@ run_bundler() {
        # If present, use the one associated with rails workbench or API
        BUNDLER=$PWD/bin/bundle
     fi
-    if ! $BUNDLER install --verbose --local --no-deployment $frozen "$@" ; then
-        $BUNDLER install --verbose --no-deployment $frozen "$@"
+
+    if test -z "$(flock $GEMLOCK /var/lib/arvados/bin/gem list | grep 'arvados[[:blank:]].*[0-9.]*dev')" ; then
+        (cd /usr/src/arvados/sdk/ruby && \
+        /var/lib/arvados/bin/gem build arvados.gemspec && flock $GEMLOCK /var/lib/arvados/bin/gem install $(ls -1 *.gem | sort -r | head -n1))
+    fi
+    if ! flock $GEMLOCK $BUNDLER install --verbose --local --no-deployment $frozen "$@" ; then
+        flock $GEMLOCK $BUNDLER install --verbose --no-deployment $frozen "$@"
     fi
 }