Skip to content

Restore Target Uniqueness Guard in dependency_tree_parser.bzl#1122

Merged
jin merged 1 commit into
bazel-contrib:masterfrom
jonshea:dependency_tree_parser-seen_imports-fix
May 3, 2024
Merged

Restore Target Uniqueness Guard in dependency_tree_parser.bzl#1122
jin merged 1 commit into
bazel-contrib:masterfrom
jonshea:dependency_tree_parser-seen_imports-fix

Conversation

@jonshea
Copy link
Copy Markdown
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
Copy Markdown
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
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 <[email protected]>
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 <[email protected]>
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