From 9a901ed46db225f588cc691feeb47e7ace92bbc8 Mon Sep 17 00:00:00 2001 From: Abhishek Shah Date: Tue, 17 Mar 2015 16:02:27 -0700 Subject: [PATCH] build kube-apiserver, kube-scheduler and kube-controller-manager statically. --- hack/lib/golang.sh | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index 44e7c77971d..42cb427fb49 100644 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -79,6 +79,17 @@ readonly KUBE_ALL_TARGETS=( ) readonly KUBE_ALL_BINARIES=("${KUBE_ALL_TARGETS[@]##*/}") +readonly KUBE_STATIC_LIBRARIES=( + kube-apiserver + kube-controller-manager + kube-scheduler +) + +kube::golang::is_statically_linked_library() { + local e + for e in "${KUBE_STATIC_LIBRARIES[@]}"; do [[ "$1" == *"/$e" ]] && return 0; done; + return 1; +} # kube::binaries_from_targets take a list of build targets and return the # full go package to be built @@ -280,7 +291,7 @@ kube::golang::build_binaries() { local binaries binaries=($(kube::golang::binaries_from_targets "${targets[@]}")) - + local platform for platform in "${platforms[@]}"; do kube::golang::set_platform_envs "${platform}" @@ -297,15 +308,31 @@ kube::golang::build_binaries() { if [[ ${GOOS} == "windows" ]]; then bin="${bin}.exe" fi - go build -o "${output_path}/${bin}" \ + + if kube::golang::is_statically_linked_library "${binary}"; then + 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 - go install "${goflags[@]:+${goflags[@]}}" \ - -ldflags "${version_ldflags}" \ - "${binaries[@]}" + for binary in "${binaries[@]}"; do + if kube::golang::is_statically_linked_library "${binary}"; then + CGO_ENABLED=0 go install -installsuffix cgo "${goflags[@]:+${goflags[@]}}" \ + -ldflags "${version_ldflags}" \ + "${binary}" + else + go install "${goflags[@]:+${goflags[@]}}" \ + -ldflags "${version_ldflags}" \ + "${binary}" + fi + done fi done )