thought-machine / please

High-performance extensible build system for reproducible multi-language builds.
https://please.build
Apache License 2.0
2.42k stars 205 forks source link

Missing "advanced" topics on website #2791

Open Tatskaari opened 1 year ago

Tatskaari commented 1 year ago

We should probably document under advanced:

Tatskaari commented 1 year ago

There's also #2629

stale[bot] commented 9 months ago

This issue has been automatically marked as stale because it has not had any recent activity in the past 90 days. It will be closed if no further activity occurs. If you require additional support, please reply to this message. Thank you for your contributions.

matglas commented 2 months ago

I can take a stab at whats still open. I looked and I think this is the status. Am I correct?

Tatskaari commented 1 month ago

Thanks! I can try and give a quick overview of these:

Entry points (what are these?)

These were introduced for SDKs like golang and Java where you want access to go and javac but these require access to other files relative to the binary being run e.g. the compiled Go sources under the go root, or the .jar files for the standard library. These use the same format as named outputs i.e. //third_party/go:toolchain|go, but you get the whole output of //third_party/go:toolchain in your temp dir, but when you reference them e.g. via $TOOLS or $SRCS, you only get the specific output i.e. TOOLS=plz-out/binary/third_party/go/toolchain/bin/go, rather than TOOLS=plz-out/binary/third_party/go/toolchain (if you had used the unannoted label).

Different dep types

We have a number of ways to depend on other targets:

Additionally, there are some flags to control how dependencies are hooked up:

Magic build labels still open

Might be worth digging through the code here but there are a few I'm aware of:

There are probably a couple more lost to time.

matglas commented 1 month ago

@Tatskaari thanks for all the details. I need to grok it a bit more for myself. But I'll start to see if there is something I can already take a stab at. And I'll go thru the code a bit to understand the usage.