From d6adc37a0a9b8571a0e18473be6f3eeef63fb565 Mon Sep 17 00:00:00 2001 From: Chao Xu Date: Wed, 19 Jul 2017 17:21:06 -0700 Subject: [PATCH] Do not allow vendored code to import staging code --- hack/verify-no-vendor-cycles.sh | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/hack/verify-no-vendor-cycles.sh b/hack/verify-no-vendor-cycles.sh index 0ca1672f43e..3699ed982d4 100755 --- a/hack/verify-no-vendor-cycles.sh +++ b/hack/verify-no-vendor-cycles.sh @@ -18,13 +18,24 @@ set -o errexit set -o nounset set -o pipefail +KUBE_ROOT=$(dirname "${BASH_SOURCE}")/.. + +staging_repos=($(ls "${KUBE_ROOT}/staging/src/k8s.io/")) +staging_repos_pattern=$(IFS="|"; echo "${staging_repos[*]}") + failed=false for i in $(find vendor/ -type d); do - deps=$(go list -f '{{range .Deps}}{{.}}{{"\n"}}{{end}}' ./$i 2> /dev/null | grep -v "k8s.io/kubernetes/vendor/" | grep "k8s.io/kubernetes" || echo "") - if [ -n "${deps}" ]; then + deps=$(go list -f '{{range .Deps}}{{.}}{{"\n"}}{{end}}' ./$i 2> /dev/null || echo "") + deps_on_main=$(echo "${deps}" | grep -v "k8s.io/kubernetes/vendor/" | grep "k8s.io/kubernetes" || echo "") + if [ -n "${deps_on_main}" ]; then echo "Package ${i} has a cyclic dependency on the main repository." failed=true fi + deps_on_staging=$(echo "${deps}" | grep "k8s.io/kubernetes/vendor/k8s.io" | grep -E ${staging_repos_pattern} || echo "") + if [ -n "${deps_on_staging}" ]; then + echo "Package ${i} has a cyclic dependency on staging repository packages: ${deps_on_staging}" + failed=true + fi done if [[ "${failed}" == "true" ]]; then