- Notifications
You must be signed in to change notification settings - Fork202
Move rules_pkg_lib to //pkg#898
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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
base:main
Are you sure you want to change the base?
Uh oh!
There was an error while loading.Please reload this page.
Conversation
cgrindel commentedOct 4, 2024
@jacky8hyf Do you want to address the failing tests before we review? |
jacky8hyf commentedOct 4, 2024
I don't think the test error sare related to my change. The errors are:
I can't reproduce the same error offline. |
cgrindel commentedOct 4, 2024
@aiuto Any thoughts on the test failures? |
jacky8hyf commentedOct 7, 2024
gentle ping |
aiuto commentedOct 8, 2024
I do think the failing tests are unrelated, but I am dubious about the change. |
jacky8hyf commentedOct 8, 2024
AFAIK there are nonew dependencies. See this line: Line 15 in5c6aec6
This means for anyone that relies on the
In addition, skylib is already anon-dev dependency: Line 11 in5c6aec6
(Skylib does depend on rules_pkg as a dev-dependency, on the other hand: I am not changing MODULE.bazel for rules_pkg so there are no dependency changes. Am I missing something? |
| direct= [] | ||
| transitive= [] | ||
| forsrcinctx.attr.srcs: | ||
| ifStarlarkLibraryInfoinsrc: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Now I am trying to remember why this was important. Is removing that strictly needed?
jacky8hyfOct 14, 2024 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
No; in fact I can drop this commit from this particular pull request.
I just find that it is incorrect here because
transitive.append(src[StarlarkLibraryInfo])This is appending theStarlarkLibraryInfo, not the inner list of files, to the transitive list, causing the depset creation below to fail when there is a bzl_library/starlark_library insrcs because of unmatching types. I found this bug when I was trying to add rules_python/skylib to//pkg:bzl_srcs directly. But later I didn't actually add rules_python/skylib to//pkg:bzl_srcs.
Do you want me to drop this commit from this pull request and create a separate pull request?
jacky8hyfOct 14, 2024 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
In other words, if I were to usestarlark_library instead ofbzl_library for the newly added//pkg:rules_pkg_lib target, then I would need this patch (or a variation of it that makes sure the StarlarkLibraryInfo doesn't go into the depset directly).
That being said, I think@bazel_skylib//lib:paths and@rules_python//python:defs_bzl are bothbzl_librarys, and due to this:
It is actually okay to just use the default files from these libraries without poking into StarlarkLibraryInfo, so this contional branch could be deleted, as I am doing in this patch.
Though, a pedantic person may also argue that, for this to be 100% correct, we should use the fields in StarlarkLibraryInfo from dependencies to construct StarlarkLibraryInfo of this starlark_library...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Based onbazelbuild/bazel#18391 (comment)
it seems we can drop the use of starlarklibrary and bzl_library.
It seem to work for me by changing pkg/BUILD:bzl_srcs to a filegroup(name ="rules_pkg_lib"
and referring to that in doc_build/BUILD, deleting the existing rules_pkg_lib there.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
changing pkg/BUILD:bzl_srcs to a filegroup(name ="rules_pkg_lib"
bzl_srcs has visibility public. Wouldn't changing it to a filegroup breaks an API?
I can push a change that does this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Also, as I said in the original commit message:
This is because the
//doc_build package is not loadable when rules_pkg itself
is not the root Bazel module, because stardoc is a
dev_dependency.
So how should users of rules_pkg build stardoc for a.bzl that relies on a .bzl from rules_pkg? It seems to me that thebzl_library must be outside of//docs_build. I choose//pkg because it is next to the .bzl files, which is what the other projects usually do as well, e.g. rules_cc does this:
https://github.com/bazelbuild/rules_cc/blob/34f0e1f038cff9bf28d65d101c806b48f35bf92e/cc/BUILD#L85
https://github.com/bazelbuild/rules_cc/blob/34f0e1f038cff9bf28d65d101c806b48f35bf92e/docs/BUILD#L30
jacky8hyf commentedDec 12, 2024
(combining with your comment in#897 (comment) ) If I understand correctly, are you planning to make |
jacky8hyf commentedDec 12, 2024
Actually, I don't think it would be possible for rules_pkg to depend on skylib as a dev_dependency, because of this usage here: Line 30 in5c6aec6
... unless you planning to fork your own |
This change updates deps for //pkg:bzl_srcs to include paths andrules_python, which comes from the individual rules.This bzl_library is next to the .bzl files. Users of rules_pkg may buildstardoc for their own extensions by relying on this bzl_librarydirectly.This change deletes the unnecessary starlark_library rule, becausestarlark_library itself already creates the non-dev dependency fromrules_pkg to skylib. A user of rules_pkg will have to have skylibanyways. So let's just use skylib's bzl_library directly. It is okayto put non .bzl files in bzl_library.Test: locally update latest.md, no significant difference other than small changes due to the file being outdated in the first place.Link:bazelbuild#897
jacky8hyf commentedDec 17, 2024 • edited
Loading Uh oh!
There was an error while loading.Please reload this page.
edited
Uh oh!
There was an error while loading.Please reload this page.
ping, any updates? I pushed a revision a few days ago. Would someone be able to take a look and comment? Thanks. |
... next to the .bzl files. This is because the
//doc_build package is not loadable when rules_pkg itself
is not the root Bazel module, because stardoc is a
dev_dependency. So, //doc_build:rules_pkg_lib is not
usable by clients of rules_pkg.
Move the target to //pkg, next to the .bzl files.
Also add @rules_python//python:defs_bzl used by pkg_install.
Link:#897