Require all stack dependencies to be both build & runtime dependencies
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.