mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 12:15:52 +00:00
Stop adding explicit replace directives for all requires
This was originally added in the early days of go.mod in order to ensure that the root k8s.io/kubernetes go.mod file reflected all the versions of dependencies we were using, and to ensure that go commands didn't spuriously increment these versions. With module pruning in go1.17+ and go defaulting to mod=readonly mode in go1.16+, this is no longer necessary.
This commit is contained in:
parent
367f01f62d
commit
a82d2b9e08
@ -94,16 +94,15 @@ echo "Running: go mod edit -require ${dep}@${rev}"
|
||||
go mod edit -require "${dep}@${rev}"
|
||||
|
||||
# Add the replace directive
|
||||
echo "Running: go mod edit -replace ${dep}=${replacement}@${rev}"
|
||||
go mod edit -replace "${dep}=${replacement}@${rev}"
|
||||
if [ "${replacement}" != "${dep}" ]; then
|
||||
echo "Running: go mod edit -replace ${dep}=${replacement}@${rev}"
|
||||
go mod edit -replace "${dep}=${replacement}@${rev}"
|
||||
fi
|
||||
|
||||
# Propagate pinned version to staging repos that also have that dependency
|
||||
# Propagate pinned version to staging repos
|
||||
for repo in $(kube::util::list_staging_repos); do
|
||||
pushd "staging/src/k8s.io/${repo}" >/dev/null 2>&1
|
||||
if go mod edit -json | jq -e -r ".Require[] | select(.Path == \"${dep}\")" > /dev/null 2>&1; then
|
||||
go mod edit -require "${dep}@${rev}"
|
||||
go mod edit -replace "${dep}=${replacement}@${rev}"
|
||||
fi
|
||||
go mod edit -require "${dep}@${rev}"
|
||||
|
||||
# When replacing with a fork, always add a replace statement in all go.mod
|
||||
# files (not just the root of the staging repos!) because there might be
|
||||
|
@ -82,36 +82,20 @@ function ensure_require_replace_directives_for_all_dependencies() {
|
||||
| jq -r ".Replace // [] | sort | .[] | select(${replace_filter})" \
|
||||
> "${replace_json}"
|
||||
|
||||
# 1a. Ensure replace directives have an explicit require directive
|
||||
jq -r '"-require \(.Old.Path)@\(.New.Version)"' < "${replace_json}" \
|
||||
| xargs -L 100 go mod edit -fmt
|
||||
# 1b. Ensure require directives have a corresponding replace directive pinning a version
|
||||
jq -r '"-replace \(.Path)=\(.Path)@\(.Version)"' < "${require_json}" \
|
||||
| xargs -L 100 go mod edit -fmt
|
||||
jq -r '"-replace \(.Old.Path)=\(.New.Path)@\(.New.Version)"' < "${replace_json}" \
|
||||
| xargs -L 100 go mod edit -fmt
|
||||
|
||||
# 2. 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
|
||||
pushd "staging/src/k8s.io/${repo}" >/dev/null 2>&1
|
||||
jq -r '"-require \(.Path)@\(.Version)"' < "${require_json}" \
|
||||
| xargs -L 100 go mod edit -fmt
|
||||
jq -r '"-replace \(.Path)=\(.Path)@\(.Version)"' < "${require_json}" \
|
||||
| xargs -L 100 go mod edit -fmt
|
||||
jq -r '"-replace \(.Old.Path)=\(.New.Path)@\(.New.Version)"' < "${replace_json}" \
|
||||
| xargs -L 100 go mod edit -fmt
|
||||
popd >/dev/null 2>&1
|
||||
done
|
||||
|
||||
# 3. Add explicit require directives for indirect dependencies
|
||||
# Add explicit require directives for indirect dependencies
|
||||
go list -m -json all \
|
||||
| jq -r 'select(.Main != true) | select(.Indirect == true) | "-require \(.Path)@\(.Version)"' \
|
||||
| xargs -L 100 go mod edit -fmt
|
||||
|
||||
# 4. Add explicit replace directives pinning dependencies that aren't pinned yet
|
||||
go list -m -json all \
|
||||
| jq -r 'select(.Main != true) | select(.Replace == null) | "-replace \(.Path)=\(.Path)@\(.Version)"' \
|
||||
| xargs -L 100 go mod edit -fmt
|
||||
}
|
||||
|
||||
function print_go_mod_section() {
|
||||
|
Loading…
Reference in New Issue
Block a user