Browse code

Adapt project/make.sh for Windows builds

Fixes:
- link -H windows is not compatible with -linkmode external
- under Cygwin go does not play well with cygdrive type paths

Signed-off-by: Arnaud Porterie <arnaud.porterie@docker.com>

Arnaud Porterie authored on 2014/11/19 07:44:05
Showing 2 changed files
... ...
@@ -101,6 +101,10 @@ LDFLAGS='
101 101
 	-X '$DOCKER_PKG'/dockerversion.VERSION "'$VERSION'"
102 102
 '
103 103
 LDFLAGS_STATIC='-linkmode external'
104
+# Cgo -H windows is incompatible with -linkmode external.
105
+if [ "$(go env GOOS)" == 'windows' ]; then
106
+	LDFLAGS_STATIC=''
107
+fi
104 108
 EXTLDFLAGS_STATIC='-static'
105 109
 # ORIG_BUILDFLAGS is necessary for the cross target which cannot always build
106 110
 # with options like -race.
... ...
@@ -215,7 +219,7 @@ bundle() {
215 215
 	bundle=$(basename $bundlescript)
216 216
 	echo "---> Making bundle: $bundle (in bundles/$VERSION/$bundle)"
217 217
 	mkdir -p bundles/$VERSION/$bundle
218
-	source $bundlescript $(pwd)/bundles/$VERSION/$bundle
218
+	source "$bundlescript" "$(pwd)/bundles/$VERSION/$bundle"
219 219
 }
220 220
 
221 221
 main() {
... ...
@@ -3,19 +3,26 @@ set -e
3 3
 
4 4
 DEST=$1
5 5
 BINARY_NAME="docker-$VERSION"
6
+BINARY_EXTENSION=
6 7
 if [ "$(go env GOOS)" = 'windows' ]; then
7
-	BINARY_NAME+='.exe'
8
+	BINARY_EXTENSION='.exe'
9
+fi
10
+BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"
11
+
12
+# Cygdrive paths don't play well with go build -o.
13
+if [[ "$(uname -s)" == CYGWIN* ]]; then
14
+	DEST=$(cygpath -mw $DEST)
8 15
 fi
9 16
 
10 17
 go build \
11
-	-o "$DEST/$BINARY_NAME" \
18
+	-o "$DEST/$BINARY_FULLNAME" \
12 19
 	"${BUILDFLAGS[@]}" \
13 20
 	-ldflags "
14 21
 		$LDFLAGS
15 22
 		$LDFLAGS_STATIC_DOCKER
16 23
 	" \
17 24
 	./docker
18
-echo "Created binary: $DEST/$BINARY_NAME"
19
-ln -sf "$BINARY_NAME" "$DEST/docker"
25
+echo "Created binary: $DEST/$BINARY_FULLNAME"
26
+ln -sf "$BINARY_FULLNAME" "$DEST/docker$BINARY_EXTENSION"
20 27
 
21
-hash_files "$DEST/$BINARY_NAME"
28
+hash_files "$DEST/$BINARY_FULLNAME"