annotate contrib/dockerlib.sh @ 24982:5c15f7e0f52b

run-tests: stop explicit expansion of time data We are about to record more complex time-related data, which will require repeated changes of every loop touching times data. That will also extend such lines to a point where things become too long. Instead, we iterate on each entry and expand values in the loops. We keep intermediate variables in most cases to preserve readability. The loop producing json data does a strange inversion for no obvious reason. We preserved that for now and will fix it in another changeset.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Thu, 07 May 2015 20:45:51 -0700
parents 33055069e465
children 271a802071b7
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; }
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
17 $DOCKER version | grep -q "^Client version:" || { echo "Error: unexpected output from \"$DOCKER version\""; exit 1; }
80c9e99d68e0 dockerlib: start extracting common functions for setting up docker
Augie Fackler <augie@google.com>
parents:
diff changeset
18 $DOCKER version | grep -q "^Server version:" || { echo "Error: could not get docker server version - check it is running and your permissions"; exit 1; }
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
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
38 echo RUN groupadd $DBUILDUSER -g `id -g`
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
39 echo RUN useradd $DBUILDUSER -u `id -u` -g $DBUILDUSER
33055069e465 dockerlib: fix initcontainer for boot2docker users
Augie Fackler <augie@google.com>
parents: 24969
diff changeset
40 fi
24969
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
41 ) | $DOCKER build --tag $CONTAINER -
227b9b2a57a3 dockerlib: extract initcontainer() method
Augie Fackler <augie@google.com>
parents: 24968
diff changeset
42 }