From b4bbf0a69fc7b90ba20159ad2d94d842ff3f5562 Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Fri, 24 Apr 2020 00:22:21 +0300 Subject: [PATCH] /cluster: cleanup clientbin.sh clientbin.sh is only used in kubectl.sh. It contains logic for finding a binary that was build from the k/k tree and for printing errors if the binary cannot be found. - Remove clientbin.sh - Remove references of clientbin.sh from /cluster/BUILD - Use hack/lib/util.sh's kube::util::find-binary for finding the binary --- cluster/BUILD | 8 ---- cluster/clientbin.sh | 110 ------------------------------------------- cluster/kubectl.sh | 16 +++++-- 3 files changed, 13 insertions(+), 121 deletions(-) delete mode 100755 cluster/clientbin.sh diff --git a/cluster/BUILD b/cluster/BUILD index 87433619a07..8ae35f0eda7 100644 --- a/cluster/BUILD +++ b/cluster/BUILD @@ -44,14 +44,6 @@ sh_test( ], ) -sh_test( - name = "clientbin_test", - srcs = ["clientbin.sh"], - deps = [ - "//hack/lib", - ], -) - sh_test( name = "kube-util_test", srcs = ["kube-util.sh"], diff --git a/cluster/clientbin.sh b/cluster/clientbin.sh deleted file mode 100755 index 82d6d68263d..00000000000 --- a/cluster/clientbin.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env bash - -# Copyright 2016 The Kubernetes Authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -set -o errexit -set -o nounset -set -o pipefail - -KUBE_ROOT=${KUBE_ROOT:-$(dirname "${BASH_SOURCE[0]}")/..} - -# Detect the OS name/arch so that we can find our binary -case "$(uname -s)" in - Darwin) - host_os=darwin - ;; - Linux) - host_os=linux - ;; - *) - echo "Unsupported host OS. Must be Linux or Mac OS X." >&2 - exit 1 - ;; -esac - -case "$(uname -m)" in - x86_64*) - host_arch=amd64 - ;; - i?86_64*) - host_arch=amd64 - ;; - amd64*) - host_arch=amd64 - ;; - arm*) - host_arch=arm - ;; - aarch64*) - host_arch=arm64 - ;; - i?86*) - host_arch=386 - ;; - s390x*) - host_arch=s390x - ;; - ppc64le*) - host_arch=ppc64le - ;; - *) - echo "Unsupported host arch. Must be x86_64, 386, arm, s390x or ppc64le." >&2 - exit 1 - ;; -esac - -function get_bin() { - bin="${1:-}" - srcdir="${2:-}" - if [[ "${bin}" == "" ]]; then - echo "Binary name is required" - exit 1 - fi - if [[ "${srcdir}" == "" ]]; then - echo "Source directory path is required" - exit 1 - fi - - locations=( - "${KUBE_ROOT}/_output/bin/${bin}" - "${KUBE_ROOT}/_output/dockerized/bin/${host_os}/${host_arch}/${bin}" - "${KUBE_ROOT}/_output/local/bin/${host_os}/${host_arch}/${bin}" - "${KUBE_ROOT}/platforms/${host_os}/${host_arch}/${bin}" - ) - # Also search for binary in bazel build tree. - # The bazel go rules place binaries in subtrees like - # "bazel-bin/source/path/linux_amd64_pure_stripped/binaryname", so make sure - # the platform name is matched in the path. - while IFS=$'\n' read -r line; do - locations+=( "${line}" ) - done < <(find "${KUBE_ROOT}/bazel-bin/${srcdir}" -type f -executable \ - -path "*/${host_os}_${host_arch}*/${bin}" 2>/dev/null || true) - - (ls -t "${locations[@]}" 2>/dev/null || true) | head -1 -} - -function print_error() { - { - echo "It looks as if you don't have a compiled ${1:-} binary" - echo - echo "If you are running from a clone of the git repo, please run" - echo "'./build/run.sh make cross'. Note that this requires having" - echo "Docker installed." - echo - echo "If you are running from a binary release tarball, something is wrong. " - echo "Look at http://kubernetes.io/ for information on how to contact the " - echo "development team for help." - } >&2 -} diff --git a/cluster/kubectl.sh b/cluster/kubectl.sh index c9b4784177e..1c8e3ec59bc 100755 --- a/cluster/kubectl.sh +++ b/cluster/kubectl.sh @@ -32,15 +32,25 @@ set -o pipefail KUBE_ROOT=${KUBE_ROOT:-$(dirname "${BASH_SOURCE[0]}")/..} source "${KUBE_ROOT}/cluster/kube-util.sh" -source "${KUBE_ROOT}/cluster/clientbin.sh" +source "${KUBE_ROOT}/hack/lib/util.sh" # If KUBECTL_PATH isn't set, gather up the list of likely places and use ls # to find the latest one. if [[ -z "${KUBECTL_PATH:-}" ]]; then - kubectl=$( get_bin "kubectl" "cmd/kubectl" ) + kubectl=$( kube::util::find-binary "kubectl" ) if [[ ! -x "$kubectl" ]]; then - print_error "kubectl" + { + echo "It looks as if you don't have a compiled kubectl binary" + echo + echo "If you are running from a clone of the git repo, please run" + echo "'./build/run.sh make cross'. Note that this requires having" + echo "Docker installed." + echo + echo "If you are running from a binary release tarball, something is wrong. " + echo "Look at http://kubernetes.io/ for information on how to contact the " + echo "development team for help." + } >&2 exit 1 fi elif [[ ! -x "${KUBECTL_PATH}" ]]; then