Documentation ¶
Index ¶
Constants ¶
View Source
const MixinsLabel = "io.buildpacks.stack.mixins"
View Source
const WildcardStack = "*"
Variables ¶
This section is empty.
Functions ¶
func FindStageMixins ¶
func MergeCompatible ¶
MergeCompatible determines the allowable set of stacks that a combination of buildpacks may run on, given each buildpack's set of stacks. Compatibility between the two sets of buildpack stacks is defined by the following rules:
- The stack must be supported by both buildpacks. That is, any resulting stack ID must appear in both input sets.
- For each supported stack ID, all required mixins for all buildpacks must be provided by the result. That is, mixins for the stack ID in both input sets are unioned.
- If there is a wildcard stack in either of the stack list, the stack list not having the wild card stack is returned.
- If both the stack lists contain a wildcard stack, a list containing just the wildcard stack is returned.
---
Examples:
stacksA = [{ID: "stack1", mixins: ["build:mixinA", "mixinB", "run:mixinC"]}}] stacksB = [{ID: "stack1", mixins: ["build:mixinA", "run:mixinC"]}}] result = [{ID: "stack1", mixins: ["build:mixinA", "mixinB", "run:mixinC"]}}] stacksA = [{ID: "stack1", mixins: ["build:mixinA"]}}, {ID: "stack2", mixins: ["mixinA"]}}] stacksB = [{ID: "stack1", mixins: ["run:mixinC"]}}, {ID: "stack2", mixins: ["mixinA"]}}] result = [{ID: "stack1", mixins: ["build:mixinA", "run:mixinC"]}}, {ID: "stack2", mixins: ["mixinA"]}}] stacksA = [{ID: "stack1", mixins: ["build:mixinA"]}}, {ID: "stack2", mixins: ["mixinA"]}}] stacksB = [{ID: "stack2", mixins: ["mixinA", "run:mixinB"]}}] result = [{ID: "stack2", mixins: ["mixinA", "run:mixinB"]}}] stacksA = [{ID: "stack1", mixins: ["build:mixinA"]}}] stacksB = [{ID: "stack2", mixins: ["mixinA", "run:mixinB"]}}] result = [] stacksA = [{ID: "*"}, {ID: "stack1", mixins: ["build:mixinC"]}] stacksB = [{ID: "stack1", mixins: ["build:mixinA"]}, {ID: "stack2", mixins: ["mixinA", "run:mixinB"]}] result = [{ID: "stack1", mixins: ["build:mixinA"]}, {ID: "stack2", mixins: ["mixinA", "run:mixinB"]}] stacksA = [{ID: "stack1", mixins: ["build:mixinA"]}, {ID: "stack2", mixins: ["mixinA", "run:mixinB"]}] stacksB = [{ID: "*"}, {ID: "stack1", mixins: ["build:mixinC"]}] result = [{ID: "stack1", mixins: ["build:mixinA"]}, {ID: "stack2", mixins: ["mixinA", "run:mixinB"]}] stacksA = [{ID: "*"}, {ID: "stack1", mixins: ["build:mixinA"]}, {ID: "stack2", mixins: ["mixinA", "run:mixinB"]}] stacksB = [{ID: "*"}, {ID: "stack1", mixins: ["build:mixinC"]}] result = [{ID: "*"}]
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.