annotate contrib/dockerlib.sh @ 35248:c752fbe228fb

repoview: extract a factory function of proxy class This makes sure that dynamically-created class objects are isolated from local binding of repo instances. The type cache is moved to module level as it isn't tied to each instance.
author Yuya Nishihara <yuya@tcha.org>
date Tue, 05 Dec 2017 21:50:33 +0900
parents a3ac1ea611ce
children 1335bbfb066f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
24968
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
1 #!/bin/sh -eu
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
2
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
3 # This function exists to set up the DOCKER variable and verify that
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
4 # it's the binary we expect. It also verifies that the docker service
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
5 # is running on the system and we can talk to it.
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
6 function checkdocker() {
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
7 if which docker.io >> /dev/null 2>&1 ; then
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
8 DOCKER=docker.io
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
9 elif which docker >> /dev/null 2>&1 ; then
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
10 DOCKER=docker
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
11 else
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
12 echo "Error: docker must be installed"
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
13 exit 1
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
14 fi
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
15
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
16 $DOCKER -h 2> /dev/null | grep -q Jansens && { echo "Error: $DOCKER is the Docking System Tray - install docker.io instead"; exit 1; }
27103
2d437a0f3355 docker: match more version of 'hg docker version' (issue4967)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26888
diff changeset
17 $DOCKER version | grep -Eq "^Client( version)?:" || { echo "Error: unexpected output from \"$DOCKER version\""; exit 1; }
2d437a0f3355 docker: match more version of 'hg docker version' (issue4967)
Pierre-Yves David <pierre-yves.david@fb.com>
parents: 26888
diff changeset
18 $DOCKER version | grep -Eq "^Server( version)?:" || { echo "Error: could not get docker server version - check it is running and your permissions"; exit 1; }
24968
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
19 }
24969
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
20
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
21 # Construct a container and leave its name in $CONTAINER for future use.
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
22 function initcontainer() {
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
23 [ "$1" ] || { echo "Error: platform name must be specified"; exit 1; }
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
24
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
25 DFILE="$ROOTDIR/contrib/docker/$1"
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
26 [ -f "$DFILE" ] || { echo "Error: docker file $DFILE not found"; exit 1; }
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
27
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
28 CONTAINER="hg-dockerrpm-$1"
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
29 DBUILDUSER=build
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
30 (
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
31 cat $DFILE
24970
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
32 if [ $(uname) = "Darwin" ] ; then
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
33 # The builder is using boot2docker on OS X, so we're going to
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
34 # *guess* the uid of the user inside the VM that is actually
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
35 # running docker. This is *very likely* to fail at some point.
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
36 echo RUN useradd $DBUILDUSER -u 1000
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
37 else
27245
cea1473ba468 dockerlib: short form for non-unique uid/gid for CentOS 5 compat (issue4977)
Mathias De Maré <mathias.demare@gmail.com>
parents: 27103
diff changeset
38 echo RUN groupadd $DBUILDUSER -g `id -g` -o
cea1473ba468 dockerlib: short form for non-unique uid/gid for CentOS 5 compat (issue4977)
Mathias De Maré <mathias.demare@gmail.com>
parents: 27103
diff changeset
39 echo RUN useradd $DBUILDUSER -u `id -u` -g $DBUILDUSER -o
24970
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
40 fi
33597
a3ac1ea611ce docker: pass proxy arguments to docker process
Mathias De Maré <mathias.de_mare@nokia.com>
parents: 27245
diff changeset
41 ) | $DOCKER build --build-arg http_proxy --build-arg https_proxy --tag $CONTAINER -
24969
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
42 }