mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
staging/copy.sh: add safety check for k8s.io/apimachinery/ in GOPATH
This commit is contained in:
parent
dd9219f304
commit
0b07908358
@ -69,7 +69,7 @@ else
|
||||
fi
|
||||
|
||||
cleanup() {
|
||||
rm -rf "${CLIENT_REPO_TEMP}"
|
||||
rm -rf "${CLIENT_REPO_TEMP}"
|
||||
}
|
||||
|
||||
trap cleanup EXIT SIGINT
|
||||
@ -88,8 +88,8 @@ cd "${CLIENT_REPO}"
|
||||
# save copies code from client-go into the temp folder to make sure we don't lose it by accident
|
||||
# TODO this is temporary until everything in certain directories is authoritative
|
||||
function save() {
|
||||
mkdir -p "$(dirname "${CLIENT_REPO_TEMP}/$1")"
|
||||
cp -r "${CLIENT_REPO}/$1"* "${CLIENT_REPO_TEMP}/"
|
||||
mkdir -p "$(dirname "${CLIENT_REPO_TEMP}/$1")"
|
||||
cp -r "${CLIENT_REPO}/$1"* "${CLIENT_REPO_TEMP}/"
|
||||
}
|
||||
|
||||
# save everything for which the staging directory is the source of truth
|
||||
@ -107,7 +107,7 @@ save "OWNERS"
|
||||
|
||||
# mkcp copies file from the main repo to the client repo, it creates the directory if it doesn't exist in the client repo.
|
||||
function mkcp() {
|
||||
mkdir -p "${CLIENT_REPO_TEMP}/$2" && cp -r "${MAIN_REPO}/$1" "${CLIENT_REPO_TEMP}/$2"
|
||||
mkdir -p "${CLIENT_REPO_TEMP}/$2" && cp -r "${MAIN_REPO}/$1" "${CLIENT_REPO_TEMP}/$2"
|
||||
}
|
||||
|
||||
# assemble all the other parts of the staging directory
|
||||
@ -120,6 +120,12 @@ find "${MAIN_REPO}/pkg/version" -maxdepth 1 -type f | xargs -I{} cp {} "${CLIENT
|
||||
mkcp "pkg/client/clientset_generated/${CLIENTSET}" "pkg/client/clientset_generated"
|
||||
mkcp "pkg/client/informers/informers_generated/externalversions" "pkg/client/informers/informers_generated"
|
||||
|
||||
# safety check that we don't have another apimachinery in the GOPATH
|
||||
if go list -f '{{.Dir}}' k8s.io/apimachinery/pkg/runtime &>/dev/null; then
|
||||
echo "ERROR: unexpected k8s.io/apimachinery in GOPATH '$GOPATH'" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pushd "${CLIENT_REPO_TEMP}" > /dev/null
|
||||
echo "generating vendor/"
|
||||
# client-go depends on some apimachinery packages. Adding staging/ to the GOPATH
|
||||
@ -143,9 +149,9 @@ go run "${KUBE_ROOT}/staging/godeps-json-updater.go" --godeps-file="${CLIENT_REP
|
||||
|
||||
echo "rewriting imports"
|
||||
grep -Rl "\"${MAIN_REPO_FROM_SRC}" "${CLIENT_REPO_TEMP}" | \
|
||||
grep "\.go" | \
|
||||
grep -v "vendor/" | \
|
||||
xargs ${SED} -i "s|\"${MAIN_REPO_FROM_SRC}|\"${CLIENT_REPO_FROM_SRC}|g"
|
||||
grep "\.go" | \
|
||||
grep -v "vendor/" | \
|
||||
xargs ${SED} -i "s|\"${MAIN_REPO_FROM_SRC}|\"${CLIENT_REPO_FROM_SRC}|g"
|
||||
|
||||
echo "rewrite proto names in proto.RegisterType"
|
||||
find "${CLIENT_REPO_TEMP}" -type f -name "generated.pb.go" -print0 | xargs -0 ${SED} -i "s/k8s\.io\.kubernetes/k8s.io.client-go/g"
|
||||
@ -160,37 +166,37 @@ find "${CLIENT_REPO_TEMP}" -type f -name "*.go" -print0 | xargs -0 ${SED} -i '/^
|
||||
echo "rearranging directory layout"
|
||||
# $1 and $2 are relative to ${CLIENT_REPO_TEMP}
|
||||
function mvfolder {
|
||||
local src=${1%/#/}
|
||||
local dst=${2%/#/}
|
||||
mkdir -p "${CLIENT_REPO_TEMP}/${dst}"
|
||||
# move
|
||||
mv "${CLIENT_REPO_TEMP}/${src}"/* "${CLIENT_REPO_TEMP}/${dst}"
|
||||
# rewrite package
|
||||
local src_package="${src##*/}"
|
||||
local dst_package="${dst##*/}"
|
||||
find "${CLIENT_REPO_TEMP}/${dst}" -type f -name "*.go" -print0 | xargs -0 ${SED} -i "s,package ${src_package},package ${dst_package},g"
|
||||
local src=${1%/#/}
|
||||
local dst=${2%/#/}
|
||||
mkdir -p "${CLIENT_REPO_TEMP}/${dst}"
|
||||
# move
|
||||
mv "${CLIENT_REPO_TEMP}/${src}"/* "${CLIENT_REPO_TEMP}/${dst}"
|
||||
# rewrite package
|
||||
local src_package="${src##*/}"
|
||||
local dst_package="${dst##*/}"
|
||||
find "${CLIENT_REPO_TEMP}/${dst}" -type f -name "*.go" -print0 | xargs -0 ${SED} -i "s,package ${src_package},package ${dst_package},g"
|
||||
|
||||
{ grep -Rl "\"${CLIENT_REPO_FROM_SRC}/${src}" "${CLIENT_REPO_TEMP}" || true ; } | while read -r target ; do
|
||||
# rewrite imports
|
||||
# the first rule is to convert import lines like `restclient "k8s.io/client-go/pkg/client/restclient"`,
|
||||
# where a package alias is the same the package name.
|
||||
${SED} -i "s,\<${src_package} \"${CLIENT_REPO_FROM_SRC}/${src},${dst_package} \"${CLIENT_REPO_FROM_SRC}/${dst},g" "${target}"
|
||||
${SED} -i "s,\"${CLIENT_REPO_FROM_SRC}/${src},\"${CLIENT_REPO_FROM_SRC}/${dst},g" "${target}"
|
||||
# rewrite import invocation
|
||||
if [ "${src_package}" != "${dst_package}" ]; then
|
||||
${SED} -i "s,\<${src_package}\.\([a-zA-Z]\),${dst_package}\.\1,g" "${target}"
|
||||
fi
|
||||
done
|
||||
{ grep -Rl "\"${CLIENT_REPO_FROM_SRC}/${src}" "${CLIENT_REPO_TEMP}" || true ; } | while read -r target ; do
|
||||
# rewrite imports
|
||||
# the first rule is to convert import lines like `restclient "k8s.io/client-go/pkg/client/restclient"`,
|
||||
# where a package alias is the same the package name.
|
||||
${SED} -i "s,\<${src_package} \"${CLIENT_REPO_FROM_SRC}/${src},${dst_package} \"${CLIENT_REPO_FROM_SRC}/${dst},g" "${target}"
|
||||
${SED} -i "s,\"${CLIENT_REPO_FROM_SRC}/${src},\"${CLIENT_REPO_FROM_SRC}/${dst},g" "${target}"
|
||||
# rewrite import invocation
|
||||
if [ "${src_package}" != "${dst_package}" ]; then
|
||||
${SED} -i "s,\<${src_package}\.\([a-zA-Z]\),${dst_package}\.\1,g" "${target}"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
mvfolder "pkg/client/clientset_generated/${CLIENTSET}" kubernetes
|
||||
mvfolder "pkg/client/informers/informers_generated/externalversions" informers
|
||||
mvfolder "pkg/client/listers" listers
|
||||
if [ "$(find "${CLIENT_REPO_TEMP}"/pkg/client -type f -name "*.go")" ]; then
|
||||
echo "${CLIENT_REPO_TEMP}/pkg/client is expected to be empty"
|
||||
exit 1
|
||||
echo "${CLIENT_REPO_TEMP}/pkg/client is expected to be empty"
|
||||
exit 1
|
||||
else
|
||||
rm -r "${CLIENT_REPO_TEMP}"/pkg/client
|
||||
rm -r "${CLIENT_REPO_TEMP}"/pkg/client
|
||||
fi
|
||||
|
||||
echo "running gofmt"
|
||||
@ -198,12 +204,12 @@ find "${CLIENT_REPO_TEMP}" -type f -name "*.go" -print0 | xargs -0 gofmt -w
|
||||
|
||||
echo "remove black listed files"
|
||||
find "${CLIENT_REPO_TEMP}" -type f \( \
|
||||
-name "*BUILD" -o \
|
||||
-name "*.json" -not -name "Godeps.json" -o \
|
||||
-name "*.yaml" -o \
|
||||
-name "*.yml" -o \
|
||||
-name "*.sh" \
|
||||
\) -delete
|
||||
-name "*BUILD" -o \
|
||||
-name "*.json" -not -name "Godeps.json" -o \
|
||||
-name "*.yaml" -o \
|
||||
-name "*.yml" -o \
|
||||
-name "*.sh" \
|
||||
\) -delete
|
||||
|
||||
echo "remove cyclical godep"
|
||||
rm -rf "${CLIENT_REPO_TEMP}/_vendor/k8s.io/client-go"
|
||||
@ -232,8 +238,8 @@ fi
|
||||
# clean the ${CLIENT_REPO}
|
||||
echo "move to the client repo"
|
||||
if [ "${DRY_RUN}" = false ]; then
|
||||
ls "${CLIENT_REPO}" | { grep -v '_tmp' || true; } | xargs rm -rf
|
||||
mv "${CLIENT_REPO_TEMP}"/* "${CLIENT_REPO}"
|
||||
ls "${CLIENT_REPO}" | { grep -v '_tmp' || true; } | xargs rm -rf
|
||||
mv "${CLIENT_REPO_TEMP}"/* "${CLIENT_REPO}"
|
||||
fi
|
||||
|
||||
cleanup
|
||||
|
Loading…
Reference in New Issue
Block a user