contrib/dockerlib.sh
author Pierre-Yves David <pierre-yves.david@fb.com>
Wed, 10 Jun 2015 19:58:27 -0700
changeset 25619 833fa28cd949
parent 24970 33055069e465
child 26888 271a802071b7
permissions -rw-r--r--
revset: use a baseset in _notpublic() The '_notpublic()' internal revset was "returning" a set. That was wrong. We now return a 'baseset' as appropriate. This has no effect on performance in most case, because we do the exact same operation than what the combination with a 'fullreposet' was doing. This as a small effect on some operation when combined with other set, because we now apply the filtering in all cases. I think the correctness is worth the impact on some corner cases. The optimizer should take care of these corner cases anyway. revset #0: not public() plain min max first last reverse 0) 0.000465 0.000491 0.000495 0.000500 0.000494 0.000479 1) 0.000484 0.000503 0.000498 0.000505 0.000504 0.000491 revset #1: (tip~1000::) - public() plain min max first last reverse 0) 0.002765 0.001742 0.002767 0.001730 0.002761 0.002782 1) 0.002847 0.001777 0.002776 0.001741 0.002764 0.002858 revset #2: not public() and branch("default") plain min max first last reverse 0) 0.012104 0.011138 0.011189 0.011138 0.011166 0.011578 1) 0.011387 94% 0.011738 105% 0.014220 127% 0.011223 0.011184 0.012077 revset #3: (not public() - obsolete()) plain min max first last reverse 0) 0.000583 0.000556 0.000552 0.000555 0.000552 0.000610 1) 0.000613 105% 0.000559 0.000557 0.000573 0.000558 0.000613 revset #4: head() - public() plain min max first last reverse 0) 0.010869 0.010800 0.011547 0.010843 0.010891 0.010891 1) 0.011031 0.011497 106% 0.011087 0.011100 0.011100 0.011085
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
}