Skip to content

Require all stack dependencies to be both build & runtime dependencies

Tristan Van Berkom requested to merge tristan/stack-require-depends-all into master

Currently we don't have a reliable way to download, checkout and test an artifact with it's runtime dependencies.

We don't currently encode runtime dependencies into the cache key because the cache key is a signature of the artifact content which should not be affected by the runtime dependency.

A stack however is more suitable, a stack has no content and is low cost to generate when it's dependencies have changed, ergo stacks should be enforced to have their cache keys strictly dependent on the full dependency chain, in this way we can rely on stack elements to be unique and complete when downloading them with bst pull and inspecting them bst artifact checkout or eventually bst shell as well.

There are also no downsides to this, as build-only dependencies are effectively useless on stacks (so we can close #1075 (closed) with this patchset), and runtime-only dependencies are ineffective anyway, because if you build-depend on a stack, you will anyway require it's runtime dependencies to be built in order to stage the stack.

This patch should also not have any affect on cases where you might want to build-only depend on a stack, or runtime-only depend on a stack, which both remain valid use cases in their own right.

Merge request reports