Details
-
Suggestion
-
Resolution: Unresolved
-
Not Evaluated
-
None
-
None
-
None
Description
as mentioned in QBS-61, modules may come from both within the project (in form of Products) as well as outside the project (in form of Modules).
external modules may be provided either by the external library itself, or be generated by providers. even though externally provided modules are "native" to qbs, they shouldn't be invariably preferred over generated ones, as they may be botched, too (in particular if generated by "alien" build systems). therefore, it makes sense to be able to disable them as a source. one may view external modules as going through a "zero transform" module provider and therefore subsume them under QBS-1604, but the case seems special enough to justify treating them as a source of their own (though this is debatable, in particular in the context of QBS-1603).
assuming we want a single property which allows selecting and prioritizing sources at the same time (congruently with as QBS-1604 does within the provider source), we arrive at a property qbsModuleSources which is a string list with the default ['product', 'native', 'provider'] (which is also the exhaustive set of possible values).
note that unlike simply disabling the products in question, changing the priority using this new property allows defining a soft preference. this mixes particularly well with QBS-581 (and maybe QBS-576).
by extension that means that a product that isn't used due to being out-competed by modules usually should not be built at all. however, that would require a corresponding declaration in the product itself, as otherwise things would become rather non-obvious. but given such a declaration in the product itself, having an additional external property to select the source appears redundant. therefore, it may make sense to fully subsume this task under QBS-581 (or a spin-off thereof).