-
Notifications
You must be signed in to change notification settings - Fork 212
Implement run-time dependencies for binary targets #3451
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
Merged
chrisnovakovic
merged 5 commits into
thought-machine:master
from
chrisnovakovic:runtime_deps-v2
Nov 13, 2025
Merged
Implement run-time dependencies for binary targets #3451
chrisnovakovic
merged 5 commits into
thought-machine:master
from
chrisnovakovic:runtime_deps-v2
Nov 13, 2025
+544
−37
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add a `runtime_deps` parameter, allowing for the declaration of run-time dependencies, to `build_rule` and several of the built-in build definitions that permit binary outputs. The semantics of `runtime_deps` are a combination of the semantics of `deps` and `data`. If the output of a `build_rule` is marked as binary, targets listed in `runtime_deps` are: - guaranteed to have been built before the dependent target runs; - copied into build and test environments alongside the dependent target. Like build-time dependencies declared with `deps`, run-time dependencies are computed transitively; i.e., if target A has a run-time dependency on target B which in turn has a run-time dependency on target C, targets B and C will be built before `plz run`ning target A, and the outputs of targets B and C will be copied into build environments (or test environments, if target A is a test) alongside the outputs of target A. Unlike build-time dependencies, downward searches for transitive run-time dependencies are not blocked by the `output_is_complete` parameter.
toastwaffle
requested changes
Nov 12, 2025
| cmd = "touch $OUTS", | ||
| ) | ||
|
|
||
| def target(name:str, build_tests:list=[], post_build:function=None, requires:list=None, provides:dict=None, |
Contributor
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.
I love this ❤️
toastwaffle
approved these changes
Nov 13, 2025
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Add a
runtime_depsparameter, allowing for the declaration of run-time dependencies, tobuild_ruleand several of the built-in build definitions that permit binary outputs.The semantics of
runtime_depsare a combination of the semantics ofdepsanddata. If the output of abuild_ruleis marked as binary, targets listed inruntime_depsare:Like build-time dependencies declared with
deps, run-time dependencies are computed transitively; i.e., if target A has a run-time dependency on target B which in turn has a run-time dependency on target C, targets B and C will be built beforeplz running target A, and the outputs of targets B and C will be copied into build environments (or test environments, if target A is a test) alongside the outputs of target A. Unlike build-time dependencies, downward searches for transitive run-time dependencies are not blocked by theoutput_is_completeparameter.