Smallish update-vendor cleanup
This commit is contained in:
		@@ -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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user