bazelbuild / bazel

a fast, scalable, multi-language and extensible build system
https://bazel.build
Apache License 2.0
22.95k stars 4.02k forks source link

Regular rules in module extensions #20286

Open matts1 opened 9 months ago

matts1 commented 9 months ago

Description of the feature request:

I wrote a proposal. See https://docs.google.com/document/d/1OsEHpsJXXMC9SFAmAh20S42Dbmgdj4cNyYAsFOHMibo/edit#heading=h.kzp6mqja2p3t

Repository rules are described as “a rule that enables non-hermetic operation at the loading phase of bazel”. However, the vast majority of repository rules are not nonhermetic - they are completely hermetic operations that simple happen to output build files.

In theory, there's nothing stopping us from instead using regular rules to generate repositories. I've created a design to do so.

Which category does this issue belong to?

External Dependency

What underlying problem are you trying to solve with this feature?

Which operating system are you running Bazel on?

N/A

What is the output of bazel info release?

N/A

If bazel info release returns development version or (@non-git), tell us how you built Bazel.

No response

What's the output of git remote get-url origin; git rev-parse master; git rev-parse HEAD ?

No response

Have you found anything relevant by searching the web?

No. I also discussed this with the bazel team a few weeks ago, and they said this wasn't possible. This is my proposal to make it possible

Any other information, logs, or outputs that you want to share?

No response

fmeum commented 9 months ago

@matts1 That docs link doesn't appear to be publicly accessible. I would very much like to read it as I have also been thinking about this lately.

Wyverald commented 9 months ago

This is certainly an interesting idea that was definitely not possible before Skymeld. It probably works better as a proposal (see https://github.com/bazelbuild/proposals) than as an issue though.

matts1 commented 9 months ago

@fmeum Ah, I thought I published it but apparently not. I've made it into an actual proposal now.

https://docs.google.com/document/d/1OsEHpsJXXMC9SFAmAh20S42Dbmgdj4cNyYAsFOHMibo/edit#heading=h.kzp6mqja2p3t