arvbox changes: yank Composer. Add link to documentation.
[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=2.7.0
6 export BUNDLER_VERSION=2.2.19
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   [workbench]=443
39   [workbench2]=3000
40   [workbench2-ssl]=3001
41   [api]=8004
42   [controller]=8003
43   [controller-ssl]=8000
44   [arv-git-httpd-ssl]=9000
45   [arv-git-httpd]=9001
46   [keep-web]=9003
47   [keep-web-ssl]=9002
48   [keep-web-dl-ssl]=9004
49   [keepproxy]=25100
50   [keepproxy-ssl]=25101
51   [keepstore0]=25107
52   [keepstore1]=25108
53   [ssh]=22
54   [doc]=8001
55   [websockets]=8005
56   [websockets-ssl]=8002
57   [webshell]=4201
58   [webshell-ssl]=4202
59 )
60
61 if test "$(id arvbox -u 2>/dev/null)" = 0 ; then
62     PGUSER=postgres
63     PGGROUP=postgres
64 else
65     PGUSER=arvbox
66     PGGROUP=arvbox
67 fi
68
69 run_bundler() {
70     flock $GEMLOCK /var/lib/arvados/bin/gem install --no-document --user bundler:$BUNDLER_VERSION
71     if test -f Gemfile.lock ; then
72         frozen=--frozen
73     else
74         frozen=""
75     fi
76     BUNDLER=bundle
77     if test -x $PWD/bin/bundle ; then
78         # If present, use the one associated with rails workbench or API
79         BUNDLER=$PWD/bin/bundle
80     fi
81
82     if test -z "$(flock $GEMLOCK /var/lib/arvados/bin/gem list | grep 'arvados[[:blank:]].*[0-9.]*dev')" ; then
83         (cd /usr/src/arvados/sdk/ruby && \
84         /var/lib/arvados/bin/gem build arvados.gemspec && flock $GEMLOCK /var/lib/arvados/bin/gem install $(ls -1 *.gem | sort -r | head -n1))
85     fi
86     if ! flock $GEMLOCK $BUNDLER install --verbose --local --no-deployment $frozen "$@" ; then
87         flock $GEMLOCK $BUNDLER install --verbose --no-deployment $frozen "$@"
88     fi
89 }
90
91 PYCMD=""
92 pip_install() {
93     pushd /var/lib/pip
94     for p in $(ls http*.tar.gz) $(ls http*.tar.bz2) $(ls http*.whl) $(ls http*.zip) ; do
95         if test -f $p ; then
96             ln -sf $p $(echo $p | sed 's/.*%2F\(.*\)/\1/')
97         fi
98     done
99     popd
100
101     if [ "$PYCMD" = "python3" ]; then
102         if ! pip3 install --prefix /usr/local --no-index --find-links /var/lib/pip $1 ; then
103             pip3 install --prefix /usr/local $1
104         fi
105     else
106         if ! pip install --no-index --find-links /var/lib/pip $1 ; then
107             pip install $1
108         fi
109     fi
110 }