diff --git a/hack/pin-dependency.sh b/hack/pin-dependency.sh index 30356b46282..78ae0df3a1c 100755 --- a/hack/pin-dependency.sh +++ b/hack/pin-dependency.sh @@ -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 diff --git a/hack/update-vendor.sh b/hack/update-vendor.sh index 6c3b66fc489..42b17681dab 100755 --- a/hack/update-vendor.sh +++ b/hack/update-vendor.sh @@ -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() {