Details
-
Technical task
-
Resolution: Invalid
-
Not Evaluated
-
None
-
None
Description
Dependency relation between products (A, B) can have two meanings:
- causality relation that states the product B should be built after product A is built;
- pipe relation that states the product A should be used as input to the product B.
Should be noted that pipe relation implies causality relation.
Let's see example.
Project { Product { name: "A" } Product { Depends { name: "A"} name: "B" } }
Causality relation (A, B) is defined here unless product B use rule to build itself . In the last case, if type of product "A" matches tag in "usings" property of the rule of product B, product A will be used as input to product B.
So, if one wants to define pipe relation (A, B), he should modify "usings" property of rule, used by product B. This approach may be unacceptable. And what should one to do if product B use only transformers?
So there should be alternative mechanism. I suggest boolean "useAsInput" property for Depends item.
Project { Product { name: "A" } Product { Depends { name: "A", useAsInput: true } name: "B" } }
Pipe relation (A, B) is defined here, so product A will be added to product B inputs. By default, "useAsInput" will have false value, so language changes will be backward compatible.
Attachments
Issue Links
- relates to
-
QBS-585 make it possible to parameterize dependencies
- Closed