contrib/dockerlib.sh
author Martin von Zweigbergk <martinvonz@google.com>
Mon, 07 May 2018 14:32:55 -0700
changeset 37911 0a79fb64118e
parent 33597 a3ac1ea611ce
child 38045 1335bbfb066f
permissions -rw-r--r--
revset: use resolvehexnodeidprefix() in id() predicate (BC) We now have a public method for this purpose, so we don't need to access the private revlog._partialmatch(). Also, I'll probably make some changes to resolvehexnodeidprefix() later, and I want those to be reflected by the id() predicate. Note that this breaks a test case, because we now resolve the prefix in the unfiltered repo and get an ambiguous lookup, which results in no revision being added to the revset. The test case was already documented to be broken even though it wasn't. It's important to note that {shortest(node)} already uses the unfiltered repo, so we're not going to break people who get the prefix from there. I think we may not want to ever use shortest() in the filtered repo. It seems unlikely to be enough of a win to matter much. For example, in my hg repo, it would save me only 0.2 hex digits. In another repo that only I modify, it saves a little more, but it's still only 0.29 hex digits. It seems unlikely that people will prune enough commits that only 1/16 of the commits are visible (which is what it would take a to save a single hex digit). Instead, I'm working on another approach: allow ambiguous matches to be disambiguated within a user-specified revset. Whether or not that pans out, I hope we're okay with this little change in behavior for now and we can decide what to do about it later. Differential Revision: https://phab.mercurial-scm.org/D3311
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; }
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
}