summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhil Estes <estesp@gmail.com>2015-03-17 13:45:47 -0400
committerPhil Estes <estesp@gmail.com>2015-03-17 13:45:47 -0400
commite35c78a4954c2d8b1c3963d3190ab3cfd3a48342 (patch)
tree6889696d7c9f91b412d53580eb581e07c69bd7ff
parentc858cbffe06897966033dab9af31f877af4d2f47 (diff)
parentec92e84b85bafaa00867bcb6515062bae773e8da (diff)
downloaddocker-e35c78a4954c2d8b1c3963d3190ab3cfd3a48342.tar.gz
Merge pull request #11298 from brahmaroutu/gccgo_script
Initial gccgo build script, requires host to contain gccgo 5.0
-rw-r--r--hack/make/.dockerinit-gccgo29
-rw-r--r--hack/make/.integration-daemon-start2
-rw-r--r--hack/make/dyngccgo23
-rwxr-xr-xhack/make/gccgo26
4 files changed, 79 insertions, 1 deletions
diff --git a/hack/make/.dockerinit-gccgo b/hack/make/.dockerinit-gccgo
new file mode 100644
index 0000000000..637d1fdd3f
--- /dev/null
+++ b/hack/make/.dockerinit-gccgo
@@ -0,0 +1,29 @@
+#!/bin/bash
+set -e
+
+IAMSTATIC="true"
+source "$(dirname "$BASH_SOURCE")/.go-autogen"
+
+go build --compiler=gccgo \
+ -o "$DEST/dockerinit-$VERSION" \
+ "${BUILDFLAGS[@]}" \
+ --gccgoflags "
+ -g
+ -Wl,--no-export-dynamic
+ $EXTLDFLAGS_STATIC_DOCKER
+ " \
+ ./dockerinit
+
+echo "Created binary: $DEST/dockerinit-$VERSION"
+ln -sf "dockerinit-$VERSION" "$DEST/dockerinit"
+
+sha1sum=
+if command -v sha1sum &> /dev/null; then
+ sha1sum=sha1sum
+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)"
diff --git a/hack/make/.integration-daemon-start b/hack/make/.integration-daemon-start
index a1e390bde2..faf9b97213 100644
--- a/hack/make/.integration-daemon-start
+++ b/hack/make/.integration-daemon-start
@@ -2,7 +2,7 @@
# see test-integration-cli for example usage of this script
-export PATH="$DEST/../binary:$DEST/../dynbinary:$PATH"
+export PATH="$DEST/../binary:$DEST/../dynbinary:$DEST/../gccgo:$PATH"
if ! command -v docker &> /dev/null; then
echo >&2 'error: binary or dynbinary must be run before .integration-daemon-start'
diff --git a/hack/make/dyngccgo b/hack/make/dyngccgo
new file mode 100644
index 0000000000..e4ccad1a9d
--- /dev/null
+++ b/hack/make/dyngccgo
@@ -0,0 +1,23 @@
+#!/bin/bash
+set -e
+
+DEST=$1
+
+if [ -z "$DOCKER_CLIENTONLY" ]; then
+ source "$(dirname "$BASH_SOURCE")/.dockerinit-gccgo"
+
+ hash_files "$DEST/dockerinit-$VERSION"
+else
+ # DOCKER_CLIENTONLY must be truthy, so we don't need to bother with dockerinit :)
+ export DOCKER_INITSHA1=""
+fi
+# DOCKER_INITSHA1 is exported so that other bundlescripts can easily access it later without recalculating it
+
+(
+ export IAMSTATIC="false"
+ export EXTLDFLAGS_STATIC_DOCKER=''
+ export LDFLAGS_STATIC_DOCKER=''
+ export BUILDFLAGS=( "${BUILDFLAGS[@]/netgo /}" ) # disable netgo, since we don't need it for a dynamic binary
+ export BUILDFLAGS=( "${BUILDFLAGS[@]/static_build /}" ) # we're not building a "static" binary here
+ source "$(dirname "$BASH_SOURCE")/gccgo"
+)
diff --git a/hack/make/gccgo b/hack/make/gccgo
new file mode 100755
index 0000000000..8ba5ede963
--- /dev/null
+++ b/hack/make/gccgo
@@ -0,0 +1,26 @@
+#!/bin/bash
+set -e
+
+DEST=$1
+BINARY_NAME="docker-$VERSION"
+BINARY_EXTENSION="$(binary_extension)"
+BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"
+
+source "$(dirname "$BASH_SOURCE")/.go-autogen"
+
+go build --compiler=gccgo \
+ -o "$DEST/$BINARY_FULLNAME" \
+ "${BUILDFLAGS[@]}" \
+ --gccgoflags "
+ -g
+ $EXTLDFLAGS_STATIC_DOCKER
+ -Wl,--no-export-dynamic
+ -ldl
+ " \
+ ./docker
+
+
+echo "Created binary: $DEST/$BINARY_FULLNAME"
+ln -sf "$BINARY_FULLNAME" "$DEST/docker$BINARY_EXTENSION"
+
+hash_files "$DEST/$BINARY_FULLNAME"