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

Restore Target Uniqueness Guard in dependency_tree_parser.bzl #1122

Merged

Conversation

jonshea
Copy link
Contributor

@jonshea jonshea commented May 1, 2024

I noticed the refactor of dependency_tree_parser.bzl in #994 might have unintentionally omitted a line that added target labels to the set of seen_imports. This line is present in v5.3, but then removed in v6.1.

I believe this removal was accidental, as it is now possible for maven_install to create a generated BUILD file which contains multiple copies of a target with the same name, which is an invalid state.

This PR restores the missing call to seen_imports[target_label] = True.

I noticed the refactor of `dependency_tree_parser.bzl` in
bazel-contrib#994 might have
unintentionally omitted a line that added target labels to the set of
`seen_imports`. This line is present in
[v5.3](https://github.com/bazelbuild/rules_jvm_external/blob/5.3/private/dependency_tree_parser.bzl#L155-L156),
but then removed in
[v6.1](https://github.com/bazelbuild/rules_jvm_external/blob/6.1/private/dependency_tree_parser.bzl#L457).

I believe this removal was accidental, as it is now possible for
`maven_install` to create a generated BUILD file which contains
multiple copies of a target with the same name, which is an invalid
state.

This PR restores the missing call to `seen_imports[target_label] = True`.
@jonshea jonshea marked this pull request as ready for review May 1, 2024 20:30
Copy link
Collaborator

@jin jin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the catch!

@jin jin merged commit e8efc03 into bazel-contrib:master May 3, 2024
8 checks passed
mbland added a commit to EngFlow/bazel_invocation_analyzer that referenced this pull request Jul 8, 2024
- https://github.com/bazelbuild/rules_jvm_external/releases/tag/6.2

This new version resolves the issue mentioned in #182:

- bazel-contrib/rules_jvm_external#1189

Fixed by:

- bazel-contrib/rules_jvm_external#1122

Per my comment on that issue, source JARs are no longer fetched without
explicitly setting `fetch_sources = True`. This is why they no longer
appear in `maven_install.json`.

Finally, @shs96c noted to me in private that:

> ...with recent `rules_jvm_external` releases, all you need to update
> is `bazel run @maven//:pin`. There’s no need for the `unpinned_maven`
> repo any more.

I removed the `unpinned_maven` repo and ran `REPIN=1 bazel run
@maven//:pin` to regenerate `maven_install.json`. This also removed the
`unpinned_maven` entries from `MODULE.bazel.lock`.

I'll update this section of my Bzlmod migration blog post after merging
this change:

- https://blog.engflow.com/2024/06/27/migrating-to-bazel-modules-aka-bzlmod---the-easy-parts/#with-rules_jvm_external
mbland added a commit to EngFlow/bazel_invocation_analyzer that referenced this pull request Jul 8, 2024
- https://github.com/bazelbuild/rules_jvm_external/releases/tag/6.2

This new version resolves the issue mentioned in #182:

- bazel-contrib/rules_jvm_external#1189

Fixed by:

- bazel-contrib/rules_jvm_external#1122

Per my comment on that issue, source JARs are no longer fetched without
explicitly setting `fetch_sources = True`. This is why they no longer
appear in `maven_install.json`.

Finally, @shs96c noted to me in private that:

> ...with recent `rules_jvm_external` releases, all you need to update
> is `bazel run @maven//:pin`. There’s no need for the `unpinned_maven`
> repo any more.

I removed the `unpinned_maven` repo and ran `REPIN=1 bazel run
@maven//:pin` to regenerate `maven_install.json`. This also removed the
`unpinned_maven` entries from `MODULE.bazel.lock`.

I'll update this section of my Bzlmod migration blog post after merging
this change:

- https://blog.engflow.com/2024/06/27/migrating-to-bazel-modules-aka-bzlmod---the-easy-parts/#with-rules_jvm_external

Signed-off-by: Mike Bland <mbland@engflow.com>
mbland added a commit to EngFlow/bazel_invocation_analyzer that referenced this pull request Jul 10, 2024
Details:

- https://github.com/bazelbuild/rules_jvm_external/releases/tag/6.2

This new version resolves the issue mentioned in #182:

- bazel-contrib/rules_jvm_external#1189

Fixed by:

- bazel-contrib/rules_jvm_external#1122

Per my comment on that issue, source JARs are no longer fetched without
explicitly setting `fetch_sources = True`. This is why they no longer
appear in `maven_install.json`.

Finally, @shs96c noted to me in private that:

> ...with recent `rules_jvm_external` releases, all you need to update
is `bazel run @maven//:pin`. There’s no need for the `unpinned_maven`
repo any more.

I removed the `unpinned_maven` repo and ran `REPIN=1 bazel run
@maven//:pin` to regenerate `maven_install.json`. This also removed the
`unpinned_maven` entries from `MODULE.bazel.lock`.

I'll update this section of my Bzlmod migration blog post after merging
this change:

- https://blog.engflow.com/2024/06/27/migrating-to-bazel-modules-aka-bzlmod---the-easy-parts/#with-rules_jvm_external

Signed-off-by: Mike Bland <mbland@engflow.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants