Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

All Bazel commands fail when changing a Go dependency when using Bzlmod extension #1855

Closed
chenxiao0228 opened this issue Aug 5, 2024 · 3 comments · Fixed by #1861
Closed

Comments

@chenxiao0228
Copy link

What version of gazelle are you using?

0.38.0

What version of rules_go are you using?

0.48.0

What version of Bazel are you using?

7.2.1

Does this issue reproduce with the latest releases of all the above?

Yes

What operating system and processor architecture are you using?

MacOS, Arm64

What did you do?

Checkout https://github.com/chenxiao0228/cobra/tree/bazel_demo

change "github.com/cpuguy83/go-md2man/v2 v2.0.4" -> "github.com/cpuguy83/go-md2man/v2 v2.0.3" in "go.mod"

run "bazel run gazelle", or any Bazel command "bazel build cobra", "bazel mod tidy"

What did you expect to see?

Be able to run "bazel run @rules_go//go -- mod tidy" to fetch the new version and add its hash in "go.sum"
Or even better
Be able to run "bazel mod tidy" so everything is up to date

What did you see instead?

All Bazel commands fail with "Error in fail: No sum for github.com/cpuguy83/go-md2man/[email protected] from parent-label-todo found. You may need to run: bazel run @rules_go//go -- mod tidy"

Even though Gazelle suggests "You may need to run: bazel run @rules_go//go -- mod tidy", the command fails with the same err msg.

@fmeum
Copy link
Member

fmeum commented Aug 6, 2024

This is tricky: We either need to avoid any dependency on the go_deps extension or we have to make missing sums non-fatal for the extension, with failures deferred to repo fetch time. I actually prefer the latter as it reduces the potential to introduce truly global failures.

@tyler-french @linzhp What do you think?

@chenxiao0228
Copy link
Author

chenxiao0228 commented Aug 6, 2024

@fmeum thanks for looking at this.

I feel it would be great if we can defer the fatal error so folks can still run go mod tidy through Bazel - as the err msg message suggests.

Furthermore if we can wire up "bazel mod tidy" as a one stop shop to maintain Go dependencies in a big repo that would be awesome.

@Buzz-Lightyear
Copy link
Contributor

Buzz-Lightyear commented Aug 7, 2024

@fmeum I'm running into this issue too, I made the missing sum(s) non fatal and it worked as expected:

Dependency Bump:

diff --git a/<module>/go.mod b/<module>/go.mod
...
-      <dep> v1.1.6
+      <dep> v1.1.8

bazel mod tidy output:

DEBUG: /private/var/tmp/.../external/gazelle~/internal/bzlmod/go_deps.bzl:587:40: For Go module "<dep>", the root module requires module version v1.1.6, but got v1.1.8 in the resolved dependency graph.
DEBUG: /private/var/tmp/.../external/gazelle~/internal/bzlmod/go_deps.bzl:699:18: No sum for <dep>@1.1.8 found, run bazel run @rules_go//go -- mod tidy to generate it

fmeum added a commit that referenced this issue Aug 12, 2024
…cy when using Bzlmod extension" (#1861)

**What type of PR is this?**
Bug fix

**What package or component does this PR mostly affect?**
Go bzlmod

**What does this PR do? Why is it needed?**
When trying to bump the version of a Go module in a repo that uses the
`go_deps` bzlmod extension, we run into an issue wherein all Bazel
commands fail with ` "Error in fail: No sum for <module>`. However the
suggested fix is to run `bazel run @rules_go//go -- mod tidy` which
fails with the same error, thus forcing us into a pickle.

This PR changes this to a warning instead of an error after which the
suggested fix works.

**Which issues(s) does this PR fix?**

Fixes #1855

---------

Co-authored-by: Fabian Meumertzheim <[email protected]>
github-merge-queue bot pushed a commit to zemn-me/monorepo that referenced this issue Sep 29, 2024
##### [`vv0.39.0](https://github.com/bazelbuild/bazel-gazelle/releases/tag/v0.39.0)

#### What's Changed

