diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-05-18 14:16:43 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-05-18 13:23:19 +0000 |
commit | 6acefea159067b2bb512a964f52cf905042a5ad1 (patch) | |
tree | 48d64dcfd1a43680ac9344691fb3e325df9bb26b /src/lib/corelib/language/moduleloader.cpp | |
parent | 7e630a14369d30d7658ebda34ac6233ec1be1a2e (diff) |
ModuleLoader: Remove modules of disabled product modules
... before setting up the transitive dependencies. Otherwise, there is
the danger that other code will look at the original modules list and
stumble over inconsistencies. For instance, propagateModulesFromParent()
does that, which caused asserts on macOS.
Change-Id: I8cd1adb15d8341e8f528f221dcca22fa27b0d68e
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
Diffstat (limited to 'src/lib/corelib/language/moduleloader.cpp')
-rw-r--r-- | src/lib/corelib/language/moduleloader.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/lib/corelib/language/moduleloader.cpp b/src/lib/corelib/language/moduleloader.cpp index 85b037ee5..db6ddd7e9 100644 --- a/src/lib/corelib/language/moduleloader.cpp +++ b/src/lib/corelib/language/moduleloader.cpp @@ -1229,10 +1229,8 @@ void ModuleLoader::createSortedModuleList(const Item::Module &parentModule, Item != modules.cend()) { return; } - if (!moduleRepresentsDisabledProduct(parentModule)) { - for (const Item::Module &dep : parentModule.item->modules()) - createSortedModuleList(dep, modules); - } + for (const Item::Module &dep : parentModule.item->modules()) + createSortedModuleList(dep, modules); modules.push_back(parentModule); return; } @@ -3621,6 +3619,8 @@ void ModuleLoader::overrideItemProperties(Item *item, const QString &buildConfig void ModuleLoader::collectAllModules(Item *item, std::vector<Item::Module> *modules) { for (const Item::Module &m : item->modules()) { + if (moduleRepresentsDisabledProduct(m)) + m.item->removeModules(); auto it = std::find_if(modules->begin(), modules->end(), [m] (const Item::Module &m2) { return m.name == m2.name; }); if (it != modules->end()) { @@ -3631,8 +3631,6 @@ void ModuleLoader::collectAllModules(Item *item, std::vector<Item::Module> *modu continue; } modules->push_back(m); - if (moduleRepresentsDisabledProduct(m)) - continue; collectAllModules(m.item, modules); } } |