From adc23b99b6fbde993184e9bb9441d8f94e0255a5 Mon Sep 17 00:00:00 2001 From: Teo Mrnjavac Date: Fri, 3 Jul 2015 17:03:33 +0200 Subject: [PATCH] Move CalaPM init into PMUtils. --- src/modules/partition/core/PMUtils.cpp | 26 ++++++++++- src/modules/partition/core/PMUtils.h | 13 ++++++ .../partition/core/PartitionCoreModule.cpp | 43 +++++++++---------- 3 files changed, 59 insertions(+), 23 deletions(-) diff --git a/src/modules/partition/core/PMUtils.cpp b/src/modules/partition/core/PMUtils.cpp index 43b31b642..04de0886a 100644 --- a/src/modules/partition/core/PMUtils.cpp +++ b/src/modules/partition/core/PMUtils.cpp @@ -25,10 +25,35 @@ // KPMcore #include #include +#include + +#include + namespace PMUtils { +static bool s_KPMcoreInited = false; + +bool +initKPMcore() +{ + if ( s_KPMcoreInited ) + return true; + + QByteArray backendName = qgetenv( "KPMCORE_BACKEND" ); + if ( backendName.isEmpty() ) + backendName = "libparted"; + + if ( !CoreBackendManager::self()->load( backendName ) ) + { + qWarning() << "Failed to load backend plugin" << backendName; + return false; + } + s_KPMcoreInited = true; + return true; +} + bool isPartitionFreeSpace( Partition* partition ) @@ -115,5 +140,4 @@ clonePartition( Device* device, Partition* partition ) ); } - } // namespace diff --git a/src/modules/partition/core/PMUtils.h b/src/modules/partition/core/PMUtils.h index 157a15d9a..f2683612c 100644 --- a/src/modules/partition/core/PMUtils.h +++ b/src/modules/partition/core/PMUtils.h @@ -38,6 +38,19 @@ class PartitionRole; namespace PMUtils { +/** + * Thin wrapper on top of CoreBackendManager. Hides things like initializing the + * Config instance or instantiating the backend. + * + * Initialize PartitionManager Config object and load a PartitionManager + * backend. It loads the "libparted" plugin by default, but this can be + * overloaded by settings the environment variable KPMCORE_BACKEND. Setting it to + * "dummy" will load the dummy plugin instead. + * + * @return true if initialization was successful. + */ +bool initKPMcore(); + bool isPartitionFreeSpace( Partition* ); /** diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 0fe4107be..8cc658a2a 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -17,28 +17,27 @@ * along with Calamares. If not, see . */ -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include +#include "core/PartitionCoreModule.h" + +#include "core/BootLoaderModel.h" +#include "core/DeviceModel.h" +#include "core/PartitionInfo.h" +#include "core/PartitionIterator.h" +#include "core/PartitionModel.h" +#include "core/PMUtils.h" +#include "jobs/ClearMountsJob.h" +#include "jobs/ClearTempMountsJob.h" +#include "jobs/CreatePartitionJob.h" +#include "jobs/CreatePartitionTableJob.h" +#include "jobs/DeletePartitionJob.h" +#include "jobs/FillGlobalStorageJob.h" +#include "jobs/FormatPartitionJob.h" +#include "jobs/ResizePartitionJob.h" + +#include "Typedefs.h" +#include "utils/Logger.h" // KPMcore -#include #include #include #include @@ -97,8 +96,8 @@ PartitionCoreModule::PartitionCoreModule( QObject* parent ) , m_deviceModel( new DeviceModel( this ) ) , m_bootLoaderModel( new BootLoaderModel( this ) ) { - if ( !CalaPM::init() ) - qFatal( "Failed to init CalaPM" ); + if ( !PMUtils::initKPMcore() ) + qFatal( "Failed to initialize KPMcore backend" ); FileSystemFactory::init(); init(); }