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.
main
Teo Mrnjavac 11 years ago
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

@ -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"

@ -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

@ -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

@ -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:

@ -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

@ -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

@ -0,0 +1,5 @@
---
type: "job"
name: "mount"
interface: "python"
script: "main.py"

@ -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: ""

@ -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…
Cancel
Save