diff --git a/src/libcalamaresui/modulesystem/ModuleManager.cpp b/src/libcalamaresui/modulesystem/ModuleManager.cpp index 2cfb05d2e..33b638e64 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.cpp +++ b/src/libcalamaresui/modulesystem/ModuleManager.cpp @@ -188,11 +188,15 @@ findCustomInstance( const Settings::InstanceDescriptionList& customInstances, co void ModuleManager::loadModules() { - QStringList failedModules = checkDependencies(); + if (checkDependencies()) + { + cWarning() << "Some installed modules have unmet dependencies."; + } Settings::InstanceDescriptionList customInstances = Settings::instance()->customModuleInstances(); + QStringList failedModules; const auto modulesSequence - = failedModules.isEmpty() ? Settings::instance()->modulesSequence() : Settings::ModuleSequence(); + = Settings::instance()->modulesSequence() ; for ( const auto& modulePhase : modulesSequence ) { ModuleSystem::Action currentAction = modulePhase.first; @@ -270,7 +274,7 @@ ModuleManager::loadModules() continue; } - if ( !checkDependencies( *thisModule ) ) + if ( !checkModuleDependencies( *thisModule ) ) { // Error message is already printed failedModules.append( instanceKey.toString() ); @@ -351,10 +355,10 @@ missingRequiredModules( const QStringList& required, const QMap< QString, QVaria return l; } -QStringList +size_t ModuleManager::checkDependencies() { - QStringList failed; + size_t numberRemoved = 0; bool somethingWasRemovedBecauseOfUnmetDependencies = false; // This goes through the map of available modules, and deletes those whose @@ -373,19 +377,18 @@ ModuleManager::checkDependencies() QString moduleName = it->value( "name" ).toString(); somethingWasRemovedBecauseOfUnmetDependencies = true; m_availableDescriptorsByModuleName.erase( it ); - failed << moduleName; - cWarning() << "Module" << moduleName << "requires modules" << Logger::DebugList( unmet ); - cWarning() << Logger::SubEntry << "but these are not available (listed in settings, or installed)."; + numberRemoved++; + cWarning() << "Module" << moduleName << "requires missing modules" << Logger::DebugList( unmet ); break; } } } while ( somethingWasRemovedBecauseOfUnmetDependencies ); - return failed; + return numberRemoved; } bool -ModuleManager::checkDependencies( const Module& m ) +ModuleManager::checkModuleDependencies( const Module& m ) { bool allRequirementsFound = true; QStringList requiredModules diff --git a/src/libcalamaresui/modulesystem/ModuleManager.h b/src/libcalamaresui/modulesystem/ModuleManager.h index a4f28fab8..7adbb24e2 100644 --- a/src/libcalamaresui/modulesystem/ModuleManager.h +++ b/src/libcalamaresui/modulesystem/ModuleManager.h @@ -106,15 +106,17 @@ private slots: private: /** * Check in a general sense whether the dependencies between - * modules are valid. Returns a list of module names that - * do **not** have their requirements met. + * modules are valid. Returns the number of modules that + * have missing dependencies -- this is **not** a problem + * unless any of those modules are actually used. * - * Returns an empty list on success. + * Returns 0 on success. * * Also modifies m_availableDescriptorsByModuleName to remove - * all the entries that fail. + * all the entries that (so that later, when we try to look + * them up, they are not found). */ - QStringList checkDependencies(); + size_t checkDependencies(); /** * Check for this specific module if its required modules have @@ -122,7 +124,7 @@ private: * * Returns true if the requirements are met. */ - bool checkDependencies( const Module& ); + bool checkModuleDependencies( const Module& ); QMap< QString, QVariantMap > m_availableDescriptorsByModuleName; QMap< QString, QString > m_moduleDirectoriesByModuleName;