浏览代码

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 <admwiggin@gmail.com> (github: tianon)
Tianon Gravi 11 年之前
父节点
当前提交
a40bb2aabc
共有 2 个文件被更改,包括 35 次插入24 次删除
  1. 6 0
      hack/PACKAGERS.md
  2. 29 24
      hack/make/dynbinary

+ 6 - 0
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

+ 29 - 24
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
 
 (