1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #!/usr/bin/env bash
- set -e
- # a helper to provide ".exe" when it's appropriate
- binary_extension() {
- if [ "$(go env GOOS)" = 'windows' ]; then
- echo -n '.exe'
- fi
- }
- GO_PACKAGE='github.com/docker/docker/cmd/dockerd'
- BINARY_SHORT_NAME='dockerd'
- BINARY_NAME="$BINARY_SHORT_NAME-$VERSION"
- BINARY_EXTENSION="$(binary_extension)"
- BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"
- source "${MAKEDIR}/.go-autogen"
- hash_files() {
- while [ $# -gt 0 ]; do
- f="$1"
- shift
- dir="$(dirname "$f")"
- base="$(basename "$f")"
- for hashAlgo in md5 sha256; do
- if command -v "${hashAlgo}sum" &> /dev/null; then
- (
- # subshell and cd so that we get output files like:
- # $HASH docker-$VERSION
- # instead of:
- # $HASH /go/src/github.com/.../$VERSION/binary/docker-$VERSION
- cd "$dir"
- "${hashAlgo}sum" "$base" > "$base.$hashAlgo"
- )
- fi
- done
- done
- }
- (
- export GOGC=${DOCKER_BUILD_GOGC:-1000}
- if [ "$(go env GOOS)/$(go env GOARCH)" != "$(go env GOHOSTOS)/$(go env GOHOSTARCH)" ]; then
- # must be cross-compiling!
- case "$(go env GOOS)/$(go env GOARCH)" in
- windows/amd64)
- export CC=x86_64-w64-mingw32-gcc
- export CGO_ENABLED=1
- ;;
- esac
- fi
- echo "Building: $DEST/$BINARY_FULLNAME"
- go build \
- -o "$DEST/$BINARY_FULLNAME" \
- "${BUILDFLAGS[@]}" \
- -ldflags "
- $LDFLAGS
- $LDFLAGS_STATIC_DOCKER
- $DOCKER_LDFLAGS
- " \
- $GO_PACKAGE
- )
- echo "Created binary: $DEST/$BINARY_FULLNAME"
- ln -sf "$BINARY_FULLNAME" "$DEST/$BINARY_SHORT_NAME$BINARY_EXTENSION"
- hash_files "$DEST/$BINARY_FULLNAME"
|