1
0
mirror of https://github.com/openshift/image-registry.git synced 2026-02-05 09:45:55 +01:00
Files
image-registry/hack/build-cross.sh
2017-11-09 09:31:11 -05:00

96 lines
2.9 KiB
Bash
Executable File

#!/bin/bash
# Build all cross compile targets and the base binaries
STARTTIME=$(date +%s)
source "$(dirname "${BASH_SOURCE}")/lib/init.sh"
host_platform="$(os::build::host_platform)"
# by default, build for these platforms
platforms=(
linux/amd64
darwin/amd64
windows/amd64
)
image_platforms=( )
test_platforms=( "${host_platform}" )
targets=( "${OS_CROSS_COMPILE_TARGETS[@]}" )
# Special case ppc64le
if [[ "${host_platform}" == "linux/ppc64le" ]]; then
platforms+=( "linux/ppc64le" )
fi
# Special case arm64
if [[ "${host_platform}" == "linux/arm64" ]]; then
platforms+=( "linux/arm64" )
fi
# Special case s390x
if [[ "${host_platform}" == "linux/s390x" ]]; then
platforms+=( "linux/s390x" )
fi
# On linux platforms, build images
if [[ "${host_platform}" == linux/* ]]; then
image_platforms+=( "${host_platform}" )
fi
# filter platform list
if [[ -n "${OS_ONLY_BUILD_PLATFORMS-}" ]]; then
filtered=( )
for platform in ${platforms[@]}; do
if [[ "${platform}" =~ "${OS_ONLY_BUILD_PLATFORMS}" ]]; then
filtered+=("${platform}")
fi
done
platforms=("${filtered[@]+"${filtered[@]}"}")
filtered=( )
for platform in ${image_platforms[@]}; do
if [[ "${platform}" =~ "${OS_ONLY_BUILD_PLATFORMS}" ]]; then
filtered+=("${platform}")
fi
done
image_platforms=("${filtered[@]+"${filtered[@]}"}")
filtered=( )
for platform in ${test_platforms[@]}; do
if [[ "${platform}" =~ "${OS_ONLY_BUILD_PLATFORMS}" ]]; then
filtered+=("${platform}")
fi
done
test_platforms=("${filtered[@]+"${filtered[@]}"}")
fi
# Build image binaries for a subset of platforms. Image binaries are currently
# linux-only, and a subset of them are compiled with flags to make them static
# for use in Docker images "FROM scratch".
OS_BUILD_PLATFORMS=("${image_platforms[@]+"${image_platforms[@]}"}")
os::build::build_static_binaries "${OS_SCRATCH_IMAGE_COMPILE_TARGETS_LINUX[@]-}"
os::build::build_binaries "${OS_IMAGE_COMPILE_TARGETS_LINUX[@]-}"
# Build the primary client/server for all platforms
OS_BUILD_PLATFORMS=("${platforms[@]+"${platforms[@]}"}")
os::build::build_binaries "${OS_CROSS_COMPILE_TARGETS[@]-}"
# Build the test binaries for the host platform
OS_BUILD_PLATFORMS=("${test_platforms[@]+"${test_platforms[@]}"}")
os::build::build_binaries "${OS_TEST_TARGETS[@]-}"
# Place binaries only
OS_BUILD_PLATFORMS=("${platforms[@]+"${platforms[@]}"}") \
os::build::place_bins "${OS_CROSS_COMPILE_BINARIES[@]-}"
OS_BUILD_PLATFORMS=("${image_platforms[@]+"${image_platforms[@]}"}") \
os::build::place_bins "${OS_IMAGE_COMPILE_BINARIES[@]-}"
if [[ "${OS_GIT_TREE_STATE:-dirty}" == "clean" ]]; then
# only when we are building from a clean state can we claim to
# have created a valid set of binaries that can resemble a release
mkdir -p "${OS_OUTPUT_RELEASEPATH}"
echo "${OS_GIT_COMMIT}" > "${OS_OUTPUT_RELEASEPATH}/.commit"
fi
ret=$?; ENDTIME=$(date +%s); echo "$0 took $(($ENDTIME - $STARTTIME)) seconds"; exit "$ret"