Comments (2)
cc: @dnathe4th
The BUILD file must have already existed for package()
to be generated. If there is no existing BUILD file, only the go
language extension would pick up *.go
files and generate targets with public
visibility.
Then on the 2nd run, the actual package()
is generated on the newly created BUILD file.
I think the fix here is as follows:
-
Add a doc to ensure that language/bazel/visibility should always be run last, and when it runs, it should consider/detect newly generated BUILD files by language extensions that run prior.
-
Apply "corrective" visibility over existing targets (unless
# keep
is used).
WDYT?
from bazel-gazelle.
Yeah I think (1) is the answer. Let me dig in a bit to see why it isn't detecting the newly created BUILD file (since the example repo does have the extension running after the go
extension. It is unfortunate there isn't a good way to articulate a dependency between extensions.
(2) brings up a good point I went back and forth with in consulting another engineer when I originally authored the extension. There was a reasonable argument to be made that the package level default construct was not needed at all; the directive could just write to all rules' visibility attributes directly. The argument against this approach was that package(default_visibility)
was a construct that already existed and was not going away, so better to have gazelle lean in on existing bazel rather than layering on an independent path to achieve the same goal. I think the same argument can also be made against overwriting any visibility directly: there's already a bazel pattern of the default and the rule specific attribute co-existing, let's not violate that by making a guess as to whether this extension should rewrite.
from bazel-gazelle.
Related Issues (20)
- `bazel_gazelle_is_bazel_module` is not defined HOT 2
- The repository '@com_google_protobuf' could not be resolved HOT 1
- Support for Bzlmod in a monorepo HOT 7
- Build fails when importing protobuf from another package HOT 1
- `gazelle:go_test file` does not account for a test file calling a function in another, sibling test file HOT 6
- bug(bzlmod): go_deps overrides should fail with `path` that doesn't exist
- `findGoTool` uses the system Go when it should use the Go defined in the Bazel workspace
- feat(bzlmod): script to generate `go_deps.{}_override`s from `go_repository` rules in a `.bzl` file
- embedsrcs fails when downloading files with http_archive
- Bug: when the go code embedded a file that located in another package gazelle will ignore that file HOT 1
- `# gazelle:resolve` directives are very inefficient
- bug(cmd/gazelle): `:gazelle_test` is broken on Bzlmod HOT 1
- BUILD file not found in directory 'modfile' of external repository @org_golang_x_mod. HOT 4
- gazelle resolve directives not working
- idea: lang/go: generate BUILD files from `go build -x` output HOT 1
- go_deps extension doesn't generate indirect dependencies HOT 2
- gazelle generates and recreates grpc targets that rules_go complains about HOT 6
- Missing documentation and best practices for bzlmod HOT 9
- Support Golang Workspaces in Gazelle HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bazel-gazelle.