Big configuration overhaul.
Module descriptors are now module.desc, no configuration allowed inside. Module config files are <modulename>.conf, installed in share/calamares/modules. settings.conf is read from /etc/calamares, then share/calamares, and if running with --debug also in the current dir. Module config files are read from /etc/calamares/modules, then share/calamares/modules, and if running with --debug also in src/modules/<modulename> relative to the current dir.
This commit is contained in:
parent
75e9fd6aa3
commit
8f10c21e5b
@ -7,9 +7,10 @@ function( calamares_add_module_subdirectory )
|
|||||||
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
|
if( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/CMakeLists.txt" )
|
||||||
add_subdirectory( ${SUBDIRECTORY} )
|
add_subdirectory( ${SUBDIRECTORY} )
|
||||||
# ...otherwise, we look for a module.conf.
|
# ...otherwise, we look for a module.conf.
|
||||||
elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/module.conf" )
|
elseif( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/module.desc" )
|
||||||
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
|
set( MODULES_DIR ${CMAKE_INSTALL_LIBDIR}/calamares/modules )
|
||||||
set( MODULE_DESTINATION ${MODULES_DIR}/${SUBDIRECTORY} )
|
set( MODULE_DESTINATION ${MODULES_DIR}/${SUBDIRECTORY} )
|
||||||
|
set( MODULE_CONFIG_FILE ${SUBDIRECTORY}.conf )
|
||||||
|
|
||||||
# We glob all the files inside the subdirectory, and we make sure they are
|
# We glob all the files inside the subdirectory, and we make sure they are
|
||||||
# synced with the bindir structure and installed.
|
# synced with the bindir structure and installed.
|
||||||
@ -17,9 +18,15 @@ function( calamares_add_module_subdirectory )
|
|||||||
foreach( MODULE_FILE ${MODULE_FILES} )
|
foreach( MODULE_FILE ${MODULE_FILES} )
|
||||||
if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${MODULE_FILE} )
|
if( NOT IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${SUBDIRECTORY}/${MODULE_FILE} )
|
||||||
configure_file( ${SUBDIRECTORY}/${MODULE_FILE} ${SUBDIRECTORY}/${MODULE_FILE} COPYONLY )
|
configure_file( ${SUBDIRECTORY}/${MODULE_FILE} ${SUBDIRECTORY}/${MODULE_FILE} COPYONLY )
|
||||||
|
|
||||||
|
if( "${MODULE_FILE}" STREQUAL "${MODULE_CONFIG_FILE}" )
|
||||||
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE}
|
||||||
|
DESTINATION share/calamares/modules )
|
||||||
|
else()
|
||||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE}
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${SUBDIRECTORY}/${MODULE_FILE}
|
||||||
DESTINATION ${MODULE_DESTINATION} )
|
DESTINATION ${MODULE_DESTINATION} )
|
||||||
endif()
|
endif()
|
||||||
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${SUBDIRECTORY}${ColorReset}" )
|
message( "-- ${BoldYellow}Found ${CALAMARES_APPLICATION_NAME} module: ${BoldRed}${SUBDIRECTORY}${ColorReset}" )
|
||||||
|
@ -5,11 +5,13 @@ function( calamares_add_plugin )
|
|||||||
# parse arguments ( name needs to be saved before passing ARGN into the macro )
|
# parse arguments ( name needs to be saved before passing ARGN into the macro )
|
||||||
set( NAME ${ARGV0} )
|
set( NAME ${ARGV0} )
|
||||||
set( options NO_INSTALL SHARED_LIB )
|
set( options NO_INSTALL SHARED_LIB )
|
||||||
set( oneValueArgs NAME TYPE EXPORT_MACRO CONFIG_FILE )
|
set( oneValueArgs NAME TYPE EXPORT_MACRO )
|
||||||
set( multiValueArgs SOURCES UI LINK_LIBRARIES COMPILE_DEFINITIONS )
|
set( multiValueArgs SOURCES UI LINK_LIBRARIES COMPILE_DEFINITIONS )
|
||||||
cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
cmake_parse_arguments( PLUGIN "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN} )
|
||||||
set( PLUGIN_NAME ${NAME} )
|
set( PLUGIN_NAME ${NAME} )
|
||||||
set( PLUGIN_DESTINATION ${CMAKE_INSTALL_LIBDIR}/calamares/modules/${PLUGIN_NAME} )
|
set( PLUGIN_DESTINATION ${CMAKE_INSTALL_LIBDIR}/calamares/modules/${PLUGIN_NAME} )
|
||||||
|
set( PLUGIN_DESC_FILE module.desc )
|
||||||
|
set( PLUGIN_CONFIG_FILE ${NAME}.conf )
|
||||||
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
set( CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||||
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
set( CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||||
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}" )
|
||||||
@ -62,7 +64,13 @@ function( calamares_add_plugin )
|
|||||||
|
|
||||||
calamares_add_library( ${calamares_add_library_args} )
|
calamares_add_library( ${calamares_add_library_args} )
|
||||||
|
|
||||||
|
configure_file( ${PLUGIN_DESC_FILE} ${PLUGIN_DESC_FILE} COPYONLY )
|
||||||
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_DESC_FILE}
|
||||||
|
DESTINATION ${PLUGIN_DESTINATION} )
|
||||||
|
|
||||||
|
if( EXISTS "${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE}" )
|
||||||
configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY )
|
configure_file( ${PLUGIN_CONFIG_FILE} ${PLUGIN_CONFIG_FILE} COPYONLY )
|
||||||
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE}
|
install( FILES ${CMAKE_CURRENT_BINARY_DIR}/${PLUGIN_CONFIG_FILE}
|
||||||
DESTINATION ${PLUGIN_DESTINATION} )
|
DESTINATION share/calamares/modules )
|
||||||
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@ -44,7 +44,10 @@ Settings::Settings( bool debugMode, QObject* parent )
|
|||||||
: QObject( parent )
|
: QObject( parent )
|
||||||
, m_debug( debugMode )
|
, m_debug( debugMode )
|
||||||
{
|
{
|
||||||
QFileInfo settingsFile( CalamaresUtils::appDataDir().absoluteFilePath( "settings.conf" ) );
|
QFileInfo settingsFile( "/etc/calamares/settings.conf" );
|
||||||
|
if ( !settingsFile.exists() || !settingsFile.isReadable() )
|
||||||
|
settingsFile = QFileInfo( CalamaresUtils::appDataDir().absoluteFilePath( "settings.conf" ) );
|
||||||
|
|
||||||
if ( debugMode )
|
if ( debugMode )
|
||||||
{
|
{
|
||||||
QFileInfo localFile( QDir( QDir::currentPath() ).absoluteFilePath( "settings.conf" ) );
|
QFileInfo localFile( QDir( QDir::currentPath() ).absoluteFilePath( "settings.conf" ) );
|
||||||
|
@ -20,8 +20,10 @@
|
|||||||
|
|
||||||
#include "ProcessJobModule.h"
|
#include "ProcessJobModule.h"
|
||||||
#include "ViewModule.h"
|
#include "ViewModule.h"
|
||||||
|
#include "utils/CalamaresUtils.h"
|
||||||
#include "utils/YamlUtils.h"
|
#include "utils/YamlUtils.h"
|
||||||
#include "utils/Logger.h"
|
#include "utils/Logger.h"
|
||||||
|
#include "Settings.h"
|
||||||
#include "CalamaresConfig.h"
|
#include "CalamaresConfig.h"
|
||||||
|
|
||||||
#ifdef WITH_PYTHON
|
#ifdef WITH_PYTHON
|
||||||
@ -36,30 +38,18 @@
|
|||||||
#include <QString>
|
#include <QString>
|
||||||
|
|
||||||
|
|
||||||
// Example module.conf
|
// Example module.desc
|
||||||
/*
|
/*
|
||||||
---
|
---
|
||||||
type: "view" #job or view
|
type: "view" #job or view
|
||||||
name: "foo" #the module name. must be unique and same as the parent directory
|
name: "foo" #the module name. must be unique and same as the parent directory
|
||||||
interface: "qtplugin" #can be: qtplugin, python, process, ...
|
interface: "qtplugin" #can be: qtplugin, python, process, ...
|
||||||
requires: [] #list of module names that must also be loaded before this one
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
operator>>( const YAML::Node& node, Calamares::Module* m )
|
operator>>( const YAML::Node& node, Calamares::Module* m )
|
||||||
{
|
{
|
||||||
m->m_name = QString::fromStdString( node[ "name" ].as< std::string >() );
|
m->m_name = QString::fromStdString( node[ "name" ].as< std::string >() );
|
||||||
|
|
||||||
if ( node[ "requires" ] && node[ "requires" ].IsSequence() )
|
|
||||||
{
|
|
||||||
node[ "requires" ] >> m->m_requiredModules;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Module-specific configuration
|
|
||||||
if ( node[ "configuration" ] && node[ "configuration" ].IsMap() )
|
|
||||||
{
|
|
||||||
m->m_configurationMap = CalamaresUtils::yamlMapToVariant( node[ "configuration" ] ).toMap();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Calamares
|
namespace Calamares
|
||||||
@ -69,21 +59,22 @@ Module::~Module()
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
Module*
|
Module*
|
||||||
Module::fromConfigFile( const QString& path )
|
Module::fromDescriptorFile( const QString& path )
|
||||||
{
|
{
|
||||||
Module* m = nullptr;
|
Module* m = nullptr;
|
||||||
QFile metadataFile( path );
|
QFile descriptorFile( path );
|
||||||
if ( metadataFile.exists() && metadataFile.open( QFile::ReadOnly | QFile::Text ) )
|
if ( descriptorFile.exists() && descriptorFile.open( QFile::ReadOnly | QFile::Text ) )
|
||||||
{
|
{
|
||||||
QByteArray ba = metadataFile.readAll();
|
QByteArray ba = descriptorFile.readAll();
|
||||||
cDebug() << Q_FUNC_INFO << "module metadata file: " << ba;
|
cDebug() << Q_FUNC_INFO << "module descriptor file"
|
||||||
|
<< path << ":\n" << ba;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
YAML::Node doc = YAML::Load( ba.constData() );
|
YAML::Node doc = YAML::Load( ba.constData() );
|
||||||
if ( !doc.IsMap() )
|
if ( !doc.IsMap() )
|
||||||
{
|
{
|
||||||
cDebug() << Q_FUNC_INFO << "bad module metadata format"
|
cDebug() << Q_FUNC_INFO << "bad module descriptor format"
|
||||||
<< path;
|
<< path;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@ -91,7 +82,7 @@ Module::fromConfigFile( const QString& path )
|
|||||||
if ( !doc[ "type" ] ||
|
if ( !doc[ "type" ] ||
|
||||||
!doc[ "interface" ] )
|
!doc[ "interface" ] )
|
||||||
{
|
{
|
||||||
cDebug() << Q_FUNC_INFO << "bad module metadata format"
|
cDebug() << Q_FUNC_INFO << "bad module descriptor format"
|
||||||
<< path;
|
<< path;
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
@ -127,6 +118,8 @@ Module::fromConfigFile( const QString& path )
|
|||||||
QFileInfo mfi( path );
|
QFileInfo mfi( path );
|
||||||
m->m_directory = mfi.absoluteDir().absolutePath();
|
m->m_directory = mfi.absoluteDir().absolutePath();
|
||||||
|
|
||||||
|
m->loadConfigurationFile();
|
||||||
|
|
||||||
m->initFrom( doc );
|
m->initFrom( doc );
|
||||||
return m;
|
return m;
|
||||||
}
|
}
|
||||||
@ -141,6 +134,50 @@ Module::fromConfigFile( const QString& path )
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
Module::loadConfigurationFile() //throws YAML::Exception
|
||||||
|
{
|
||||||
|
QStringList configFilesByPriority;
|
||||||
|
configFilesByPriority.append(
|
||||||
|
QString( "/etc/calamares/modules/%1.conf" ).arg( m_name ) );
|
||||||
|
configFilesByPriority.append(
|
||||||
|
CalamaresUtils::appDataDir().absoluteFilePath(
|
||||||
|
QString( "modules/%1.conf" ).arg( m_name ) ) );
|
||||||
|
|
||||||
|
if ( Settings::instance()->debugMode() )
|
||||||
|
{
|
||||||
|
configFilesByPriority.append(
|
||||||
|
QDir( QDir::currentPath() ).absoluteFilePath(
|
||||||
|
QString( "src/modules/%1/%1.conf" ).arg( m_name ) ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ( const QString& path, configFilesByPriority )
|
||||||
|
{
|
||||||
|
QFile configFile( path );
|
||||||
|
if ( configFile.exists() && configFile.open( QFile::ReadOnly | QFile::Text ) )
|
||||||
|
{
|
||||||
|
QByteArray ba = configFile.readAll();
|
||||||
|
cDebug() << Q_FUNC_INFO << "module configuration file"
|
||||||
|
<< path << ":\n" << ba;
|
||||||
|
|
||||||
|
YAML::Node doc = YAML::Load( ba.constData() );
|
||||||
|
if ( !doc.IsMap() )
|
||||||
|
{
|
||||||
|
cDebug() << Q_FUNC_INFO << "bad module configuration format"
|
||||||
|
<< path;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_configurationMap = CalamaresUtils::yamlMapToVariant( doc ).toMap();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString
|
QString
|
||||||
Module::name() const
|
Module::name() const
|
||||||
{
|
{
|
||||||
|
@ -59,7 +59,7 @@ public:
|
|||||||
};
|
};
|
||||||
virtual ~Module();
|
virtual ~Module();
|
||||||
|
|
||||||
static Module* fromConfigFile( const QString& path );
|
static Module* fromDescriptorFile( const QString& path );
|
||||||
|
|
||||||
virtual QString name() const;
|
virtual QString name() const;
|
||||||
virtual QStringList requiredModules() const;
|
virtual QStringList requiredModules() const;
|
||||||
@ -80,6 +80,7 @@ protected:
|
|||||||
QVariantMap m_configurationMap;
|
QVariantMap m_configurationMap;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void loadConfigurationFile(); //throws YAML::Exception
|
||||||
QString m_name;
|
QString m_name;
|
||||||
Type m_type;
|
Type m_type;
|
||||||
Interface m_interface;
|
Interface m_interface;
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
#define MODULE_CONFIG_FILENAME "module.conf"
|
#define MODULE_CONFIG_FILENAME "module.desc"
|
||||||
|
|
||||||
namespace Calamares
|
namespace Calamares
|
||||||
{
|
{
|
||||||
@ -92,7 +92,7 @@ ModuleManager::loadModules( Phase phase )
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
recursiveLoad( moduleName );
|
doLoad( moduleName );
|
||||||
}
|
}
|
||||||
emit modulesLoaded( phase );
|
emit modulesLoaded( phase );
|
||||||
// Loading sequence:
|
// Loading sequence:
|
||||||
@ -114,7 +114,7 @@ ModuleManager::doInit()
|
|||||||
// might (should) contain Calamares modules of any type/interface.
|
// might (should) contain Calamares modules of any type/interface.
|
||||||
// For each modules search path (directory), it is expected that each module
|
// For each modules search path (directory), it is expected that each module
|
||||||
// lives in its own subdirectory. This subdirectory must have the same name as
|
// lives in its own subdirectory. This subdirectory must have the same name as
|
||||||
// the module name, and must contain a settings file named module.conf.
|
// the module name, and must contain a settings file named module.desc.
|
||||||
// If at any time the module loading procedure finds something unexpected, it
|
// If at any time the module loading procedure finds something unexpected, it
|
||||||
// silently skips to the next module or search path. --Teo 6/2014
|
// silently skips to the next module or search path. --Teo 6/2014
|
||||||
foreach ( const QString& path, m_paths )
|
foreach ( const QString& path, m_paths )
|
||||||
@ -137,7 +137,7 @@ ModuleManager::doInit()
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Module* moduleInfo = Module::fromConfigFile( metadataFileInfo.absoluteFilePath() );
|
Module* moduleInfo = Module::fromDescriptorFile( metadataFileInfo.absoluteFilePath() );
|
||||||
|
|
||||||
if ( moduleInfo &&
|
if ( moduleInfo &&
|
||||||
( moduleInfo->name() == currentDir.dirName() ) &&
|
( moduleInfo->name() == currentDir.dirName() ) &&
|
||||||
@ -170,16 +170,9 @@ ModuleManager::doInit()
|
|||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ModuleManager::recursiveLoad( const QString& moduleName )
|
ModuleManager::doLoad( const QString& moduleName )
|
||||||
{
|
{
|
||||||
Module* thisModule = m_availableModules.value( moduleName );
|
Module* thisModule = m_availableModules.value( moduleName );
|
||||||
foreach ( const QString& module, thisModule->requiredModules() )
|
|
||||||
{
|
|
||||||
if ( !m_availableModules.value( module )->isLoaded() )
|
|
||||||
{
|
|
||||||
recursiveLoad( module );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
thisModule->loadSelf();
|
thisModule->loadSelf();
|
||||||
cDebug() << ( thisModule->isLoaded() ? "SUCCESS" : "FAILURE" );
|
cDebug() << ( thisModule->isLoaded() ? "SUCCESS" : "FAILURE" );
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ private slots:
|
|||||||
void doInit();
|
void doInit();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void recursiveLoad( const QString& moduleName );
|
void doLoad( const QString& moduleName );
|
||||||
void checkDependencies();
|
void checkDependencies();
|
||||||
|
|
||||||
QMap< QString, Module* > m_availableModules;
|
QMap< QString, Module* > m_availableModules;
|
||||||
|
@ -7,12 +7,12 @@ Calamares modules are plugins that provide features like installer pages, batch
|
|||||||
|
|
||||||
Currently the only way to write a module which exposes one or more installer pages (viewmodule) is through a Qt plugin. Viewmodules should implement `Calamares::ViewStep`. They can also implement `Calamares::Job` to provide jobs.
|
Currently the only way to write a module which exposes one or more installer pages (viewmodule) is through a Qt plugin. Viewmodules should implement `Calamares::ViewStep`. They can also implement `Calamares::Job` to provide jobs.
|
||||||
|
|
||||||
To add a Qt plugin module, put it in a subdirectory and make sure it has a `module.conf` and a `CMakeLists.txt` with a `calamares_add_plugin` call. It will be picked up automatically by our CMake magic.
|
To add a Qt plugin module, put it in a subdirectory and make sure it has a `module.desc` and a `CMakeLists.txt` with a `calamares_add_plugin` call. It will be picked up automatically by our CMake magic.
|
||||||
|
|
||||||
|
|
||||||
### Python and process jobmodules
|
### Python and process jobmodules
|
||||||
|
|
||||||
Batch jobs for Calamares can be written as Python scripts or as generic commands (shell scripts, external programs, etc.).
|
Batch jobs for Calamares can be written as Python scripts or as generic commands (shell scripts, external programs, etc.).
|
||||||
To add a Python or process jobmodule, put it in a subdirectory and make sure it has a `module.conf`. It will be picked up automatically by our CMake magic. `CMakeLists.txt` is not used for Python and process jobmodules.
|
To add a Python or process jobmodule, put it in a subdirectory and make sure it has a `module.desc`. It will be picked up automatically by our CMake magic. `CMakeLists.txt` is not used for Python and process jobmodules.
|
||||||
|
|
||||||
All code in Python job modules must obey PEP8, the only exception are `libcalamares.globalstorage` keys, which should always be camelCaseWithLowerCaseInitial.
|
All code in Python job modules must obey PEP8, the only exception are `libcalamares.globalstorage` keys, which should always be camelCaseWithLowerCaseInitial.
|
@ -4,6 +4,5 @@
|
|||||||
type: "job"
|
type: "job"
|
||||||
name: "dummyprocess"
|
name: "dummyprocess"
|
||||||
interface: "process"
|
interface: "process"
|
||||||
requires: []
|
|
||||||
command: "/bin/sh -c \"touch ~/calamares-dummyprocess\""
|
command: "/bin/sh -c \"touch ~/calamares-dummyprocess\""
|
||||||
timeout: 5
|
timeout: 5
|
18
src/modules/dummypython/dummypython.conf
Normal file
18
src/modules/dummypython/dummypython.conf
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
syntax: "YAML map of anything"
|
||||||
|
example:
|
||||||
|
whats_this: "module-specific configuration"
|
||||||
|
from_where: "dummypython.conf"
|
||||||
|
a_list:
|
||||||
|
- "item1"
|
||||||
|
- "item2"
|
||||||
|
- "item3"
|
||||||
|
- "item4"
|
||||||
|
a_list_of_maps:
|
||||||
|
- name: "an Item"
|
||||||
|
contents:
|
||||||
|
- "an element"
|
||||||
|
- "another element"
|
||||||
|
- name: "another item"
|
||||||
|
contents:
|
||||||
|
- "not much"
|
@ -1,26 +0,0 @@
|
|||||||
# Module metadata file for dummy process jobmodule
|
|
||||||
# Syntax is YAML 1.2
|
|
||||||
---
|
|
||||||
type: "job"
|
|
||||||
name: "dummypython"
|
|
||||||
interface: "python"
|
|
||||||
requires: []
|
|
||||||
script: "main.py" #assumed relative to the current directory
|
|
||||||
configuration:
|
|
||||||
syntax: "YAML map of anything"
|
|
||||||
example:
|
|
||||||
whats_this: "module-specific configuration"
|
|
||||||
from_where: "module.conf"
|
|
||||||
a_list:
|
|
||||||
- "item1"
|
|
||||||
- "item2"
|
|
||||||
- "item3"
|
|
||||||
- "item4"
|
|
||||||
a_list_of_maps:
|
|
||||||
- name: "an Item"
|
|
||||||
contents:
|
|
||||||
- "an element"
|
|
||||||
- "another element"
|
|
||||||
- name: "another item"
|
|
||||||
contents:
|
|
||||||
- "not much"
|
|
7
src/modules/dummypython/module.desc
Normal file
7
src/modules/dummypython/module.desc
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# Module metadata file for dummy process jobmodule
|
||||||
|
# Syntax is YAML 1.2
|
||||||
|
---
|
||||||
|
type: "job"
|
||||||
|
name: "dummypython"
|
||||||
|
interface: "python"
|
||||||
|
script: "main.py" #assumed relative to the current directory
|
10
src/modules/fstab/fstab.conf
Normal file
10
src/modules/fstab/fstab.conf
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
mountOptions:
|
||||||
|
default: defaults,noatime
|
||||||
|
btrfs: defaults,noatime,space_cache,autodefrag
|
||||||
|
ssdExtraMountOptions:
|
||||||
|
ext4: discard
|
||||||
|
jfs: discard
|
||||||
|
xfs: discard
|
||||||
|
swap: discard
|
||||||
|
btrfs: discard,compress=lzo
|
@ -1,15 +0,0 @@
|
|||||||
type: "job"
|
|
||||||
name: "fstab"
|
|
||||||
interface: "python"
|
|
||||||
requires: []
|
|
||||||
script: "main.py"
|
|
||||||
configuration:
|
|
||||||
mountOptions:
|
|
||||||
default: defaults,noatime
|
|
||||||
btrfs: defaults,noatime,space_cache,autodefrag
|
|
||||||
ssdExtraMountOptions:
|
|
||||||
ext4: discard
|
|
||||||
jfs: discard
|
|
||||||
xfs: discard
|
|
||||||
swap: discard
|
|
||||||
btrfs: discard,compress=lzo
|
|
5
src/modules/fstab/module.desc
Normal file
5
src/modules/fstab/module.desc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
type: "job"
|
||||||
|
name: "fstab"
|
||||||
|
interface: "python"
|
||||||
|
script: "main.py"
|
@ -2,7 +2,6 @@ include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
|
|||||||
calamares_add_plugin( greeting
|
calamares_add_plugin( greeting
|
||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
CONFIG_FILE module.conf
|
|
||||||
SOURCES
|
SOURCES
|
||||||
GreetingViewStep.cpp
|
GreetingViewStep.cpp
|
||||||
GreetingPage.cpp
|
GreetingPage.cpp
|
||||||
|
@ -4,7 +4,4 @@
|
|||||||
type: "view" #core or view
|
type: "view" #core or view
|
||||||
name: "greeting" #the module name. must be unique and same as the parent directory
|
name: "greeting" #the module name. must be unique and same as the parent directory
|
||||||
interface: "qtplugin" #can be: qtplugin, python, process, ...
|
interface: "qtplugin" #can be: qtplugin, python, process, ...
|
||||||
requires: [] #list of module names that must also be loaded. only applies to
|
|
||||||
#binary plugins! these are actual link-time dependencies, not
|
|
||||||
#conceptual dependencies for the setup procedure
|
|
||||||
load: "libcalamares_viewmodule_greeting.so"
|
load: "libcalamares_viewmodule_greeting.so"
|
@ -1,6 +1,5 @@
|
|||||||
|
---
|
||||||
type: "job"
|
type: "job"
|
||||||
name: "grub"
|
name: "grub"
|
||||||
interface: "python"
|
interface: "python"
|
||||||
requires: []
|
|
||||||
script: "main.py"
|
script: "main.py"
|
||||||
configuration:
|
|
2
src/modules/initcpio/initcpio.conf
Normal file
2
src/modules/initcpio/initcpio.conf
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
kernel: linux312
|
@ -1,7 +1,5 @@
|
|||||||
|
---
|
||||||
type: "job"
|
type: "job"
|
||||||
name: "initcpio"
|
name: "initcpio"
|
||||||
interface: "python"
|
interface: "python"
|
||||||
requires: []
|
|
||||||
script: "main.py"
|
script: "main.py"
|
||||||
configuration:
|
|
||||||
kernel: linux312
|
|
@ -3,7 +3,6 @@ include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
|
|||||||
calamares_add_plugin( keyboard
|
calamares_add_plugin( keyboard
|
||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
CONFIG_FILE module.conf
|
|
||||||
SOURCES
|
SOURCES
|
||||||
KeyboardViewStep.cpp
|
KeyboardViewStep.cpp
|
||||||
KeyboardPage.cpp
|
KeyboardPage.cpp
|
||||||
|
@ -4,5 +4,4 @@
|
|||||||
type: "view"
|
type: "view"
|
||||||
name: "keyboard"
|
name: "keyboard"
|
||||||
interface: "qtplugin"
|
interface: "qtplugin"
|
||||||
requires: []
|
|
||||||
load: "libcalamares_viewmodule_keyboard.so"
|
load: "libcalamares_viewmodule_keyboard.so"
|
@ -3,7 +3,6 @@ include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
|
|||||||
calamares_add_plugin( locale
|
calamares_add_plugin( locale
|
||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
CONFIG_FILE module.conf
|
|
||||||
SOURCES
|
SOURCES
|
||||||
LocaleViewStep.cpp
|
LocaleViewStep.cpp
|
||||||
LocalePage.cpp
|
LocalePage.cpp
|
||||||
|
3
src/modules/locale/locale.conf
Normal file
3
src/modules/locale/locale.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
---
|
||||||
|
region: "Europe"
|
||||||
|
zone: "London"
|
@ -4,8 +4,4 @@
|
|||||||
type: "view"
|
type: "view"
|
||||||
name: "locale"
|
name: "locale"
|
||||||
interface: "qtplugin"
|
interface: "qtplugin"
|
||||||
requires: []
|
|
||||||
load: "libcalamares_viewmodule_locale.so"
|
load: "libcalamares_viewmodule_locale.so"
|
||||||
configuration:
|
|
||||||
region: "Europe"
|
|
||||||
zone: "London"
|
|
@ -1,16 +0,0 @@
|
|||||||
type: "job"
|
|
||||||
name: "mount"
|
|
||||||
interface: "python"
|
|
||||||
requires: []
|
|
||||||
script: "main.py"
|
|
||||||
configuration:
|
|
||||||
extraMounts:
|
|
||||||
- device: proc
|
|
||||||
fs: proc
|
|
||||||
mountPoint: /proc
|
|
||||||
- device: sys
|
|
||||||
fs: sysfs
|
|
||||||
mountPoint: /sys
|
|
||||||
- device: /dev
|
|
||||||
mountPoint: /dev
|
|
||||||
options: bind
|
|
5
src/modules/mount/module.desc
Normal file
5
src/modules/mount/module.desc
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
type: "job"
|
||||||
|
name: "mount"
|
||||||
|
interface: "python"
|
||||||
|
script: "main.py"
|
11
src/modules/mount/mount.conf
Normal file
11
src/modules/mount/mount.conf
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
extraMounts:
|
||||||
|
- device: proc
|
||||||
|
fs: proc
|
||||||
|
mountPoint: /proc
|
||||||
|
- device: sys
|
||||||
|
fs: sysfs
|
||||||
|
mountPoint: /sys
|
||||||
|
- device: /dev
|
||||||
|
mountPoint: /dev
|
||||||
|
options: bind
|
@ -20,7 +20,6 @@ include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
|
|||||||
calamares_add_plugin( partition
|
calamares_add_plugin( partition
|
||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
CONFIG_FILE module.conf
|
|
||||||
SOURCES
|
SOURCES
|
||||||
BootLoaderModel.cpp
|
BootLoaderModel.cpp
|
||||||
CreatePartitionDialog.cpp
|
CreatePartitionDialog.cpp
|
||||||
|
@ -4,7 +4,4 @@
|
|||||||
type: "view" #core or view
|
type: "view" #core or view
|
||||||
name: "partition" #the module name. must be unique and same as the parent directory
|
name: "partition" #the module name. must be unique and same as the parent directory
|
||||||
interface: "qtplugin" #can be: qtplugin, python, process, ...
|
interface: "qtplugin" #can be: qtplugin, python, process, ...
|
||||||
requires: [] #list of module names that must also be loaded. only applies to
|
|
||||||
#binary plugins! these are actual link-time dependencies, not
|
|
||||||
#conceptual dependencies for the setup procedure
|
|
||||||
load: "libcalamares_viewmodule_partition.so"
|
load: "libcalamares_viewmodule_partition.so"
|
@ -2,7 +2,6 @@ include_directories( ${PROJECT_BINARY_DIR}/src/libcalamaresui )
|
|||||||
calamares_add_plugin( summary
|
calamares_add_plugin( summary
|
||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
CONFIG_FILE module.conf
|
|
||||||
SOURCES
|
SOURCES
|
||||||
SummaryViewStep.cpp
|
SummaryViewStep.cpp
|
||||||
SummaryPage.cpp
|
SummaryPage.cpp
|
||||||
|
@ -4,5 +4,4 @@
|
|||||||
type: "view"
|
type: "view"
|
||||||
name: "summary"
|
name: "summary"
|
||||||
interface: "qtplugin"
|
interface: "qtplugin"
|
||||||
requires: []
|
|
||||||
load: "libcalamares_viewmodule_summary.so"
|
load: "libcalamares_viewmodule_summary.so"
|
@ -54,7 +54,7 @@ def main():
|
|||||||
|
|
||||||
print("Testing module in: " + args.moduledir)
|
print("Testing module in: " + args.moduledir)
|
||||||
|
|
||||||
confpath = os.path.join(args.moduledir, "module.conf")
|
confpath = os.path.join(args.moduledir, "module.desc")
|
||||||
with open(confpath) as f:
|
with open(confpath) as f:
|
||||||
doc = yaml.load(f)
|
doc = yaml.load(f)
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
|
---
|
||||||
type: "job"
|
type: "job"
|
||||||
name: "umount"
|
name: "umount"
|
||||||
interface: "python"
|
interface: "python"
|
||||||
requires: []
|
|
||||||
script: "main.py"
|
script: "main.py"
|
||||||
configuration:
|
|
@ -3,9 +3,4 @@
|
|||||||
type: "job"
|
type: "job"
|
||||||
name: "unsquashfs"
|
name: "unsquashfs"
|
||||||
interface: "python"
|
interface: "python"
|
||||||
requires: []
|
|
||||||
script: "main.py" #assumed relative to the current directory
|
script: "main.py" #assumed relative to the current directory
|
||||||
configuration:
|
|
||||||
unpack:
|
|
||||||
- source: "/path/to/squashfs/image.sqfs"
|
|
||||||
destination: ""
|
|
4
src/modules/unsquashfs/unsquashfs.conf
Normal file
4
src/modules/unsquashfs/unsquashfs.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
unpack:
|
||||||
|
- source: "/path/to/squashfs/image.sqfs"
|
||||||
|
destination: ""
|
@ -6,7 +6,6 @@ find_package( Crypt )
|
|||||||
calamares_add_plugin( users
|
calamares_add_plugin( users
|
||||||
TYPE viewmodule
|
TYPE viewmodule
|
||||||
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
EXPORT_MACRO PLUGINDLLEXPORT_PRO
|
||||||
CONFIG_FILE module.conf
|
|
||||||
SOURCES
|
SOURCES
|
||||||
CreateUserJob.cpp
|
CreateUserJob.cpp
|
||||||
SetPasswordJob.cpp
|
SetPasswordJob.cpp
|
||||||
|
@ -4,7 +4,4 @@
|
|||||||
type: "view" #core or view
|
type: "view" #core or view
|
||||||
name: "users" #the module name. must be unique and same as the parent directory
|
name: "users" #the module name. must be unique and same as the parent directory
|
||||||
interface: "qtplugin" #can be: qtplugin, python, process, ...
|
interface: "qtplugin" #can be: qtplugin, python, process, ...
|
||||||
requires: [] #list of module names that must also be loaded. only applies to
|
|
||||||
#binary plugins! these are actual link-time dependencies, not
|
|
||||||
#conceptual dependencies for the setup procedure
|
|
||||||
load: "libcalamares_viewmodule_users.so"
|
load: "libcalamares_viewmodule_users.so"
|
Loading…
Reference in New Issue
Block a user