From a40bb2aabc1c0aba8b4de82dc353fae322b8831d Mon Sep 17 00:00:00 2001 From: Tianon Gravi Date: Thu, 6 Mar 2014 21:22:25 -0700 Subject: [PATCH] Add new "DOCKER_CLIENTONLY" build variable to allow skipping of the dockerinit compilation, especially for Homebrew / Mac OS X client-only compilation Docker-DCO-1.1-Signed-off-by: Andrew Page (github: tianon) --- hack/PACKAGERS.md | 6 +++++ hack/make/dynbinary | 53 +++++++++++++++++++++++++-------------------- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/hack/PACKAGERS.md b/hack/PACKAGERS.md index 3948f001b5..5dcb120689 100644 --- a/hack/PACKAGERS.md +++ b/hack/PACKAGERS.md @@ -181,6 +181,12 @@ the file "./VERSION". This binary is usually installed somewhere like ### Dynamic Daemon / Client-only Binary +If you are only interested in a Docker client binary, set `DOCKER_CLIENTONLY` to a non-empty value using something similar to the following: (which will prevent the extra step of compiling dockerinit) + +```bash +export DOCKER_CLIENTONLY=1 +``` + If you need to (due to distro policy, distro library availability, or for other reasons) create a dynamically compiled daemon binary, or if you are only interested in creating a client binary for Docker, use something similar to the diff --git a/hack/make/dynbinary b/hack/make/dynbinary index b418fc409c..d4f583fb62 100644 --- a/hack/make/dynbinary +++ b/hack/make/dynbinary @@ -2,32 +2,37 @@ DEST=$1 -# dockerinit still needs to be a static binary, even if docker is dynamic -go build \ - -o $DEST/dockerinit-$VERSION \ - "${BUILDFLAGS[@]}" \ - -ldflags " - $LDFLAGS - $LDFLAGS_STATIC - -extldflags \"$EXTLDFLAGS_STATIC\" - " \ - ./dockerinit -echo "Created binary: $DEST/dockerinit-$VERSION" -ln -sf dockerinit-$VERSION $DEST/dockerinit - -sha1sum= -if command -v sha1sum &> /dev/null; then - sha1sum=sha1sum -elif command -v shasum &> /dev/null; then - # Mac OS X - why couldn't they just use the same command name and be happy? - sha1sum=shasum +if [ -z "$DOCKER_CLIENTONLY" ]; then + # dockerinit still needs to be a static binary, even if docker is dynamic + go build \ + -o $DEST/dockerinit-$VERSION \ + "${BUILDFLAGS[@]}" \ + -ldflags " + $LDFLAGS + $LDFLAGS_STATIC + -extldflags \"$EXTLDFLAGS_STATIC\" + " \ + ./dockerinit + echo "Created binary: $DEST/dockerinit-$VERSION" + ln -sf dockerinit-$VERSION $DEST/dockerinit + + sha1sum= + if command -v sha1sum &> /dev/null; then + sha1sum=sha1sum + elif command -v shasum &> /dev/null; then + # Mac OS X - why couldn't they just use the same command name and be happy? + sha1sum=shasum + else + echo >&2 'error: cannot find sha1sum command or equivalent' + exit 1 + fi + + # sha1 our new dockerinit to ensure separate docker and dockerinit always run in a perfect pair compiled for one another + export DOCKER_INITSHA1="$($sha1sum $DEST/dockerinit-$VERSION | cut -d' ' -f1)" else - echo >&2 'error: cannot find sha1sum command or equivalent' - exit 1 + # DOCKER_CLIENTONLY must be truthy, so we don't need to bother with dockerinit :) + export DOCKER_INITSHA1="" fi - -# sha1 our new dockerinit to ensure separate docker and dockerinit always run in a perfect pair compiled for one another -export DOCKER_INITSHA1="$($sha1sum $DEST/dockerinit-$VERSION | cut -d' ' -f1)" # exported so that "dyntest" can easily access it later without recalculating it (