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

propose bazel type for Bazel modules #317

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open

Conversation

fmeum
Copy link

@fmeum fmeum commented Aug 1, 2024

Bazel 6 introduced a new system for managing external dependencies centered around the concept of Bazel modules, which are hosted in a registry. The default registry is the Bazel Central Registry. This system will become the default this year and its predecessor will be turned off next year.

As discussed in bazelbuild/bazel#23166, we would thus like to register the bazel purl type for Bazel modules, as specified in this PR.

(Approved by the Rules Authors SIG: https://docs.google.com/document/d/1YGCYAGLzTfqSOgRFVsB8hDz-kEoTgTEKKp9Jd07TJ5c/edit#heading=h.9h67icc19g8f)

@fmeum
Copy link
Author

fmeum commented Aug 6, 2024

CC @mzeren-vmw

@oej
Copy link

oej commented Aug 7, 2024

Any status on the feedback you waited for?

@fmeum
Copy link
Author

fmeum commented Aug 7, 2024

@oej Yes, this has been approved and is ready for review!

@fmeum fmeum marked this pull request as ready for review August 7, 2024 09:05
@fmeum
Copy link
Author

fmeum commented Aug 21, 2024

@stevespringett Could you review this?

@fmeum
Copy link
Author

fmeum commented Oct 9, 2024

@pombredanne Not sure who to ask for a review, could you take a look?

@johnmhoran johnmhoran added the type: bazel Proposed new type label Oct 19, 2024
@jkowalleck jkowalleck changed the title Add bazel type for Bazel modules propose bazel type for Bazel modules Oct 19, 2024
fviernau added a commit to oss-review-toolkit/ort that referenced this pull request Nov 21, 2024
fviernau added a commit to oss-review-toolkit/ort that referenced this pull request Nov 22, 2024
@sschuberth
Copy link
Member

@fmeum please rebase to resolve conflicts.

@fmeum
Copy link
Author

fmeum commented Nov 22, 2024

@sschuberth Done

fviernau added a commit to oss-review-toolkit/ort that referenced this pull request Nov 22, 2024
@fmeum fmeum requested a review from sschuberth November 22, 2024 10:04
sschuberth pushed a commit to oss-review-toolkit/ort that referenced this pull request Nov 22, 2024
PURL-TYPES.rst Outdated
- The ``version`` is the module version in `Bazel's relaxed semver format
<https://bazel.build/external/module#version_format>`_.
- The optional ``repository_url`` can be used to specify the URL of an
alternative registry, with any trailing forward slashes removed.
Copy link
Member

Choose a reason for hiding this comment

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

with any trailing forward slashes removed.

I'm not sure about that bit. This is not one of the "type-specific normalizations" that are allowed for the namespace segments and name. And semantically, having a trailing slash or not does not make a difference for the URL.

Copy link
Author

Choose a reason for hiding this comment

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

I just dropped this in a new commit.

PURL-TYPES.rst Outdated
Comment on lines 73 to 75
- The optional ``subpath`` can name a particular Bazel target in the module via
a label with the leading double slash (``//``) removed and canonicalized by
omitting the target name if it is equal to the name of the containing package.
Copy link
Member

Choose a reason for hiding this comment

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

Hmm. The spec describes the subpath as

extra subpath within a package, relative to the package root.

How is what you describe "relative to the package root"? Would a custom qualifier maybe make more sense to store the Bazel target?

Copy link
Author

Choose a reason for hiding this comment

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

I simplified this part of the spec in a new commit so that it's always a regular file path, corresponding to a package (not target or file) in the Bazel module. This is analogous to the usage of subpath for golang.

Copy link
Member

Choose a reason for hiding this comment

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

Looks good to me now, but I'd like others to share their opinion as well.

@fmeum fmeum requested a review from sschuberth November 22, 2024 12:10
sschuberth added a commit to oss-review-toolkit/ort that referenced this pull request Nov 22, 2024
sschuberth added a commit to oss-review-toolkit/ort that referenced this pull request Nov 22, 2024
The algorithm description at [1] demands to "apply type-specific
normalization" to namespace segments and the name before applying
percent-encoding. In general, type-specific requirements are documented
at [2]. For Bazel the PR still pending, but in the current state
lowercasing of the name should be performed [3].

[1]: https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rst#how-to-build-purl-string-from-its-components
[2]: https://github.com/package-url/purl-spec/blob/master/PURL-TYPES.rst
[3]: package-url/purl-spec#317

Signed-off-by: Sebastian Schuberth <[email protected]>
sschuberth added a commit to oss-review-toolkit/ort that referenced this pull request Nov 22, 2024
The algorithm description at [1] demands to "apply type-specific
normalization" to namespace segments and the name before applying
percent-encoding. In general, type-specific requirements are documented
at [2]. For Bazel the PR still pending, but in the current state
lowercasing of the name should be performed [3].

[1]: https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICATION.rst#how-to-build-purl-string-from-its-components
[2]: https://github.com/package-url/purl-spec/blob/master/PURL-TYPES.rst
[3]: package-url/purl-spec#317

Signed-off-by: Sebastian Schuberth <[email protected]>
jkowalleck
jkowalleck previously approved these changes Jan 28, 2025
Copy link

@Yannic Yannic left a comment

Choose a reason for hiding this comment

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

Thanks!

Can we add a test case for valid purls that Bazel will reject (e.g., pkg:bazel/Curl@1234) to have coverage for the non-validation case?

@fmeum
Copy link
Author

fmeum commented Jan 28, 2025

Can we add a test case for valid purls that Bazel will reject (e.g., pkg:bazel/Curl@1234) to have coverage for the non-validation case?

Added via b29e1ea

@fmeum fmeum requested review from jkowalleck and Yannic January 28, 2025 13:14
jkowalleck
jkowalleck previously approved these changes Jan 28, 2025
Copy link
Member

@pombredanne pombredanne left a comment

Choose a reason for hiding this comment

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

What about removing the reference to the version format for brevity?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants