From dca376a03ef43df2714eafd431a76646346c9094 Mon Sep 17 00:00:00 2001 From: Jeff Grafton Date: Wed, 23 May 2018 12:03:27 -0700 Subject: [PATCH 1/2] Add KUBE_CGO_OVERRIDES env var to force enabling CGO --- hack/lib/golang.sh | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index 9f229168a8a..88e0a8f6520 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -213,12 +213,24 @@ readonly KUBE_STATIC_LIBRARIES=( kubectl ) +# KUBE_CGO_OVERRIDES is a space-separated list of binaries which should be built +# with CGO enabled, assuming CGO is supported on the target platform. +# This overrides any entry in KUBE_STATIC_LIBRARIES. +IFS=" " read -ra KUBE_CGO_OVERRIDES <<< "${KUBE_CGO_OVERRIDES:-}" +readonly KUBE_CGO_OVERRIDES +# KUBE_STATIC_OVERRIDES is a space-separated list of binaries which should be +# built with CGO disabled. This is in addition to the list in +# KUBE_STATIC_LIBRARIES. +IFS=" " read -ra KUBE_STATIC_OVERRIDES <<< "${KUBE_STATIC_OVERRIDES:-}" +readonly KUBE_STATIC_OVERRIDES + kube::golang::is_statically_linked_library() { local e + if [[ -n "${KUBE_CGO_OVERRIDES:+x}" ]]; then + for e in "${KUBE_CGO_OVERRIDES[@]}"; do [[ "$1" == *"/$e" ]] && return 1; done; + fi for e in "${KUBE_STATIC_LIBRARIES[@]}"; do [[ "$1" == *"/$e" ]] && return 0; done; - # Allow individual overrides--e.g., so that you can get a static build of - # kubectl for inclusion in a container. - if [ -n "${KUBE_STATIC_OVERRIDES:+x}" ]; then + if [[ -n "${KUBE_STATIC_OVERRIDES:+x}" ]]; then for e in "${KUBE_STATIC_OVERRIDES[@]}"; do [[ "$1" == *"/$e" ]] && return 0; done; fi return 1; From e4ded2b3ecb3084bfb6111e81b2741bead8ccc14 Mon Sep 17 00:00:00 2001 From: Jeff Grafton Date: Wed, 23 May 2018 12:23:00 -0700 Subject: [PATCH 2/2] Explictly enable cgo when building kubectl for darwin from darwin --- hack/lib/golang.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hack/lib/golang.sh b/hack/lib/golang.sh index 88e0a8f6520..c5d463483bf 100755 --- a/hack/lib/golang.sh +++ b/hack/lib/golang.sh @@ -226,6 +226,9 @@ readonly KUBE_STATIC_OVERRIDES kube::golang::is_statically_linked_library() { local e + # Explicitly enable cgo when building kubectl for darwin from darwin. + [[ "$(go env GOHOSTOS)" == "darwin" && "$(go env GOOS)" == "darwin" && + "$1" == *"/kubectl" ]] && return 1 if [[ -n "${KUBE_CGO_OVERRIDES:+x}" ]]; then for e in "${KUBE_CGO_OVERRIDES[@]}"; do [[ "$1" == *"/$e" ]] && return 1; done; fi