mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-08 03:33:56 +00:00
Merge pull request #122230 from thockin/update-vendor_cleanups
Small update-vendor cleanup
This commit is contained in:
commit
407c2c3015
@ -24,6 +24,8 @@ cd "$(pwd -P)"
|
|||||||
KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
KUBE_ROOT=$(dirname "${BASH_SOURCE[0]}")/..
|
||||||
source "${KUBE_ROOT}/hack/lib/init.sh"
|
source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||||
|
|
||||||
|
# Turn off workspaces until we are ready for them later
|
||||||
|
export GOWORK=off
|
||||||
# Explicitly opt into go modules, even though we're inside a GOPATH directory
|
# Explicitly opt into go modules, even though we're inside a GOPATH directory
|
||||||
export GO111MODULE=on
|
export GO111MODULE=on
|
||||||
# Explicitly set GOFLAGS to ignore vendor, since GOFLAGS=-mod=vendor breaks dependency resolution while rebuilding vendor
|
# Explicitly set GOFLAGS to ignore vendor, since GOFLAGS=-mod=vendor breaks dependency resolution while rebuilding vendor
|
||||||
@ -86,12 +88,13 @@ function ensure_require_replace_directives_for_all_dependencies() {
|
|||||||
|
|
||||||
# Propagate root replace/require directives into staging modules, in case we are downgrading, so they don't bump the root required version back up
|
# Propagate root replace/require directives into staging modules, in case we are downgrading, so they don't bump the root required version back up
|
||||||
for repo in $(kube::util::list_staging_repos); do
|
for repo in $(kube::util::list_staging_repos); do
|
||||||
pushd "staging/src/k8s.io/${repo}" >/dev/null 2>&1
|
(
|
||||||
|
cd "staging/src/k8s.io/${repo}"
|
||||||
jq -r '"-require \(.Path)@\(.Version)"' < "${require_json}" \
|
jq -r '"-require \(.Path)@\(.Version)"' < "${require_json}" \
|
||||||
| xargs -L 100 go mod edit -fmt
|
| xargs -L 100 go mod edit -fmt
|
||||||
jq -r '"-replace \(.Old.Path)=\(.New.Path)@\(.New.Version)"' < "${replace_json}" \
|
jq -r '"-replace \(.Old.Path)=\(.New.Path)@\(.New.Version)"' < "${replace_json}" \
|
||||||
| xargs -L 100 go mod edit -fmt
|
| xargs -L 100 go mod edit -fmt
|
||||||
popd >/dev/null 2>&1
|
)
|
||||||
done
|
done
|
||||||
|
|
||||||
# tidy to ensure require directives are added for indirect dependencies
|
# tidy to ensure require directives are added for indirect dependencies
|
||||||
@ -178,14 +181,16 @@ function add_generated_comments() {
|
|||||||
# Phase 1: ensure go.mod files for staging modules and main module
|
# Phase 1: ensure go.mod files for staging modules and main module
|
||||||
|
|
||||||
for repo in $(kube::util::list_staging_repos); do
|
for repo in $(kube::util::list_staging_repos); do
|
||||||
pushd "staging/src/k8s.io/${repo}" >/dev/null 2>&1
|
(
|
||||||
|
cd "staging/src/k8s.io/${repo}"
|
||||||
|
|
||||||
if [[ ! -f go.mod ]]; then
|
if [[ ! -f go.mod ]]; then
|
||||||
kube::log::status "go.mod: initialize ${repo}" >&11
|
kube::log::status "go.mod: initialize ${repo}" >&11
|
||||||
rm -f Godeps/Godeps.json # remove before initializing, staging Godeps are not authoritative
|
rm -f Godeps/Godeps.json # remove before initializing, staging Godeps are not authoritative
|
||||||
go mod init "k8s.io/${repo}"
|
go mod init "k8s.io/${repo}"
|
||||||
go mod edit -fmt
|
go mod edit -fmt
|
||||||
fi
|
fi
|
||||||
popd >/dev/null 2>&1
|
)
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ ! -f go.mod ]]; then
|
if [[ ! -f go.mod ]]; then
|
||||||
@ -205,7 +210,7 @@ go mod edit -json \
|
|||||||
go mod edit -json \
|
go mod edit -json \
|
||||||
| jq -r '.Replace[]? | select(.New.Path | startswith("./staging/")) | "-dropreplace \(.Old.Path)"' \
|
| jq -r '.Replace[]? | select(.New.Path | startswith("./staging/")) | "-dropreplace \(.Old.Path)"' \
|
||||||
| xargs -L 100 go mod edit -fmt
|
| xargs -L 100 go mod edit -fmt
|
||||||
# Readd
|
# Re-add
|
||||||
kube::util::list_staging_repos \
|
kube::util::list_staging_repos \
|
||||||
| while read -r X; do echo "-require k8s.io/${X}@v0.0.0"; done \
|
| while read -r X; do echo "-require k8s.io/${X}@v0.0.0"; done \
|
||||||
| xargs -L 100 go mod edit -fmt
|
| xargs -L 100 go mod edit -fmt
|
||||||
@ -229,7 +234,9 @@ group_directives
|
|||||||
|
|
||||||
kube::log::status "go.mod: propagate to staging modules" >&11
|
kube::log::status "go.mod: propagate to staging modules" >&11
|
||||||
for repo in $(kube::util::list_staging_repos); do
|
for repo in $(kube::util::list_staging_repos); do
|
||||||
pushd "staging/src/k8s.io/${repo}" >/dev/null 2>&1
|
(
|
||||||
|
cd "staging/src/k8s.io/${repo}"
|
||||||
|
|
||||||
echo "=== propagating to ${repo}"
|
echo "=== propagating to ${repo}"
|
||||||
# copy root go.mod, changing module name
|
# copy root go.mod, changing module name
|
||||||
sed "s#module k8s.io/kubernetes#module k8s.io/${repo}#" \
|
sed "s#module k8s.io/kubernetes#module k8s.io/${repo}#" \
|
||||||
@ -243,7 +250,7 @@ for repo in $(kube::util::list_staging_repos); do
|
|||||||
kube::util::list_staging_repos \
|
kube::util::list_staging_repos \
|
||||||
| while read -r X; do echo "-replace k8s.io/${X}=../${X}"; done \
|
| while read -r X; do echo "-replace k8s.io/${X}=../${X}"; done \
|
||||||
| xargs -L 100 go mod edit
|
| xargs -L 100 go mod edit
|
||||||
popd >/dev/null 2>&1
|
)
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
@ -265,20 +272,31 @@ while IFS= read -r repo; do
|
|||||||
# record existence of the repo to ensure modules with no peer relationships still get included in the order
|
# record existence of the repo to ensure modules with no peer relationships still get included in the order
|
||||||
echo "${repo} ${repo}" >> "${TMP_DIR}/tidy_deps.txt"
|
echo "${repo} ${repo}" >> "${TMP_DIR}/tidy_deps.txt"
|
||||||
|
|
||||||
pushd "${KUBE_ROOT}/staging/src/${repo}" >/dev/null 2>&1
|
(
|
||||||
|
cd "${KUBE_ROOT}/staging/src/${repo}"
|
||||||
|
|
||||||
# save the original go.mod, since go list doesn't just add missing entries, it also removes specific required versions from it
|
# save the original go.mod, since go list doesn't just add missing entries, it also removes specific required versions from it
|
||||||
tmp_go_mod="${TMP_DIR}/tidy_${repo/\//_}_go.mod.original"
|
tmp_go_mod="${TMP_DIR}/tidy_${repo/\//_}_go.mod.original"
|
||||||
tmp_go_deps="${TMP_DIR}/tidy_${repo/\//_}_deps.txt"
|
tmp_go_deps="${TMP_DIR}/tidy_${repo/\//_}_deps.txt"
|
||||||
cp go.mod "${tmp_go_mod}"
|
cp go.mod "${tmp_go_mod}"
|
||||||
|
|
||||||
{
|
echo "=== sorting ${repo}"
|
||||||
echo "=== sorting ${repo}"
|
# 'go list' calculates direct imports and updates go.mod so that go list -m lists our module dependencies
|
||||||
# 'go list' calculates direct imports and updates go.mod so that go list -m lists our module dependencies
|
echo "=== computing imports for ${repo}"
|
||||||
echo "=== computing imports for ${repo}"
|
go list all
|
||||||
go list all
|
# ignore errors related to importing `package main` packages, but catch
|
||||||
echo "=== computing tools imports for ${repo}"
|
# other errors (https://github.com/golang/go/issues/59186)
|
||||||
go list -e -tags=tools all
|
errs=()
|
||||||
}
|
kube::util::read-array errs < <(
|
||||||
|
go list -e -tags=tools -json all | jq -r '.Error.Err | select( . != null )' \
|
||||||
|
| grep -v "is a program, not an importable package"
|
||||||
|
)
|
||||||
|
if (( "${#errs[@]}" != 0 )); then
|
||||||
|
for err in "${errs[@]}"; do
|
||||||
|
echo "${err}" >&2
|
||||||
|
done
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# capture module dependencies
|
# capture module dependencies
|
||||||
go list -m -f '{{if not .Main}}{{.Path}}{{end}}' all > "${tmp_go_deps}"
|
go list -m -f '{{if not .Main}}{{.Path}}{{end}}' all > "${tmp_go_deps}"
|
||||||
@ -293,12 +311,13 @@ while IFS= read -r repo; do
|
|||||||
# switch the required version to an explicit v0.0.0 (rather than an unknown v0.0.0-00010101000000-000000000000)
|
# switch the required version to an explicit v0.0.0 (rather than an unknown v0.0.0-00010101000000-000000000000)
|
||||||
go mod edit -require "${dep}@v0.0.0"
|
go mod edit -require "${dep}@v0.0.0"
|
||||||
done
|
done
|
||||||
popd >/dev/null 2>&1
|
)
|
||||||
done < "${tidy_unordered}"
|
done < "${tidy_unordered}"
|
||||||
|
|
||||||
kube::log::status "go.mod: tidying" >&11
|
kube::log::status "go.mod: tidying" >&11
|
||||||
for repo in $(tsort "${TMP_DIR}/tidy_deps.txt"); do
|
for repo in $(tsort "${TMP_DIR}/tidy_deps.txt"); do
|
||||||
pushd "${KUBE_ROOT}/staging/src/${repo}" >/dev/null 2>&1
|
(
|
||||||
|
cd "${KUBE_ROOT}/staging/src/${repo}"
|
||||||
echo "=== tidying ${repo}"
|
echo "=== tidying ${repo}"
|
||||||
|
|
||||||
# prune replace directives that pin to the naturally selected version.
|
# prune replace directives that pin to the naturally selected version.
|
||||||
@ -318,8 +337,8 @@ for repo in $(tsort "${TMP_DIR}/tidy_deps.txt"); do
|
|||||||
# disallow transitive dependencies on k8s.io/kubernetes
|
# disallow transitive dependencies on k8s.io/kubernetes
|
||||||
loopback_deps=()
|
loopback_deps=()
|
||||||
kube::util::read-array loopback_deps < <(go list all 2>/dev/null | grep k8s.io/kubernetes/ || true)
|
kube::util::read-array loopback_deps < <(go list all 2>/dev/null | grep k8s.io/kubernetes/ || true)
|
||||||
if [[ -n ${loopback_deps[*]:+"${loopback_deps[*]}"} ]]; then
|
if (( "${#loopback_deps[@]}" > 0 )); then
|
||||||
kube::log::error "Disallowed ${repo} -> k8s.io/kubernetes dependencies exist via the following imports: $(go mod why "${loopback_deps[@]}")" >&22 2>&1
|
kube::log::error "${#loopback_deps[@]} disallowed ${repo} -> k8s.io/kubernetes dependencies exist via the following imports: $(go mod why "${loopback_deps[@]}")" >&22 2>&1
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -340,8 +359,7 @@ for repo in $(tsort "${TMP_DIR}/tidy_deps.txt"); do
|
|||||||
|
|
||||||
# group require/replace directives
|
# group require/replace directives
|
||||||
group_directives
|
group_directives
|
||||||
|
)
|
||||||
popd >/dev/null 2>&1
|
|
||||||
done
|
done
|
||||||
echo "=== tidying root"
|
echo "=== tidying root"
|
||||||
go mod tidy
|
go mod tidy
|
||||||
@ -356,8 +374,8 @@ xargs -L 100 go mod edit -fmt
|
|||||||
# disallow transitive dependencies on k8s.io/kubernetes
|
# disallow transitive dependencies on k8s.io/kubernetes
|
||||||
loopback_deps=()
|
loopback_deps=()
|
||||||
kube::util::read-array loopback_deps < <(go mod graph | grep ' k8s.io/kubernetes' || true)
|
kube::util::read-array loopback_deps < <(go mod graph | grep ' k8s.io/kubernetes' || true)
|
||||||
if [[ -n ${loopback_deps[*]:+"${loopback_deps[*]}"} ]]; then
|
if (( "${#loopback_deps[@]}" > 0 )); then
|
||||||
kube::log::error "Disallowed transitive k8s.io/kubernetes dependencies exist via the following imports:" >&22 2>&1
|
kube::log::error "${#loopback_deps[@]} disallowed transitive k8s.io/kubernetes dependencies exist via the following imports:" >&22 2>&1
|
||||||
kube::log::error "${loopback_deps[@]}" >&22 2>&1
|
kube::log::error "${loopback_deps[@]}" >&22 2>&1
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@ -372,9 +390,10 @@ add_generated_comments "
|
|||||||
// Run hack/update-vendor.sh to update go.mod files and the vendor directory.
|
// Run hack/update-vendor.sh to update go.mod files and the vendor directory.
|
||||||
"
|
"
|
||||||
for repo in $(kube::util::list_staging_repos); do
|
for repo in $(kube::util::list_staging_repos); do
|
||||||
pushd "staging/src/k8s.io/${repo}" >/dev/null 2>&1
|
(
|
||||||
|
cd "staging/src/k8s.io/${repo}"
|
||||||
add_generated_comments "// This is a generated file. Do not edit directly."
|
add_generated_comments "// This is a generated file. Do not edit directly."
|
||||||
popd >/dev/null 2>&1
|
)
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user