Not sure if this is the right setup given the containerd change but I need to have the built version of the nested exes (containerd, runc...) available to me after the build is completed so I'm always testing using the latest versions. This PR will copy them into the same bundles dir so people can them use them if they wish w/o having to build each separately. Signed-off-by: Doug Davis <dug@us.ibm.com> Upstream-commit: 1bf5eb20e53b7e242792fcbe399cb997b6a2ba4b Component: engine
80 lines
2.1 KiB
Bash
80 lines
2.1 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
BINARY_NAME="docker-$VERSION"
|
|
BINARY_EXTENSION="$(binary_extension)"
|
|
BINARY_FULLNAME="$BINARY_NAME$BINARY_EXTENSION"
|
|
|
|
source "${MAKEDIR}/.go-autogen"
|
|
|
|
(
|
|
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
|
|
|
|
if [ "$(go env GOOS)" == "linux" ] ; then
|
|
case "$(go env GOARCH)" in
|
|
arm*|386)
|
|
# linking for Linux on arm or x86 needs external linking to avoid
|
|
# https://github.com/golang/go/issues/9510 until we move to Go 1.6
|
|
if [ "$IAMSTATIC" == "true" ] ; then
|
|
export EXTLDFLAGS_STATIC="$EXTLDFLAGS_STATIC -zmuldefs"
|
|
export LDFLAGS_STATIC_DOCKER="$LDFLAGS_STATIC -extldflags \"$EXTLDFLAGS_STATIC\""
|
|
|
|
else
|
|
export LDFLAGS="$LDFLAGS -extldflags -zmuldefs"
|
|
fi
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if [ "$IAMSTATIC" == "true" ] && [ "$(go env GOHOSTOS)" == "linux" ]; then
|
|
if [ "${GOOS}/${GOARCH}" == "darwin/amd64" ]; then
|
|
export CGO_ENABLED=1
|
|
export CC=o64-clang
|
|
export LDFLAGS='-linkmode external -s'
|
|
export LDFLAGS_STATIC_DOCKER='-extld='${CC}
|
|
else
|
|
export BUILDFLAGS=( "${BUILDFLAGS[@]/pkcs11 /}" ) # we cannot dlopen in pkcs11 in a static binary
|
|
fi
|
|
fi
|
|
|
|
echo "Building: $DEST/$BINARY_FULLNAME"
|
|
go build \
|
|
-o "$DEST/$BINARY_FULLNAME" \
|
|
"${BUILDFLAGS[@]}" \
|
|
-ldflags "
|
|
$LDFLAGS
|
|
$LDFLAGS_STATIC_DOCKER
|
|
" \
|
|
./docker
|
|
)
|
|
|
|
echo "Created binary: $DEST/$BINARY_FULLNAME"
|
|
ln -sf "$BINARY_FULLNAME" "$DEST/docker$BINARY_EXTENSION"
|
|
|
|
hash_files "$DEST/$BINARY_FULLNAME"
|
|
|
|
# Add nested executables to bundle dir so we have complete set of
|
|
# them available, but only if the native OS/ARCH is the same as the
|
|
# OS/ARCH of the build target
|
|
if [ "$(go env GOOS)/$(go env GOARCH)" == "$(go env GOHOSTOS)/$(go env GOHOSTARCH)" ]; then
|
|
echo "Copying nested executables into $DEST"
|
|
(set -x
|
|
if [ -x /usr/local/bin/runc ]; then
|
|
cp /usr/local/bin/runc $DEST/
|
|
cp /usr/local/bin/ctr $DEST/
|
|
cp /usr/local/bin/containerd $DEST/
|
|
cp /usr/local/bin/containerd-shim $DEST/
|
|
fi
|
|
)
|
|
fi
|