21200: copied branch from arvados-workbench2 Arvados-DCO-1.1-Signed-off-by: Lisa...
[arvados.git] / tools / arvbox / lib / arvbox / docker / common.sh
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 export RUBY_VERSION=3.2.2
6 export BUNDLER_VERSION=2.4.22
7
8 export DEBIAN_FRONTEND=noninteractive
9 export PATH=${PATH}:/usr/local/go/bin:/var/lib/arvados/bin:/usr/src/arvados/sdk/cli/binstubs
10 export npm_config_cache=/var/lib/npm
11 export npm_config_cache_min=Infinity
12 export R_LIBS=/var/lib/Rlibs
13 export HOME=$(getent passwd arvbox | cut -d: -f6)
14 export ARVADOS_CONTAINER_PATH=/var/lib/arvados-arvbox
15 export GEM_HOME=$HOME/.gem
16 GEMLOCK=$HOME/gems.lock
17
18 export LANG=en_US.UTF-8
19 export LANGUAGE=en_US:en
20 export LC_ALL=en_US.UTF-8
21
22 defaultdev=$(/sbin/ip route|awk '/default/ { print $5 }')
23 dockerip=$(/sbin/ip route | grep default | awk '{ print $3 }')
24 containerip=$(ip addr show $defaultdev | grep 'inet ' | sed 's/ *inet \(.*\)\/.*/\1/')
25 if test -s /var/run/localip_override ; then
26     localip=$(cat /var/run/localip_override)
27 else
28     localip=$containerip
29 fi
30
31 root_cert=$ARVADOS_CONTAINER_PATH/root-cert.pem
32 root_cert_key=$ARVADOS_CONTAINER_PATH/root-cert.key
33 server_cert=$ARVADOS_CONTAINER_PATH/server-cert-${localip}.pem
34 server_cert_key=$ARVADOS_CONTAINER_PATH/server-cert-${localip}.key
35
36 declare -A services
37 services=(
38   [workbench2]=3000
39   [workbench2-ssl]=443
40   [api]=8004
41   [controller]=8003
42   [controller-ssl]=8000
43   [arv-git-httpd-ssl]=9000
44   [arv-git-httpd]=9001
45   [keep-web]=9003
46   [keep-web-ssl]=9002
47   [keep-web-dl-ssl]=9004
48   [keepproxy]=25100
49   [keepproxy-ssl]=25101
50   [keepstore0]=25107
51   [keepstore1]=25108
52   [ssh]=22
53   [doc]=8001
54   [websockets]=8005
55   [websockets-ssl]=8002
56   [webshell]=4201
57   [webshell-ssl]=4202
58 )
59
60 if test "$(id arvbox -u 2>/dev/null)" = 0 ; then
61     PGUSER=postgres
62     PGGROUP=postgres
63 else
64     PGUSER=arvbox
65     PGGROUP=arvbox
66 fi
67
68 run_bundler() {
69     flock $GEMLOCK /var/lib/arvados/bin/gem install --no-document --user bundler:$BUNDLER_VERSION
70
71     BUNDLER=bundle
72     if test -x $PWD/bin/bundle ; then
73         # If present, use the one associated with rails API
74         BUNDLER=$PWD/bin/bundle
75     fi
76
77     # Use Gemfile.lock only if it is git tracked.
78     if git ls-files --error-unmatch Gemfile.lock ; then
79         flock $GEMLOCK $BUNDLER config set --local frozen true
80     else
81         flock $GEMLOCK $BUNDLER config set --local frozen false
82     fi
83     flock $GEMLOCK $BUNDLER config set --local deployment false
84
85     if test -z "$(flock $GEMLOCK /var/lib/arvados/bin/gem list | grep 'arvados[[:blank:]].*[0-9.]*dev')" ; then
86         (cd /usr/src/arvados/sdk/ruby && \
87         /var/lib/arvados/bin/gem build arvados.gemspec && flock $GEMLOCK /var/lib/arvados/bin/gem install $(ls -1 *.gem | sort -r | head -n1))
88     fi
89
90     if ! flock $GEMLOCK $BUNDLER install --verbose --local "$@" ; then
91         flock $GEMLOCK $BUNDLER install --verbose "$@"
92     fi
93 }
94
95 bundler_binstubs() {
96     BUNDLER=bundle
97     if test -x $PWD/bin/bundle ; then
98         # If present, use the one associated with rails API
99         BUNDLER=$PWD/bin/bundle
100     fi
101     flock $GEMLOCK $BUNDLER binstubs --all
102 }
103
104 PYCMD=""
105 pip_install() {
106     pushd /var/lib/pip
107     for p in $(ls http*.tar.gz) $(ls http*.tar.bz2) $(ls http*.whl) $(ls http*.zip) ; do
108         if test -f $p ; then
109             ln -sf $p $(echo $p | sed 's/.*%2F\(.*\)/\1/')
110         fi
111     done
112     popd
113
114     if [ "$PYCMD" = "python3" ]; then
115         if ! pip3 install --prefix /usr/local --no-index --find-links /var/lib/pip $1 ; then
116             pip3 install --prefix /usr/local $1
117         fi
118     else
119         if ! pip install --no-index --find-links /var/lib/pip $1 ; then
120             pip install $1
121         fi
122     fi
123 }