Details
-
Suggestion
-
Resolution: Duplicate
-
Not Evaluated
-
None
-
None
-
None
Description
Current Qbs dependency tracking does not allow fine-grained dependency management.
This issue describes overall architecture of the new dependency management. The suggested algorithm can be implemented as described below.
Qbs iterates over products, collecting dependencies. For each dependency, Qbs loads the Package item which contain PackageSource items (QBS-1452) as well as qbsModuleProviders (QBS-1604) and qbsModuleSources (QBS-1658) properties. PackageSource contain per-module properties that are passed to the providers (QBS-1662). Only providers specified via qbsModuleProviders property (can be set in a Package, Product or Project) are run. Providers generate modules and contribute to search paths based on the order in the qbsModuleProviders property. If provider cannot generate requested module, it is silently skipped - we'll deal with errors later. Qbs can filter out some modules at during generation step based on PackageSource and Provider properties. Once modules are generated by providers, they are added to the same pool of modules as provided by qbsSearchPaths property. Next, qbs can filter module candidates (both "provided" and "native") based on the some constraints - e.g. only take in account modules that match current product architecture or endianness (QBS-995, QBS-1625). At this point of time, we have some module candidates left (possibly from providers or qbs itself or from Product in the project) and we pick up the first one based on the order in qbsModuleSources or emit an error if no module candidates left.
Attachments
Issue Links
- duplicates
-
QBS-61 support multiple instances of the same logical module
- Open