#!/bin/sh -eu # This function exists to set up the DOCKER variable and verify that # it's the binary we expect. It also verifies that the docker service # is running on the system and we can talk to it. proc checkdocker { if which docker.io >> /dev/null !2 > !1 { setglobal DOCKER = 'docker.io' } elif which docker >> /dev/null !2 > !1 { setglobal DOCKER = 'docker' } else { echo "Error: docker must be installed" exit 1 } $DOCKER -h !2 > /dev/null | grep -q Jansens && do { echo "Error: $DOCKER is the Docking System Tray - install docker.io instead"; exit 1; } $DOCKER version | grep -q "^Client version:" || do { echo "Error: unexpected output from \"$DOCKER version\""; exit 1; } $DOCKER version | grep -q "^Server version:" || do { echo "Error: could not get docker server version - check it is running and your permissions"; exit 1; } } # Construct a container and leave its name in $CONTAINER for future use. proc initcontainer { test $1 || do { echo "Error: platform name must be specified"; exit 1; } setglobal DFILE = ""$ROOTDIR/contrib/docker/$1"" test -f $DFILE || do { echo "Error: docker file $DFILE not found"; exit 1; } setglobal CONTAINER = ""hg-dockerrpm-$1"" setglobal DBUILDUSER = 'build' shell { cat $DFILE if test $[uname] = "Darwin" { # The builder is using boot2docker on OS X, so we're going to # *guess* the uid of the user inside the VM that is actually # running docker. This is *very likely* to fail at some point. echo RUN useradd $DBUILDUSER -u 1000 } else { echo RUN groupadd $DBUILDUSER -g $[id -g] echo RUN useradd $DBUILDUSER -u $[id -u] -g $DBUILDUSER } } | $DOCKER build --tag $CONTAINER - }