#!/bin/bash
set -e

DEST=$1

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"
	
	hash_files "$DEST/dockerinit-$VERSION"
	
	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
	# DOCKER_CLIENTONLY must be truthy, so we don't need to bother with dockerinit :)
	export DOCKER_INITSHA1=""
fi
# exported so that "dyntest" can easily access it later without recalculating it

(
	export LDFLAGS_STATIC_DOCKER="-X github.com/dotcloud/docker/dockerversion.INITSHA1 \"$DOCKER_INITSHA1\" -X github.com/dotcloud/docker/dockerversion.INITPATH \"$DOCKER_INITPATH\""
	export BUILDFLAGS=( "${BUILDFLAGS[@]/netgo /}" ) # disable netgo, since we don't need it for a dynamic binary
	source "$(dirname "$BASH_SOURCE")/binary"
)
