Update dependencies (#5518)
This commit is contained in:
@@ -70,36 +70,29 @@ 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/kubesphere.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
|
||||
go list -m -json all \
|
||||
| jq -r 'select(.Main != true) | select(.Indirect == true) | "-require \(.Path)@\(.Version)"' \
|
||||
| xargs -L 100 go mod edit -fmt
|
||||
# tidy to ensure require directives are added for indirect dependencies
|
||||
go mod tidy
|
||||
}
|
||||
|
||||
# 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() {
|
||||
local directive="$1"
|
||||
local file="$2"
|
||||
|
||||
if [ -s "${file}" ]; then
|
||||
echo "${directive} ("
|
||||
cat "$file"
|
||||
echo ")"
|
||||
fi
|
||||
}
|
||||
|
||||
function group_directives() {
|
||||
@@ -134,15 +127,9 @@ function group_directives() {
|
||||
" < go.mod
|
||||
{
|
||||
cat "${go_mod_other}";
|
||||
echo "require (";
|
||||
cat "${go_mod_require_direct}";
|
||||
echo ")";
|
||||
echo "require (";
|
||||
cat "${go_mod_require_indirect}";
|
||||
echo ")";
|
||||
echo "replace (";
|
||||
cat "${go_mod_replace}";
|
||||
echo ")";
|
||||
print_go_mod_section "require" "${go_mod_require_direct}"
|
||||
print_go_mod_section "require" "${go_mod_require_indirect}"
|
||||
print_go_mod_section "replace" "${go_mod_replace}"
|
||||
} > go.mod
|
||||
|
||||
go mod edit -fmt
|
||||
@@ -316,7 +303,7 @@ for repo in $(tsort "${TMP_DIR}/tidy_deps.txt"); do
|
||||
|
||||
# disallow transitive dependencies on kubesphere.io/kubesphere
|
||||
loopback_deps=()
|
||||
kube::util::read-array loopback_deps < <(go list all 2>/dev/null | grep kubesphere.io/kubernetes/ || true)
|
||||
kube::util::read-array loopback_deps < <(go list all 2>/dev/null | grep kubesphere.io/kubesphere/ || true)
|
||||
if [[ -n ${loopback_deps[*]:+"${loopback_deps[*]}"} ]]; then
|
||||
kube::log::error "Disallowed ${repo} -> kubesphere.io/kubesphere dependencies exist via the following imports:
|
||||
$(go mod why "${loopback_deps[@]}")"
|
||||
@@ -346,6 +333,13 @@ done
|
||||
echo "=== tidying root" >> "${LOG_FILE}"
|
||||
go mod tidy >>"${LOG_FILE}" 2>&1
|
||||
|
||||
# prune unused pinned non-local replace directives
|
||||
comm -23 \
|
||||
<(go mod edit -json | jq -r '.Replace[] | select(.New.Path | startswith("./") | not) | .Old.Path' | sort) \
|
||||
<(go list -m -json all | jq -r .Path | sort) |
|
||||
while read -r X; do echo "-dropreplace=${X}"; done |
|
||||
xargs -L 100 go mod edit -fmt
|
||||
|
||||
# disallow transitive dependencies on kubesphere.io/kubesphere
|
||||
loopback_deps=()
|
||||
kube::util::read-array loopback_deps < <(go mod graph | grep ' kubesphere.io/kubesphere' || true)
|
||||
@@ -392,4 +386,4 @@ cat <<__EOF__ > "vendor/OWNERS"
|
||||
|
||||
__EOF__
|
||||
|
||||
kube::log::status "NOTE: don't forget to handle vendor/* files that were added or removed"
|
||||
kube::log::status "NOTE: don't forget to handle vendor/* and LICENSE/* files that were added or removed"
|
||||
@@ -64,4 +64,4 @@ golangci-lint run \
|
||||
-E bodyclose \
|
||||
--skip-dirs pkg/client \
|
||||
--new-from-rev=HEAD^ \
|
||||
pkg/... cmd/... test/... kube/...
|
||||
pkg/... cmd/... tools/... test/... kube/...
|
||||
|
||||
Reference in New Issue
Block a user