bazel-contrib / bazel-gazelle

Gazelle is a Bazel build file generator for Bazel projects. It natively supports Go and protobuf, and it may be extended to support new languages and custom rule sets.
Apache License 2.0
1.19k stars 378 forks source link

Evaluate build tags as both true and false #1938

Open patrickmscott opened 2 weeks ago

patrickmscott commented 2 weeks ago

Gazelle already iterates over all supported os/arch combos to include go files. This is similar but expanded to custom tags. When adding a new build tag, we create a copy with the tag set to true and append to the original. This means that build tag evaluation will grow exponentially.

Fixes https://github.com/bazelbuild/bazel-gazelle/issues/1262

What type of PR is this?

Feature

What package or component does this PR mostly affect?

language/go

What does this PR do? Why is it needed?

It changes the behavior of build_tags to defer evaluation to build time. Instead of assuming the tag is always true, it treats the tag as both true and false when evaluating tags for a file.

Which issues(s) does this PR fix?

Fixes #1262

Other notes for review

google-cla[bot] commented 2 weeks ago

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.