Style: run modulesystem through the style guide
This commit is contained in:
parent
58121abf06
commit
1a097f8c49
@ -26,7 +26,8 @@
|
|||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QPluginLoader>
|
#include <QPluginLoader>
|
||||||
|
|
||||||
namespace Calamares {
|
namespace Calamares
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
Module::Type
|
Module::Type
|
||||||
@ -55,7 +56,7 @@ CppJobModule::loadSelf()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CppJob *cppJob = pf->create< Calamares::CppJob >();
|
CppJob* cppJob = pf->create< Calamares::CppJob >();
|
||||||
if ( !cppJob )
|
if ( !cppJob )
|
||||||
{
|
{
|
||||||
cDebug() << Q_FUNC_INFO << m_loader->errorString();
|
cDebug() << Q_FUNC_INFO << m_loader->errorString();
|
||||||
@ -68,7 +69,7 @@ CppJobModule::loadSelf()
|
|||||||
|
|
||||||
cppJob->setModuleInstanceKey( instanceKey() );
|
cppJob->setModuleInstanceKey( instanceKey() );
|
||||||
cppJob->setConfigurationMap( m_configurationMap );
|
cppJob->setConfigurationMap( m_configurationMap );
|
||||||
m_job = Calamares::job_ptr( static_cast< Calamares::Job * >( cppJob ) );
|
m_job = Calamares::job_ptr( static_cast< Calamares::Job* >( cppJob ) );
|
||||||
m_loaded = true;
|
m_loaded = true;
|
||||||
cDebug() << "CppJobModule" << instanceKey() << "loading complete.";
|
cDebug() << "CppJobModule" << instanceKey() << "loading complete.";
|
||||||
}
|
}
|
||||||
|
@ -71,8 +71,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
|
|||||||
QString typeString = moduleDescriptor.value( "type" ).toString();
|
QString typeString = moduleDescriptor.value( "type" ).toString();
|
||||||
QString intfString = moduleDescriptor.value( "interface" ).toString();
|
QString intfString = moduleDescriptor.value( "interface" ).toString();
|
||||||
|
|
||||||
if ( typeString.isEmpty() ||
|
if ( typeString.isEmpty() || intfString.isEmpty() )
|
||||||
intfString.isEmpty() )
|
|
||||||
{
|
{
|
||||||
cError() << "Bad module descriptor format" << instanceId;
|
cError() << "Bad module descriptor format" << instanceId;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@ -80,9 +79,7 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
|
|||||||
if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) )
|
if ( ( typeString == "view" ) || ( typeString == "viewmodule" ) )
|
||||||
{
|
{
|
||||||
if ( intfString == "qtplugin" )
|
if ( intfString == "qtplugin" )
|
||||||
{
|
|
||||||
m.reset( new ViewModule() );
|
m.reset( new ViewModule() );
|
||||||
}
|
|
||||||
else if ( intfString == "pythonqt" )
|
else if ( intfString == "pythonqt" )
|
||||||
{
|
{
|
||||||
#ifdef WITH_PYTHONQT
|
#ifdef WITH_PYTHONQT
|
||||||
@ -97,13 +94,9 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
|
|||||||
else if ( typeString == "job" )
|
else if ( typeString == "job" )
|
||||||
{
|
{
|
||||||
if ( intfString == "qtplugin" )
|
if ( intfString == "qtplugin" )
|
||||||
{
|
|
||||||
m.reset( new CppJobModule() );
|
m.reset( new CppJobModule() );
|
||||||
}
|
|
||||||
else if ( intfString == "process" )
|
else if ( intfString == "process" )
|
||||||
{
|
|
||||||
m.reset( new ProcessJobModule() );
|
m.reset( new ProcessJobModule() );
|
||||||
}
|
|
||||||
else if ( intfString == "python" )
|
else if ( intfString == "python" )
|
||||||
{
|
{
|
||||||
#ifdef WITH_PYTHON
|
#ifdef WITH_PYTHON
|
||||||
@ -121,8 +114,8 @@ Module::fromDescriptor( const QVariantMap& moduleDescriptor,
|
|||||||
if ( !m )
|
if ( !m )
|
||||||
{
|
{
|
||||||
cError() << "Bad module type (" << typeString
|
cError() << "Bad module type (" << typeString
|
||||||
<< ") or interface string (" << intfString
|
<< ") or interface string (" << intfString
|
||||||
<< ") for module " << instanceId;
|
<< ") for module " << instanceId;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,8 +161,7 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex
|
|||||||
{
|
{
|
||||||
configFilesByPriority.append(
|
configFilesByPriority.append(
|
||||||
QDir( QDir::currentPath() ).absoluteFilePath(
|
QDir( QDir::currentPath() ).absoluteFilePath(
|
||||||
QString( "src/modules/%1/%2" ).arg( m_name )
|
QString( "src/modules/%1/%2" ).arg( m_name ).arg( configFileName ) ) );
|
||||||
.arg( configFileName ) ) );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
configFilesByPriority.append(
|
configFilesByPriority.append(
|
||||||
@ -201,8 +193,8 @@ Module::loadConfigurationFile( const QString& configFileName ) //throws YAML::Ex
|
|||||||
|
|
||||||
m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap();
|
m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap();
|
||||||
m_emergency = m_maybe_emergency
|
m_emergency = m_maybe_emergency
|
||||||
&& m_configurationMap.contains( EMERGENCY )
|
&& m_configurationMap.contains( EMERGENCY )
|
||||||
&& m_configurationMap[ EMERGENCY ].toBool();
|
&& m_configurationMap[ EMERGENCY ].toBool();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -228,8 +220,7 @@ Module::instanceId() const
|
|||||||
QString
|
QString
|
||||||
Module::instanceKey() const
|
Module::instanceKey() const
|
||||||
{
|
{
|
||||||
return QString( "%1@%2" ).arg( m_name )
|
return QString( "%1@%2" ).arg( m_name ).arg( m_instanceId );
|
||||||
.arg( m_instanceId );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -297,9 +288,7 @@ Module::initFrom( const QVariantMap& moduleDescriptor )
|
|||||||
m_name = moduleDescriptor.value( "name" ).toString();
|
m_name = moduleDescriptor.value( "name" ).toString();
|
||||||
|
|
||||||
if ( moduleDescriptor.contains( EMERGENCY ) )
|
if ( moduleDescriptor.contains( EMERGENCY ) )
|
||||||
{
|
|
||||||
m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool();
|
m_maybe_emergency = moduleDescriptor[ EMERGENCY ].toBool();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} //ns
|
} //ns
|
||||||
|
@ -147,7 +147,10 @@ public:
|
|||||||
* @brief isLoaded reports on the loaded status of a module.
|
* @brief isLoaded reports on the loaded status of a module.
|
||||||
* @return true if the module's loading phase has finished, otherwise false.
|
* @return true if the module's loading phase has finished, otherwise false.
|
||||||
*/
|
*/
|
||||||
bool isLoaded() const { return m_loaded; }
|
bool isLoaded() const
|
||||||
|
{
|
||||||
|
return m_loaded;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief loadSelf initialized the module.
|
* @brief loadSelf initialized the module.
|
||||||
@ -164,7 +167,10 @@ public:
|
|||||||
* are not run (in the common case where there is only
|
* are not run (in the common case where there is only
|
||||||
* one exec block, this doesn't really matter).
|
* one exec block, this doesn't really matter).
|
||||||
*/
|
*/
|
||||||
bool isEmergency() const { return m_emergency; }
|
bool isEmergency() const
|
||||||
|
{
|
||||||
|
return m_emergency;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief jobs returns any jobs exposed by this module.
|
* @brief jobs returns any jobs exposed by this module.
|
||||||
|
@ -60,10 +60,8 @@ ModuleManager::ModuleManager( const QStringList& paths, QObject* parent )
|
|||||||
ModuleManager::~ModuleManager()
|
ModuleManager::~ModuleManager()
|
||||||
{
|
{
|
||||||
// The map is populated with Module::fromDescriptor(), which allocates on the heap.
|
// The map is populated with Module::fromDescriptor(), which allocates on the heap.
|
||||||
for( auto moduleptr : m_loadedModulesByInstanceKey )
|
for ( auto moduleptr : m_loadedModulesByInstanceKey )
|
||||||
{
|
|
||||||
delete moduleptr;
|
delete moduleptr;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -119,14 +117,12 @@ ModuleManager::doInit()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
cWarning() << "Cannot cd into module directory "
|
cWarning() << "Cannot cd into module directory "
|
||||||
<< path << "/" << subdir;
|
<< path << "/" << subdir;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
|
||||||
cDebug() << "ModuleManager bad search path" << path;
|
cDebug() << "ModuleManager bad search path" << path;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// At this point m_availableModules is filled with whatever was found in the
|
// At this point m_availableModules is filled with whatever was found in the
|
||||||
// search paths.
|
// search paths.
|
||||||
@ -182,10 +178,10 @@ ModuleManager::loadModules()
|
|||||||
{
|
{
|
||||||
QStringList failedModules;
|
QStringList failedModules;
|
||||||
Settings::InstanceDescriptionList customInstances =
|
Settings::InstanceDescriptionList customInstances =
|
||||||
Settings::instance()->customModuleInstances();
|
Settings::instance()->customModuleInstances();
|
||||||
|
|
||||||
const auto modulesSequence = Settings::instance()->modulesSequence();
|
const auto modulesSequence = Settings::instance()->modulesSequence();
|
||||||
for ( const auto &modulePhase : modulesSequence )
|
for ( const auto& modulePhase : modulesSequence )
|
||||||
{
|
{
|
||||||
ModuleAction currentAction = modulePhase.first;
|
ModuleAction currentAction = modulePhase.first;
|
||||||
|
|
||||||
@ -197,7 +193,7 @@ ModuleManager::loadModules()
|
|||||||
QString instanceId;
|
QString instanceId;
|
||||||
QString configFileName;
|
QString configFileName;
|
||||||
if ( moduleEntrySplit.length() < 1 ||
|
if ( moduleEntrySplit.length() < 1 ||
|
||||||
moduleEntrySplit.length() > 2 )
|
moduleEntrySplit.length() > 2 )
|
||||||
{
|
{
|
||||||
cError() << "Wrong module entry format for module" << moduleEntry;
|
cError() << "Wrong module entry format for module" << moduleEntry;
|
||||||
failedModules.append( moduleEntry );
|
failedModules.append( moduleEntry );
|
||||||
@ -208,10 +204,10 @@ ModuleManager::loadModules()
|
|||||||
configFileName = QString( "%1.conf" ).arg( moduleName );
|
configFileName = QString( "%1.conf" ).arg( moduleName );
|
||||||
|
|
||||||
if ( !m_availableDescriptorsByModuleName.contains( moduleName ) ||
|
if ( !m_availableDescriptorsByModuleName.contains( moduleName ) ||
|
||||||
m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() )
|
m_availableDescriptorsByModuleName.value( moduleName ).isEmpty() )
|
||||||
{
|
{
|
||||||
cError() << "Module" << moduleName << "not found in module search paths."
|
cError() << "Module" << moduleName << "not found in module search paths."
|
||||||
<< Logger::DebugList( m_paths );
|
<< Logger::DebugList( m_paths );
|
||||||
failedModules.append( moduleName );
|
failedModules.append( moduleName );
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -221,9 +217,7 @@ ModuleManager::loadModules()
|
|||||||
int found = findCustomInstance( customInstances, moduleName, instanceId );
|
int found = findCustomInstance( customInstances, moduleName, instanceId );
|
||||||
|
|
||||||
if ( found > -1 )
|
if ( found > -1 )
|
||||||
{
|
|
||||||
configFileName = customInstances[ found ].value( "config" );
|
configFileName = customInstances[ found ].value( "config" );
|
||||||
}
|
|
||||||
else //ought to be a custom instance, but cannot find instance entry
|
else //ought to be a custom instance, but cannot find instance entry
|
||||||
{
|
{
|
||||||
cError() << "Custom instance" << moduleEntry << "not found in custom instances section.";
|
cError() << "Custom instance" << moduleEntry << "not found in custom instances section.";
|
||||||
@ -254,9 +248,7 @@ ModuleManager::loadModules()
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( thisModule && thisModule->isLoaded() )
|
if ( thisModule && thisModule->isLoaded() )
|
||||||
{
|
|
||||||
cDebug() << "Module" << instanceKey << "already loaded.";
|
cDebug() << "Module" << instanceKey << "already loaded.";
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
thisModule =
|
thisModule =
|
||||||
@ -318,10 +310,10 @@ ModuleManager::checkDependencies()
|
|||||||
forever
|
forever
|
||||||
{
|
{
|
||||||
for ( auto it = m_availableDescriptorsByModuleName.begin();
|
for ( auto it = m_availableDescriptorsByModuleName.begin();
|
||||||
it != m_availableDescriptorsByModuleName.end(); ++it )
|
it != m_availableDescriptorsByModuleName.end(); ++it )
|
||||||
{
|
{
|
||||||
foreach ( const QString& depName,
|
foreach ( const QString& depName,
|
||||||
(*it).value( "requiredModules" ).toStringList() )
|
( *it ).value( "requiredModules" ).toStringList() )
|
||||||
{
|
{
|
||||||
if ( !m_availableDescriptorsByModuleName.contains( depName ) )
|
if ( !m_availableDescriptorsByModuleName.contains( depName ) )
|
||||||
{
|
{
|
||||||
|
@ -22,7 +22,8 @@
|
|||||||
|
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
namespace Calamares {
|
namespace Calamares
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
Module::Type
|
Module::Type
|
||||||
@ -68,23 +69,17 @@ ProcessJobModule::initFrom( const QVariantMap& moduleDescriptor )
|
|||||||
m_workingPath = directory.absolutePath();
|
m_workingPath = directory.absolutePath();
|
||||||
|
|
||||||
if ( !moduleDescriptor.value( "command" ).toString().isEmpty() )
|
if ( !moduleDescriptor.value( "command" ).toString().isEmpty() )
|
||||||
{
|
|
||||||
m_command = moduleDescriptor.value( "command" ).toString();
|
m_command = moduleDescriptor.value( "command" ).toString();
|
||||||
}
|
|
||||||
|
|
||||||
m_secondsTimeout = 30;
|
m_secondsTimeout = 30;
|
||||||
if ( moduleDescriptor.contains( "timeout" ) &&
|
if ( moduleDescriptor.contains( "timeout" ) &&
|
||||||
!moduleDescriptor.value( "timeout" ).isNull() )
|
!moduleDescriptor.value( "timeout" ).isNull() )
|
||||||
{
|
|
||||||
m_secondsTimeout = moduleDescriptor.value( "timeout" ).toInt();
|
m_secondsTimeout = moduleDescriptor.value( "timeout" ).toInt();
|
||||||
}
|
|
||||||
|
|
||||||
m_runInChroot = false;
|
m_runInChroot = false;
|
||||||
if ( moduleDescriptor.contains( "chroot" )&&
|
if ( moduleDescriptor.contains( "chroot" )&&
|
||||||
!moduleDescriptor.value( "chroot" ).isNull() )
|
!moduleDescriptor.value( "chroot" ).isNull() )
|
||||||
{
|
|
||||||
m_runInChroot = moduleDescriptor.value( "chroot" ).toBool();
|
m_runInChroot = moduleDescriptor.value( "chroot" ).toBool();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@
|
|||||||
#include <QDir>
|
#include <QDir>
|
||||||
|
|
||||||
|
|
||||||
namespace Calamares {
|
namespace Calamares
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
Module::Type
|
Module::Type
|
||||||
@ -46,9 +47,7 @@ PythonJobModule::loadSelf()
|
|||||||
if ( m_loaded )
|
if ( m_loaded )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_job = Calamares::job_ptr( new PythonJob( m_scriptFileName,
|
m_job = Calamares::job_ptr( new PythonJob( m_scriptFileName, m_workingPath, m_configurationMap ) );
|
||||||
m_workingPath,
|
|
||||||
m_configurationMap ) );
|
|
||||||
m_loaded = true;
|
m_loaded = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,9 +67,7 @@ PythonJobModule::initFrom( const QVariantMap& moduleDescriptor )
|
|||||||
m_workingPath = directory.absolutePath();
|
m_workingPath = directory.absolutePath();
|
||||||
|
|
||||||
if ( !moduleDescriptor.value( "script" ).toString().isEmpty() )
|
if ( !moduleDescriptor.value( "script" ).toString().isEmpty() )
|
||||||
{
|
|
||||||
m_scriptFileName = moduleDescriptor.value( "script" ).toString();
|
m_scriptFileName = moduleDescriptor.value( "script" ).toString();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,7 +23,8 @@
|
|||||||
|
|
||||||
#include "UiDllMacro.h"
|
#include "UiDllMacro.h"
|
||||||
|
|
||||||
namespace Calamares {
|
namespace Calamares
|
||||||
|
{
|
||||||
|
|
||||||
class UIDLLEXPORT PythonJobModule : public Module
|
class UIDLLEXPORT PythonJobModule : public Module
|
||||||
{
|
{
|
||||||
|
@ -40,7 +40,8 @@
|
|||||||
static QPointer< GlobalStorage > s_gs = nullptr;
|
static QPointer< GlobalStorage > s_gs = nullptr;
|
||||||
static QPointer< Utils > s_utils = nullptr;
|
static QPointer< Utils > s_utils = nullptr;
|
||||||
|
|
||||||
namespace Calamares {
|
namespace Calamares
|
||||||
|
{
|
||||||
|
|
||||||
Module::Type
|
Module::Type
|
||||||
PythonQtViewModule::type() const
|
PythonQtViewModule::type() const
|
||||||
@ -98,20 +99,21 @@ PythonQtViewModule::loadSelf()
|
|||||||
cala.addObject( "utils", s_utils );
|
cala.addObject( "utils", s_utils );
|
||||||
|
|
||||||
// Append configuration object, in module PythonQt.calamares
|
// Append configuration object, in module PythonQt.calamares
|
||||||
cala.addVariable("configuration", m_configurationMap);
|
cala.addVariable( "configuration", m_configurationMap );
|
||||||
|
|
||||||
// Basic stdout/stderr handling
|
// Basic stdout/stderr handling
|
||||||
QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut,
|
QObject::connect( PythonQt::self(), &PythonQt::pythonStdOut,
|
||||||
[]( const QString& message )
|
[]( const QString& message )
|
||||||
{
|
{
|
||||||
cDebug() << "PythonQt OUT>" << message;
|
cDebug() << "PythonQt OUT>" << message;
|
||||||
} );
|
}
|
||||||
|
);
|
||||||
QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr,
|
QObject::connect( PythonQt::self(), &PythonQt::pythonStdErr,
|
||||||
[]( const QString& message )
|
[]( const QString& message )
|
||||||
{
|
{
|
||||||
cDebug() << "PythonQt ERR>" << message;
|
cDebug() << "PythonQt ERR>" << message;
|
||||||
} );
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
QDir workingDir( m_workingPath );
|
QDir workingDir( m_workingPath );
|
||||||
@ -137,8 +139,8 @@ PythonQtViewModule::loadSelf()
|
|||||||
|
|
||||||
// Construct empty Python module with the given name
|
// Construct empty Python module with the given name
|
||||||
PythonQtObjectPtr cxt =
|
PythonQtObjectPtr cxt =
|
||||||
PythonQt::self()->
|
PythonQt::self()->
|
||||||
createModuleFromScript( name() );
|
createModuleFromScript( name() );
|
||||||
if ( cxt.isNull() )
|
if ( cxt.isNull() )
|
||||||
{
|
{
|
||||||
cDebug() << "Cannot load PythonQt context from file"
|
cDebug() << "Cannot load PythonQt context from file"
|
||||||
@ -149,11 +151,11 @@ PythonQtViewModule::loadSelf()
|
|||||||
}
|
}
|
||||||
|
|
||||||
static const QLatin1Literal calamares_module_annotation(
|
static const QLatin1Literal calamares_module_annotation(
|
||||||
"_calamares_module_typename = ''\n"
|
"_calamares_module_typename = ''\n"
|
||||||
"def calamares_module(viewmodule_type):\n"
|
"def calamares_module(viewmodule_type):\n"
|
||||||
" global _calamares_module_typename\n"
|
" global _calamares_module_typename\n"
|
||||||
" _calamares_module_typename = viewmodule_type.__name__\n"
|
" _calamares_module_typename = viewmodule_type.__name__\n"
|
||||||
" return viewmodule_type\n");
|
" return viewmodule_type\n" );
|
||||||
|
|
||||||
// Load in the decorator
|
// Load in the decorator
|
||||||
PythonQt::self()->evalScript( cxt, calamares_module_annotation );
|
PythonQt::self()->evalScript( cxt, calamares_module_annotation );
|
||||||
@ -191,9 +193,7 @@ PythonQtViewModule::initFrom( const QVariantMap& moduleDescriptor )
|
|||||||
m_workingPath = directory.absolutePath();
|
m_workingPath = directory.absolutePath();
|
||||||
|
|
||||||
if ( !moduleDescriptor.value( "script" ).toString().isEmpty() )
|
if ( !moduleDescriptor.value( "script" ).toString().isEmpty() )
|
||||||
{
|
|
||||||
m_scriptFileName = moduleDescriptor.value( "script" ).toString();
|
m_scriptFileName = moduleDescriptor.value( "script" ).toString();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PythonQtViewModule::PythonQtViewModule()
|
PythonQtViewModule::PythonQtViewModule()
|
||||||
|
@ -22,7 +22,8 @@
|
|||||||
#include "UiDllMacro.h"
|
#include "UiDllMacro.h"
|
||||||
#include "Module.h"
|
#include "Module.h"
|
||||||
|
|
||||||
namespace Calamares {
|
namespace Calamares
|
||||||
|
{
|
||||||
|
|
||||||
class ViewStep;
|
class ViewStep;
|
||||||
|
|
||||||
|
@ -27,7 +27,8 @@
|
|||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QPluginLoader>
|
#include <QPluginLoader>
|
||||||
|
|
||||||
namespace Calamares {
|
namespace Calamares
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
Module::Type
|
Module::Type
|
||||||
|
Loading…
Reference in New Issue
Block a user