mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +00:00
Merge pull request #6360 from GoogleCloudPlatform/revert-6196-parallel_arch
Revert "Parallelize architectures in both the building and packaging pha...
This commit is contained in:
commit
4adc20e933
@ -511,35 +511,30 @@ function kube::release::package_client_tarballs() {
|
|||||||
# Find all of the built client binaries
|
# Find all of the built client binaries
|
||||||
local platform platforms
|
local platform platforms
|
||||||
platforms=($(cd "${LOCAL_OUTPUT_BINPATH}" ; echo */*))
|
platforms=($(cd "${LOCAL_OUTPUT_BINPATH}" ; echo */*))
|
||||||
for platform in "${platforms[@]}"; do
|
for platform in "${platforms[@]}" ; do
|
||||||
local platform_tag=${platform/\//-} # Replace a "/" for a "-"
|
local platform_tag=${platform/\//-} # Replace a "/" for a "-"
|
||||||
kube::log::status "Starting tarball: client $platform_tag"
|
kube::log::status "Building tarball: client $platform_tag"
|
||||||
|
|
||||||
(
|
local release_stage="${RELEASE_STAGE}/client/${platform_tag}/kubernetes"
|
||||||
local release_stage="${RELEASE_STAGE}/client/${platform_tag}/kubernetes"
|
rm -rf "${release_stage}"
|
||||||
rm -rf "${release_stage}"
|
mkdir -p "${release_stage}/client/bin"
|
||||||
mkdir -p "${release_stage}/client/bin"
|
|
||||||
|
|
||||||
local client_bins=("${KUBE_CLIENT_BINARIES[@]}")
|
local client_bins=("${KUBE_CLIENT_BINARIES[@]}")
|
||||||
if [[ "${platform%/*}" == "windows" ]]; then
|
if [[ "${platform%/*}" == "windows" ]]; then
|
||||||
client_bins=("${KUBE_CLIENT_BINARIES_WIN[@]}")
|
client_bins=("${KUBE_CLIENT_BINARIES_WIN[@]}")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# This fancy expression will expand to prepend a path
|
# This fancy expression will expand to prepend a path
|
||||||
# (${LOCAL_OUTPUT_BINPATH}/${platform}/) to every item in the
|
# (${LOCAL_OUTPUT_BINPATH}/${platform}/) to every item in the
|
||||||
# KUBE_CLIENT_BINARIES array.
|
# KUBE_CLIENT_BINARIES array.
|
||||||
cp "${client_bins[@]/#/${LOCAL_OUTPUT_BINPATH}/${platform}/}" \
|
cp "${client_bins[@]/#/${LOCAL_OUTPUT_BINPATH}/${platform}/}" \
|
||||||
"${release_stage}/client/bin/"
|
"${release_stage}/client/bin/"
|
||||||
|
|
||||||
kube::release::clean_cruft
|
kube::release::clean_cruft
|
||||||
|
|
||||||
local package_name="${RELEASE_DIR}/kubernetes-client-${platform_tag}.tar.gz"
|
local package_name="${RELEASE_DIR}/kubernetes-client-${platform_tag}.tar.gz"
|
||||||
kube::release::create_tarball "${package_name}" "${release_stage}/.."
|
kube::release::create_tarball "${package_name}" "${release_stage}/.."
|
||||||
) &
|
|
||||||
done
|
done
|
||||||
|
|
||||||
kube::log::status "Waiting on tarballs"
|
|
||||||
wait || { kube::log::error "client tarball creation failed"; exit 1; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Package up all of the server binaries
|
# Package up all of the server binaries
|
||||||
|
@ -313,76 +313,62 @@ kube::golang::build_binaries() {
|
|||||||
local binaries
|
local binaries
|
||||||
binaries=($(kube::golang::binaries_from_targets "${targets[@]}"))
|
binaries=($(kube::golang::binaries_from_targets "${targets[@]}"))
|
||||||
|
|
||||||
kube::log::status "Building go targets for ${platforms[@]} in parallel (output will appear in a burst when complete):" "${targets[@]}"
|
|
||||||
local platform
|
local platform
|
||||||
for platform in "${platforms[@]}"; do (
|
for platform in "${platforms[@]}"; do
|
||||||
kube::golang::set_platform_envs "${platform}"
|
kube::golang::set_platform_envs "${platform}"
|
||||||
kube::log::status "${platform}: Parallel go build started"
|
kube::log::status "Building go targets for ${platform}:" "${targets[@]}"
|
||||||
|
|
||||||
|
local -a statics=()
|
||||||
|
local -a nonstatics=()
|
||||||
|
for binary in "${binaries[@]}"; do
|
||||||
|
if kube::golang::is_statically_linked_library "${binary}"; then
|
||||||
|
kube::golang::exit_if_stdlib_not_installed;
|
||||||
|
statics+=($binary)
|
||||||
|
else
|
||||||
|
nonstatics+=($binary)
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -n ${use_go_build:-} ]]; then
|
||||||
|
# Try and replicate the native binary placement of go install without
|
||||||
|
# calling go install. This means we have to iterate each binary.
|
||||||
|
local output_path="${KUBE_GOPATH}/bin"
|
||||||
|
if [[ $platform != $host_platform ]]; then
|
||||||
|
output_path="${output_path}/${platform//\//_}"
|
||||||
|
fi
|
||||||
|
|
||||||
local -a statics=()
|
|
||||||
local -a nonstatics=()
|
|
||||||
for binary in "${binaries[@]}"; do
|
for binary in "${binaries[@]}"; do
|
||||||
|
local bin=$(basename "${binary}")
|
||||||
|
if [[ ${GOOS} == "windows" ]]; then
|
||||||
|
bin="${bin}.exe"
|
||||||
|
fi
|
||||||
|
|
||||||
if kube::golang::is_statically_linked_library "${binary}"; then
|
if kube::golang::is_statically_linked_library "${binary}"; then
|
||||||
kube::golang::exit_if_stdlib_not_installed;
|
kube::golang::exit_if_stdlib_not_installed;
|
||||||
statics+=($binary)
|
CGO_ENABLED=0 go build -installsuffix cgo -o "${output_path}/${bin}" \
|
||||||
|
"${goflags[@]:+${goflags[@]}}" \
|
||||||
|
-ldflags "${version_ldflags}" \
|
||||||
|
"${binary}"
|
||||||
else
|
else
|
||||||
nonstatics+=($binary)
|
go build -o "${output_path}/${bin}" \
|
||||||
|
"${goflags[@]:+${goflags[@]}}" \
|
||||||
|
-ldflags "${version_ldflags}" \
|
||||||
|
"${binary}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
else
|
||||||
if [[ -n ${use_go_build:-} ]]; then
|
|
||||||
# Try and replicate the native binary placement of go install without
|
|
||||||
# calling go install. This means we have to iterate each binary.
|
|
||||||
local output_path="${KUBE_GOPATH}/bin"
|
|
||||||
if [[ $platform != $host_platform ]]; then
|
|
||||||
output_path="${output_path}/${platform//\//_}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for binary in "${binaries[@]}"; do
|
|
||||||
local bin=$(basename "${binary}")
|
|
||||||
if [[ ${GOOS} == "windows" ]]; then
|
|
||||||
bin="${bin}.exe"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if kube::golang::is_statically_linked_library "${binary}"; then
|
|
||||||
kube::golang::exit_if_stdlib_not_installed;
|
|
||||||
CGO_ENABLED=0 go build -installsuffix cgo -o "${output_path}/${bin}" \
|
|
||||||
"${goflags[@]:+${goflags[@]}}" \
|
|
||||||
-ldflags "${version_ldflags}" \
|
|
||||||
"${binary}"
|
|
||||||
else
|
|
||||||
go build -o "${output_path}/${bin}" \
|
|
||||||
"${goflags[@]:+${goflags[@]}}" \
|
|
||||||
-ldflags "${version_ldflags}" \
|
|
||||||
"${binary}"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
|
||||||
# Use go install.
|
# Use go install.
|
||||||
if [[ "${#nonstatics[@]}" != 0 ]]; then
|
if [[ "${#nonstatics[@]}" != 0 ]]; then
|
||||||
go install "${goflags[@]:+${goflags[@]}}" \
|
go install "${goflags[@]:+${goflags[@]}}" \
|
||||||
-ldflags "${version_ldflags}" \
|
-ldflags "${version_ldflags}" \
|
||||||
"${nonstatics[@]:+${nonstatics[@]}}"
|
"${nonstatics[@]:+${nonstatics[@]}}"
|
||||||
fi
|
fi
|
||||||
if [[ "${#statics[@]}" != 0 ]]; then
|
if [[ "${#statics[@]}" != 0 ]]; then
|
||||||
CGO_ENABLED=0 go install -installsuffix cgo "${goflags[@]:+${goflags[@]}}" \
|
CGO_ENABLED=0 go install -installsuffix cgo "${goflags[@]:+${goflags[@]}}" \
|
||||||
-ldflags "${version_ldflags}" \
|
-ldflags "${version_ldflags}" \
|
||||||
"${statics[@]:+${statics[@]}}"
|
"${statics[@]:+${statics[@]}}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
kube::log::status "${platform}: Parallel go build finished"
|
|
||||||
) &> "/tmp//${platform//\//_}.build" &
|
|
||||||
done
|
done
|
||||||
|
|
||||||
local fails=0
|
|
||||||
for job in $(jobs -p); do
|
|
||||||
wait ${job} || let "fails+=1"
|
|
||||||
done
|
|
||||||
|
|
||||||
for platform in "${platforms[@]}"; do
|
|
||||||
cat "/tmp//${platform//\//_}.build"
|
|
||||||
done
|
|
||||||
|
|
||||||
exit ${fails}
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user