-   Add QNX and OSX to known platforms by [@hofbi](https://github.com/hofbi) in bazel-contrib/bazel-gazelle#1853
-   Allow `+` in repo names by [@fmeum](https://github.com/fmeum) in bazel-contrib/bazel-gazelle#1856
-   go_repository_cache: set GOTOOLCHAIN to 'local' by [@lbcjbb](https://github.com/lbcjbb) in bazel-contrib/bazel-gazelle#1859
-   Fix Issue [#1855](bazel-contrib/bazel-gazelle#1855): "All Bazel commands fail when changing a Go dependency when using Bzlmod extension" by [@Buzz-Lightyear](https://github.com/Buzz-Lightyear) in bazel-contrib/bazel-gazelle#1861
-   Add default directives for github.com/containerd by [@mering](https://github.com/mering) in bazel-contrib/bazel-gazelle#1866
-   Add gazelle-overrides for argo, grpcgateway by [@udaya2899](https://github.com/udaya2899) in bazel-contrib/bazel-gazelle#1867
-   refactor: remove file reference from ruleRecord by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1869
-   refactor: compute transitive embeds during indexing by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1868
-   refactor: compute labelMap when indexing by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1872
-   refactor: remove reference to rule.Rule in mapResolver interface by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1873
-   refactor: ensure rule index not modified after indexing by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1877
-   docs: fix incorrect gazelle_generation_test param name by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1876
-   refactor: embed gazelle generation_test_binary in gazelle_generation_test instead of recompiling by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1875
-   refactor: make ruleRecord serializable by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1878
-   Add package metadata to `go_repository`s by [@fmeum](https://github.com/fmeum) in bazel-contrib/bazel-gazelle#1852
-   refactor: process KindMap even when not indexing by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1882
-   refactor: move walk util methods into struct by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1881
-   refactor: add nil assignments to verify interface implementations by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1883
-   perf: preload .bazelignore before configure, do not use globs by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1886
-   refactor: remove nested walk function literal by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1884
-   Preserve canonical labels as such by [@fmeum](https://github.com/fmeum) in bazel-contrib/bazel-gazelle#1863
-   perf: check if directory in .bazelignore before readdir by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1890
-   revert [#1873](bazel-contrib/bazel-gazelle#1873) by [@tyler-french](https://github.com/tyler-french) in bazel-contrib/bazel-gazelle#1897
-   rename `main()` entrypoints to `main.go` by [@tyler-french](https://github.com/tyler-french) in bazel-contrib/bazel-gazelle#1901
-   Support timeout and size in gazelle_test by [@rockwotj](https://github.com/rockwotj) in bazel-contrib/bazel-gazelle#1909
-   feat: include package URL in package_info by [@alexeagle](https://github.com/alexeagle) in bazel-contrib/bazel-gazelle#1917
-   perf: Improve rule.Kind by [@dzbarsky](https://github.com/dzbarsky) in bazel-contrib/bazel-gazelle#1919
-   Fix patch file creation using Gazelle in diff mode by [@alandonham](https://github.com/alandonham) in bazel-contrib/bazel-gazelle#1915
-   perf: Improve merger.Mergefile by [@dzbarsky](https://github.com/dzbarsky) in bazel-contrib/bazel-gazelle#1920
-   test: add bazelignore test by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1912
-   perf: walk workspace directories in parallel by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1893
-   refactor: reduce path.join while walking repo by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1913
-   chore: upgrade go mod dependencies by [@jbedard](https://github.com/jbedard) in bazel-contrib/bazel-gazelle#1911
-   prepare gazelle release 0.39 by [@tyler-french](https://github.com/tyler-french) in bazel-contrib/bazel-gazelle#1925
-   Add gazelle overrides to enable building rclone by [@dmcardle](https://github.com/dmcardle) in bazel-contrib/bazel-gazelle#1933

#### New Contributors

-   [@hofbi](https://github.com/hofbi) made their first contribution in bazel-contrib/bazel-gazelle#1853
-   [@Buzz-Lightyear](https://github.com/Buzz-Lightyear) made their first contribution in bazel-contrib/bazel-gazelle#1861
-   [@udaya2899](https://github.com/udaya2899) made their first contribution in bazel-contrib/bazel-gazelle#1867
-   [@rockwotj](https://github.com/rockwotj) made their first contribution in bazel-contrib/bazel-gazelle#1909
-   [@alandonham](https://github.com/alandonham) made their first contribution in bazel-contrib/bazel-gazelle#1915
-   [@dmcardle](https://github.com/dmcardle) made their first contribution in bazel-contrib/bazel-gazelle#1933

**Full Changelog**: bazel-contrib/bazel-gazelle@v0.38.0...v0.39.0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment