Browse code

Build docker with gccgo, requires host to contain gccgo 5.0

Addresses #9207
Signed-off-by: Srini Brahmaroutu <srbrahma@us.ibm.com>

Srini Brahmaroutu authored on 2015/03/04 08:22:06
Showing 4 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,29 @@
0
+#!/bin/bash
1
+set -e
2
+
3
+IAMSTATIC="true"
4
+source "$(dirname "$BASH_SOURCE")/.go-autogen"
5
+
6
+go build --compiler=gccgo \
7
+	-o "$DEST/dockerinit-$VERSION" \
8
+	"${BUILDFLAGS[@]}" \
9
+	--gccgoflags "
10
+		-g
11
+		-Wl,--no-export-dynamic
12
+		$EXTLDFLAGS_STATIC_DOCKER
13
+	" \
14
+	./dockerinit
15
+
16
+echo "Created binary: $DEST/dockerinit-$VERSION"
17
+ln -sf "dockerinit-$VERSION" "$DEST/dockerinit"
18
+
19
+sha1sum=
20
+if command -v sha1sum &> /dev/null; then
21
+	sha1sum=sha1sum
22
+else
23
+	echo >&2 'error: cannot find sha1sum command or equivalent'
24
+	exit 1
25
+fi
26
+
27
+# sha1 our new dockerinit to ensure separate docker and dockerinit always run in a perfect pair compiled for one another
28
+export DOCKER_INITSHA1="$($sha1sum $DEST/dockerinit-$VERSION | cut -d' ' -f1)"
... ...
@@ -2,7 +2,7 @@
2 2
 
3 3
 # see test-integration-cli for example usage of this script
4 4
 
5
-export PATH="$DEST/../binary:$DEST/../dynbinary:$PATH"
5
+export PATH="$DEST/../binary:$DEST/../dynbinary:$DEST/../gccgo:$PATH"
6 6
 
7 7
 if ! command -v docker &> /dev/null; then
8 8
 	echo >&2 'error: binary or dynbinary must be run before .integration-daemon-start'
9 9
new file mode 100644
... ...
@@ -0,0 +1,23 @@
0
+#!/bin/bash
1
+set -e 
2
+
3
+DEST=$1
4
+
5
+if [ -z "$DOCKER_CLIENTONLY" ]; then
6
+	source "$(dirname "$BASH_SOURCE")/.dockerinit-gccgo"
7
+	
8
+	hash_files "$DEST/dockerinit-$VERSION"
9
+else
10
+	# DOCKER_CLIENTONLY must be truthy, so we don't need to bother with dockerinit :)
11
+	export DOCKER_INITSHA1=""
12
+fi
13
+# DOCKER_INITSHA1 is exported so that other bundlescripts can easily access it later without recalculating it
14
+
15
+(
16
+	export IAMSTATIC="false"
17
+	export EXTLDFLAGS_STATIC_DOCKER=''
18
+	export LDFLAGS_STATIC_DOCKER=''
19
+	export BUILDFLAGS=( "${BUILDFLAGS[@]/netgo /}" ) # disable netgo, since we don't need it for a dynamic binary
20
+	export BUILDFLAGS=( "${BUILDFLAGS[@]/static_build /}" ) # we're not building a "static" binary here
21
+	source "$(dirname "$BASH_SOURCE")/gccgo"
22
+)
0 23
new file mode 100755
... ...
@@ -0,0 +1,26 @@
0
+#!/bin/bash
1
+set -e
2
+
3
+DEST=$1
4
+BINARY_NAME="docker-$VERSION"
5
+BINARY_EXTENSION="$(binary_extension)"
6
+BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"
7
+
8
+source "$(dirname "$BASH_SOURCE")/.go-autogen"
9
+
10
+go build --compiler=gccgo \
11
+	-o "$DEST/$BINARY_FULLNAME" \
12
+	"${BUILDFLAGS[@]}" \
13
+	--gccgoflags "
14
+		-g
15
+		$EXTLDFLAGS_STATIC_DOCKER
16
+		-Wl,--no-export-dynamic
17
+		-ldl
18
+	" \
19
+	./docker
20
+
21
+
22
+echo "Created binary: $DEST/$BINARY_FULLNAME"
23
+ln -sf "$BINARY_FULLNAME" "$DEST/docker$BINARY_EXTENSION"
24
+
25
+hash_files "$DEST/$BINARY_FULLNAME"