2014-06-17 06:16:40 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
2016-06-03 00:25:58 +00:00
|
|
|
# Copyright 2014 The Kubernetes Authors.
|
2014-06-17 06:16:40 +00:00
|
|
|
#
|
|
|
|
# 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.
|
|
|
|
|
2014-10-06 20:25:27 +00:00
|
|
|
set -o errexit
|
|
|
|
set -o nounset
|
|
|
|
set -o pipefail
|
2014-06-17 06:16:40 +00:00
|
|
|
|
2014-10-22 23:26:59 +00:00
|
|
|
# The root of the build/dist directory
|
2016-04-24 04:45:03 +00:00
|
|
|
KUBE_ROOT=$(cd $(dirname "${BASH_SOURCE}")/../.. && pwd -P)
|
2014-06-17 06:16:40 +00:00
|
|
|
|
2014-10-22 23:26:59 +00:00
|
|
|
KUBE_OUTPUT_SUBPATH="${KUBE_OUTPUT_SUBPATH:-_output/local}"
|
|
|
|
KUBE_OUTPUT="${KUBE_ROOT}/${KUBE_OUTPUT_SUBPATH}"
|
|
|
|
KUBE_OUTPUT_BINPATH="${KUBE_OUTPUT}/bin"
|
2014-09-09 22:03:32 +00:00
|
|
|
|
2016-05-30 12:18:06 +00:00
|
|
|
# Set no_proxy for localhost if behind a proxy, otherwise,
|
|
|
|
# the connections to localhost in scripts will time out
|
2016-05-25 00:26:16 +00:00
|
|
|
export no_proxy=127.0.0.1,localhost
|
|
|
|
|
2014-10-22 23:26:59 +00:00
|
|
|
source "${KUBE_ROOT}/hack/lib/util.sh"
|
2016-01-11 23:23:21 +00:00
|
|
|
source "${KUBE_ROOT}/cluster/lib/util.sh"
|
|
|
|
source "${KUBE_ROOT}/cluster/lib/logging.sh"
|
2014-06-17 06:16:40 +00:00
|
|
|
|
2014-10-22 23:26:59 +00:00
|
|
|
kube::log::install_errexit
|
2014-06-20 00:02:54 +00:00
|
|
|
|
2014-10-22 23:26:59 +00:00
|
|
|
source "${KUBE_ROOT}/hack/lib/version.sh"
|
|
|
|
source "${KUBE_ROOT}/hack/lib/golang.sh"
|
|
|
|
source "${KUBE_ROOT}/hack/lib/etcd.sh"
|
2014-06-17 06:16:40 +00:00
|
|
|
|
2014-11-17 00:29:58 +00:00
|
|
|
KUBE_OUTPUT_HOSTBIN="${KUBE_OUTPUT_BINPATH}/$(kube::util::host_platform)"
|
2015-12-17 17:36:20 +00:00
|
|
|
|
2016-04-24 04:45:03 +00:00
|
|
|
# This emulates "readlink -f" which is not available on MacOS X.
|
|
|
|
# Test:
|
|
|
|
# T=/tmp/$$.$RANDOM
|
|
|
|
# mkdir $T
|
|
|
|
# touch $T/file
|
|
|
|
# mkdir $T/dir
|
|
|
|
# ln -s $T/file $T/linkfile
|
|
|
|
# ln -s $T/dir $T/linkdir
|
|
|
|
# function testone() {
|
|
|
|
# X=$(readlink -f $1 2>&1)
|
|
|
|
# Y=$(kube::readlinkdashf $1 2>&1)
|
|
|
|
# if [ "$X" != "$Y" ]; then
|
|
|
|
# echo readlinkdashf $1: expected "$X", got "$Y"
|
|
|
|
# fi
|
|
|
|
# }
|
|
|
|
# testone /
|
|
|
|
# testone /tmp
|
|
|
|
# testone $T
|
|
|
|
# testone $T/file
|
|
|
|
# testone $T/dir
|
|
|
|
# testone $T/linkfile
|
|
|
|
# testone $T/linkdir
|
|
|
|
# testone $T/nonexistant
|
|
|
|
# testone $T/linkdir/file
|
|
|
|
# testone $T/linkdir/dir
|
|
|
|
# testone $T/linkdir/linkfile
|
|
|
|
# testone $T/linkdir/linkdir
|
|
|
|
function kube::readlinkdashf {
|
|
|
|
# run in a subshell for simpler 'cd'
|
|
|
|
(
|
|
|
|
if [[ -d "$1" ]]; then # This also catch symlinks to dirs.
|
|
|
|
cd "$1"
|
|
|
|
pwd -P
|
|
|
|
else
|
|
|
|
cd $(dirname "$1")
|
|
|
|
local f
|
|
|
|
f=$(basename "$1")
|
|
|
|
if [[ -L "$f" ]]; then
|
|
|
|
readlink "$f"
|
|
|
|
else
|
|
|
|
echo "$(pwd -P)/${f}"
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
)
|
2015-12-17 17:36:20 +00:00
|
|
|
}
|
|
|
|
|
2016-04-24 04:45:03 +00:00
|
|
|
# This emulates "realpath" which is not available on MacOS X
|
|
|
|
# Test:
|
|
|
|
# T=/tmp/$$.$RANDOM
|
|
|
|
# mkdir $T
|
|
|
|
# touch $T/file
|
|
|
|
# mkdir $T/dir
|
|
|
|
# ln -s $T/file $T/linkfile
|
|
|
|
# ln -s $T/dir $T/linkdir
|
|
|
|
# function testone() {
|
|
|
|
# X=$(realpath $1 2>&1)
|
|
|
|
# Y=$(kube::realpath $1 2>&1)
|
|
|
|
# if [ "$X" != "$Y" ]; then
|
|
|
|
# echo realpath $1: expected "$X", got "$Y"
|
|
|
|
# fi
|
|
|
|
# }
|
|
|
|
# testone /
|
|
|
|
# testone /tmp
|
|
|
|
# testone $T
|
|
|
|
# testone $T/file
|
|
|
|
# testone $T/dir
|
|
|
|
# testone $T/linkfile
|
|
|
|
# testone $T/linkdir
|
|
|
|
# testone $T/nonexistant
|
|
|
|
# testone $T/linkdir/file
|
|
|
|
# testone $T/linkdir/dir
|
|
|
|
# testone $T/linkdir/linkfile
|
|
|
|
# testone $T/linkdir/linkdir
|
|
|
|
kube::realpath() {
|
|
|
|
if [[ ! -e "$1" ]]; then
|
|
|
|
echo "$1: No such file or directory" >&2
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
kube::readlinkdashf "$1"
|
|
|
|
}
|