Make "DEST" a make.sh construct instead of ad-hoc

Using "DEST" for our build artifacts inside individual bundlescripts was already well-established convention, but this officializes it by having `make.sh` itself set the variable and create the directory, also handling CYGWIN oddities in a single central place (instead of letting them spread outward from `hack/make/binary` like was definitely on their roadmap, whether they knew it or not; sneaky oddities).

Signed-off-by: Andrew "Tianon" Page <admwiggin@gmail.com>
This commit is contained in:
Tianon Gravi 2015-05-29 13:07:16 -07:00
parent 4c9fd72a91
commit ac3388367b
15 changed files with 25 additions and 46 deletions

View File

@ -198,13 +198,13 @@ go_test_dir() {
# if our current go install has -cover, we want to use it :) # if our current go install has -cover, we want to use it :)
mkdir -p "$DEST/coverprofiles" mkdir -p "$DEST/coverprofiles"
coverprofile="docker${dir#.}" coverprofile="docker${dir#.}"
coverprofile="$DEST/coverprofiles/${coverprofile//\//-}" coverprofile="$ABS_DEST/coverprofiles/${coverprofile//\//-}"
testcover=( -cover -coverprofile "$coverprofile" $coverpkg ) testcover=( -cover -coverprofile "$coverprofile" $coverpkg )
fi fi
( (
export DEST
echo '+ go test' $TESTFLAGS "${DOCKER_PKG}${dir#.}" echo '+ go test' $TESTFLAGS "${DOCKER_PKG}${dir#.}"
cd "$dir" cd "$dir"
export DEST="$ABS_DEST" # we're in a subshell, so this is safe -- our integration-cli tests need DEST, and "cd" screws it up
test_env go test ${testcover[@]} -ldflags "$LDFLAGS" "${BUILDFLAGS[@]}" $TESTFLAGS test_env go test ${testcover[@]} -ldflags "$LDFLAGS" "${BUILDFLAGS[@]}" $TESTFLAGS
) )
} }
@ -217,7 +217,7 @@ test_env() {
DOCKER_USERLANDPROXY="$DOCKER_USERLANDPROXY" \ DOCKER_USERLANDPROXY="$DOCKER_USERLANDPROXY" \
DOCKER_HOST="$DOCKER_HOST" \ DOCKER_HOST="$DOCKER_HOST" \
GOPATH="$GOPATH" \ GOPATH="$GOPATH" \
HOME="$DEST/fake-HOME" \ HOME="$ABS_DEST/fake-HOME" \
PATH="$PATH" \ PATH="$PATH" \
TEMP="$TEMP" \ TEMP="$TEMP" \
TEST_DOCKERINIT_PATH="$TEST_DOCKERINIT_PATH" \ TEST_DOCKERINIT_PATH="$TEST_DOCKERINIT_PATH" \
@ -272,11 +272,9 @@ hash_files() {
} }
bundle() { bundle() {
bundlescript=$1 local bundle="$1"; shift
bundle=$(basename $bundlescript) echo "---> Making bundle: $(basename "$bundle") (in $DEST)"
echo "---> Making bundle: $bundle (in bundles/$VERSION/$bundle)" source "$SCRIPTDIR/make/$bundle" "$@"
mkdir -p "bundles/$VERSION/$bundle"
source "$bundlescript" "$(pwd)/bundles/$VERSION/$bundle"
} }
main() { main() {
@ -302,7 +300,14 @@ main() {
bundles=($@) bundles=($@)
fi fi
for bundle in ${bundles[@]}; do for bundle in ${bundles[@]}; do
bundle "$SCRIPTDIR/make/$bundle" export DEST="bundles/$VERSION/$(basename "$bundle")"
# Cygdrive paths don't play well with go build -o.
if [[ "$(uname -s)" == CYGWIN* ]]; then
export DEST="$(cygpath -mw "$DEST")"
fi
mkdir -p "$DEST"
ABS_DEST="$(cd "$DEST" && pwd -P)"
bundle "$bundle"
echo echo
done done
} }

View File

@ -2,7 +2,7 @@
# see test-integration-cli for example usage of this script # see test-integration-cli for example usage of this script
export PATH="$DEST/../binary:$DEST/../dynbinary:$DEST/../gccgo:$DEST/../dyngccgo:$PATH" export PATH="$ABS_DEST/../binary:$ABS_DEST/../dynbinary:$ABS_DEST/../gccgo:$ABS_DEST/../dyngccgo:$PATH"
if ! command -v docker &> /dev/null; then if ! command -v docker &> /dev/null; then
echo >&2 'error: binary or dynbinary must be run before .integration-daemon-start' echo >&2 'error: binary or dynbinary must be run before .integration-daemon-start'

View File

@ -1,16 +1,10 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
BINARY_NAME="docker-$VERSION" BINARY_NAME="docker-$VERSION"
BINARY_EXTENSION="$(binary_extension)" BINARY_EXTENSION="$(binary_extension)"
BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION" BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"
# Cygdrive paths don't play well with go build -o.
if [[ "$(uname -s)" == CYGWIN* ]]; then
DEST=$(cygpath -mw $DEST)
fi
source "${MAKEDIR}/.go-autogen" source "${MAKEDIR}/.go-autogen"
echo "Building: $DEST/$BINARY_FULLNAME" echo "Building: $DEST/$BINARY_FULLNAME"

View File

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
# subshell so that we can export PATH without breaking other things # subshell so that we can export PATH without breaking other things
( (
source "${MAKEDIR}/.integration-daemon-start" source "${MAKEDIR}/.integration-daemon-start"

View File

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
# subshell so that we can export PATH without breaking other things # subshell so that we can export PATH without breaking other things
( (
source "$(dirname "$BASH_SOURCE")/.integration-daemon-start" source "$(dirname "$BASH_SOURCE")/.integration-daemon-start"

View File

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST="$1"
bundle_cover() { bundle_cover() {
coverprofiles=( "$DEST/../"*"/coverprofiles/"* ) coverprofiles=( "$DEST/../"*"/coverprofiles/"* )
for p in "${coverprofiles[@]}"; do for p in "${coverprofiles[@]}"; do

View File

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
# explicit list of os/arch combos that support being a daemon # explicit list of os/arch combos that support being a daemon
declare -A daemonSupporting declare -A daemonSupporting
daemonSupporting=( daemonSupporting=(
@ -21,13 +19,15 @@ fi
for platform in $DOCKER_CROSSPLATFORMS; do for platform in $DOCKER_CROSSPLATFORMS; do
( (
mkdir -p "$DEST/$platform" # bundles/VERSION/cross/GOOS/GOARCH/docker-VERSION export DEST="$DEST/$platform" # bundles/VERSION/cross/GOOS/GOARCH/docker-VERSION
mkdir -p "$DEST"
ABS_DEST="$(cd "$DEST" && pwd -P)"
export GOOS=${platform%/*} export GOOS=${platform%/*}
export GOARCH=${platform##*/} export GOARCH=${platform##*/}
if [ -z "${daemonSupporting[$platform]}" ]; then if [ -z "${daemonSupporting[$platform]}" ]; then
export LDFLAGS_STATIC_DOCKER="" # we just need a simple client for these platforms export LDFLAGS_STATIC_DOCKER="" # we just need a simple client for these platforms
export BUILDFLAGS=( "${ORIG_BUILDFLAGS[@]/ daemon/}" ) # remove the "daemon" build tag from platforms that aren't supported export BUILDFLAGS=( "${ORIG_BUILDFLAGS[@]/ daemon/}" ) # remove the "daemon" build tag from platforms that aren't supported
fi fi
source "${MAKEDIR}/binary" "$DEST/$platform" source "${MAKEDIR}/binary"
) )
done done

View File

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
if [ -z "$DOCKER_CLIENTONLY" ]; then if [ -z "$DOCKER_CLIENTONLY" ]; then
source "${MAKEDIR}/.dockerinit" source "${MAKEDIR}/.dockerinit"

View File

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
if [ -z "$DOCKER_CLIENTONLY" ]; then if [ -z "$DOCKER_CLIENTONLY" ]; then
source "${MAKEDIR}/.dockerinit-gccgo" source "${MAKEDIR}/.dockerinit-gccgo"

View File

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
BINARY_NAME="docker-$VERSION" BINARY_NAME="docker-$VERSION"
BINARY_EXTENSION="$(binary_extension)" BINARY_EXTENSION="$(binary_extension)"
BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION" BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"

View File

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
# subshell so that we can export PATH without breaking other things # subshell so that we can export PATH without breaking other things
( (
source "${MAKEDIR}/.integration-daemon-start" source "${MAKEDIR}/.integration-daemon-start"

View File

@ -1,8 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
bundle_test_integration_cli() { bundle_test_integration_cli() {
go_test_dir ./integration-cli go_test_dir ./integration-cli
} }

View File

@ -1,7 +1,6 @@
#!/bin/bash #!/bin/bash
set -e set -e
DEST=$1
: ${PARALLEL_JOBS:=$(nproc 2>/dev/null || echo 1)} # if nproc fails (usually because we don't have it), let's not parallelize by default : ${PARALLEL_JOBS:=$(nproc 2>/dev/null || echo 1)} # if nproc fails (usually because we don't have it), let's not parallelize by default
RED=$'\033[31m' RED=$'\033[31m'
@ -26,10 +25,9 @@ bundle_test_unit() {
export LDFLAGS export LDFLAGS
export TESTFLAGS export TESTFLAGS
export HAVE_GO_TEST_COVER export HAVE_GO_TEST_COVER
export DEST
# some hack to export array variables # some hack to export array variables
export BUILDFLAGS_FILE="buildflags_file" export BUILDFLAGS_FILE="$DEST/buildflags-file"
( IFS=$'\n'; echo "${BUILDFLAGS[*]}" ) > "$BUILDFLAGS_FILE" ( IFS=$'\n'; echo "${BUILDFLAGS[*]}" ) > "$BUILDFLAGS_FILE"
if command -v parallel &> /dev/null; then if command -v parallel &> /dev/null; then
@ -59,7 +57,7 @@ go_run_test_dir() {
while read dir; do while read dir; do
echo echo
echo '+ go test' $TESTFLAGS "${DOCKER_PKG}${dir#.}" echo '+ go test' $TESTFLAGS "${DOCKER_PKG}${dir#.}"
precompiled="$DEST/precompiled/$dir.test$(binary_extension)" precompiled="$ABS_DEST/precompiled/$dir.test$(binary_extension)"
if ! ( cd "$dir" && test_env "$precompiled" $TESTFLAGS ); then if ! ( cd "$dir" && test_env "$precompiled" $TESTFLAGS ); then
TESTS_FAILED+=("$dir") TESTS_FAILED+=("$dir")
echo echo

View File

@ -1,6 +1,5 @@
#!/bin/bash #!/bin/bash
DEST="$1"
CROSS="$DEST/../cross" CROSS="$DEST/../cross"
set -e set -e

View File

@ -1,7 +1,5 @@
#!/bin/bash #!/bin/bash
DEST=$1
PKGVERSION="${VERSION//-/'~'}" PKGVERSION="${VERSION//-/'~'}"
# if we have a "-dev" suffix or have change in Git, let's make this package version more complex so it works better # if we have a "-dev" suffix or have change in Git, let's make this package version more complex so it works better
if [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then if [[ "$VERSION" == *-dev ]] || [ -n "$(git status --porcelain)" ]; then
@ -37,7 +35,7 @@ PACKAGE_LICENSE="Apache-2.0"
# Build docker as an ubuntu package using FPM and REPREPRO (sue me). # Build docker as an ubuntu package using FPM and REPREPRO (sue me).
# bundle_binary must be called first. # bundle_binary must be called first.
bundle_ubuntu() { bundle_ubuntu() {
DIR=$DEST/build DIR="$ABS_DEST/build"
# Include our udev rules # Include our udev rules
mkdir -p "$DIR/etc/udev/rules.d" mkdir -p "$DIR/etc/udev/rules.d"
@ -140,9 +138,9 @@ EOF
# create lxc-docker-VERSION package # create lxc-docker-VERSION package
fpm -s dir -C "$DIR" \ fpm -s dir -C "$DIR" \
--name "lxc-docker-$VERSION" --version "$PKGVERSION" \ --name "lxc-docker-$VERSION" --version "$PKGVERSION" \
--after-install "$DEST/postinst" \ --after-install "$ABS_DEST/postinst" \
--before-remove "$DEST/prerm" \ --before-remove "$ABS_DEST/prerm" \
--after-remove "$DEST/postrm" \ --after-remove "$ABS_DEST/postrm" \
--architecture "$PACKAGE_ARCHITECTURE" \ --architecture "$PACKAGE_ARCHITECTURE" \
--prefix / \ --prefix / \
--depends iptables \ --depends iptables \