X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e97a5d828bdf7cb9626d72efd94d3bcf718a18c9..09cbdc3074b3f1e69c9c537875146f6da0a6ed8f:/tools/arvbox/lib/arvbox/docker/common.sh diff --git a/tools/arvbox/lib/arvbox/docker/common.sh b/tools/arvbox/lib/arvbox/docker/common.sh index 185467cf7d..ba81426f0b 100644 --- a/tools/arvbox/lib/arvbox/docker/common.sh +++ b/tools/arvbox/lib/arvbox/docker/common.sh @@ -2,13 +2,18 @@ # # SPDX-License-Identifier: AGPL-3.0 +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/gems/bin -export GEM_HOME=/var/lib/gems +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 }') @@ -19,10 +24,10 @@ else localip=$containerip fi -root_cert=/var/lib/arvados/root-cert.pem -root_cert_key=/var/lib/arvados/root-cert.key -server_cert=/var/lib/arvados/server-cert-${localip}.pem -server_cert_key=/var/lib/arvados/server-cert-${localip}.key +root_cert=$ARVADOS_CONTAINER_PATH/root-cert.pem +root_cert_key=$ARVADOS_CONTAINER_PATH/root-cert.key +server_cert=$ARVADOS_CONTAINER_PATH/server-cert-${localip}.pem +server_cert_key=$ARVADOS_CONTAINER_PATH/server-cert-${localip}.key declare -A services services=( @@ -32,11 +37,11 @@ services=( [api]=8004 [controller]=8003 [controller-ssl]=8000 - [composer]=4200 [arv-git-httpd-ssl]=9000 [arv-git-httpd]=9001 [keep-web]=9003 [keep-web-ssl]=9002 + [keep-web-dl-ssl]=9004 [keepproxy]=25100 [keepproxy-ssl]=25101 [keepstore0]=25107 @@ -58,26 +63,24 @@ else fi run_bundler() { + flock $GEMLOCK /var/lib/arvados/bin/gem install --no-document --user bundler:$BUNDLER_VERSION if test -f Gemfile.lock ; then - # The 'gem install bundler line below' is cf. - # https://bundler.io/blog/2019/05/14/solutions-for-cant-find-gem-bundler-with-executable-bundle.html, - # until we get bundler 2.7.10/3.0.0 or higher - gem install bundler --no-document -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1|tr -d ' ')" frozen=--frozen else frozen="" fi - # if ! test -x /var/lib/gems/bin/bundler ; then - # bundleversion=2.0.2 - # bundlergem=$(ls -r $GEM_HOME/cache/bundler-${bundleversion}.gem 2>/dev/null | head -n1 || true) - # if test -n "$bundlergem" ; then - # flock /var/lib/gems/gems.lock gem install --verbose --local --no-document $bundlergem - # else - # flock /var/lib/gems/gems.lock gem install --verbose --no-document bundler --version ${bundleversion} - # fi - # fi - if ! flock /var/lib/gems/gems.lock bundler install --verbose --local --no-deployment $frozen "$@" ; then - flock /var/lib/gems/gems.lock bundler install --verbose --no-deployment $frozen "$@" + BUNDLER=bundle + if test -x $PWD/bin/bundle ; then + # If present, use the one associated with rails workbench or API + BUNDLER=$PWD/bin/bundle + fi + + 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 }