Comments (1)
Here's the use case: suppose we have a .proto file that's generated in a way that Gazelle doesn't know about. We need to add a # keep
comment in the proto_library
rule.
proto_library(
name = "foo_proto",
srcs = [
"foo.proto", # keep
],
)
go_proto_library(
name = "foo_go_proto",
proto = ":foo_proto",
)
Since the generator doesn't know about the # keep
comment, it will generate empty rules for both foo_proto
and foo_go_proto
. The merger considers all rules to be independent, so it will delete foo_go_proto
but keep foo_proto
because of the keep comment.
This gets more complicated when deps
are involved. We'll need to mark all dependencies in foo_proto
with # keep
. I don't think the merger can reasonably translate the dependencies from proto to Go, and other phases shouldn't be concerned with deletion.
The best thing to do here is to use # keep
liberally. This is a corner case where Gazelle can't get all the information it needs, so I don't think we can do much better without making the implementation complicated and inefficient.
cc @ianthehat Did I miss anything about this case? If not, I'll close as WAI.
from bazel-gazelle.
Related Issues (20)
- 'invalid use of internal package' in IDE in external tests HOT 4
- Failing to upgrade to gazelle 0.36 HOT 1
- Gazelle ignores several GIT_CONFIG environment variables
- Gazelle fails on macOS when using `apple_support` and go version 1.22+ HOT 8
- Cyclical Indirect Dependencies & Go.work can cause divergence HOT 1
- Add support for generated files in gazelle HOT 1
- Gazelle should extract module mappings from imported foo.MODULE.bazel files
- Passing debug_mode via go_deps to go_repository is not supported HOT 2
- Latest gazelle breaks grpc/grpc HOT 5
- Gazelle crashes in repository with MODULE but no WORKSPACE HOT 2
- `go_repository_cache` repository rule doesn't handle MacOS arm64 platform HOT 2
- How to create go_proto_library automatically
- Optimize Gazelle's filesystem walk
- gazelle:resolve_regexp should support regex in label HOT 4
- Using the repo name rules_go removes proto embed from all go_library rules HOT 1
- Gazelle cannot parse new go.mod directives HOT 3
- `rules_go` should work with Go versions older than 1.20
- go.mod FilePath ReplaceDirective fails copying folder. HOT 5
- gazelle fails to fetch some repositories loaded with `go_deps.from_file(go_mod = "//:go.mod")` HOT 3
- request: option to not generate in all directories
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.