From 8457a00ad0347a0f745cd2b426107b1af1bcd03f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 30 Oct 2020 11:05:15 +0100 Subject: [PATCH 01/23] [keyboard] Fix group-switcher multiplying FIXES #1556 --- src/modules/keyboard/Config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/keyboard/Config.cpp b/src/modules/keyboard/Config.cpp index 6475d9bc8..5d5e80d5f 100644 --- a/src/modules/keyboard/Config.cpp +++ b/src/modules/keyboard/Config.cpp @@ -108,7 +108,7 @@ xkbmap_query_grp_option() //it's either in the end of line or before the other option so \s or , int lastIndex = outputLine.indexOf( QRegExp( "[\\s,]" ), index ); - return outputLine.mid( index, lastIndex - 1 ); + return outputLine.mid( index, lastIndex - index ); } AdditionalLayoutInfo From f2960366c86ecbb251380d2c3890b812e49b328d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Sat, 20 Jun 2020 00:37:17 -0400 Subject: [PATCH 02/23] [partition] Remove unused addEntry method - The method addEntry with PartitionEntry appears to be unused since its always. Drop it! --- src/modules/partition/core/PartitionLayout.cpp | 14 -------------- src/modules/partition/core/PartitionLayout.h | 1 - 2 files changed, 15 deletions(-) diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index d42e7b568..2fb4b9966 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -62,20 +62,6 @@ PartitionLayout::PartitionLayout( const PartitionLayout& layout ) PartitionLayout::~PartitionLayout() {} -bool -PartitionLayout::addEntry( PartitionLayout::PartitionEntry entry ) -{ - if ( !entry.isValid() ) - { - cError() << "Partition size is invalid or has min size > max size"; - return false; - } - - m_partLayout.append( entry ); - - return true; -} - PartitionLayout::PartitionEntry::PartitionEntry() : partAttributes( 0 ) { diff --git a/src/modules/partition/core/PartitionLayout.h b/src/modules/partition/core/PartitionLayout.h index 79dff1697..29f2cd609 100644 --- a/src/modules/partition/core/PartitionLayout.h +++ b/src/modules/partition/core/PartitionLayout.h @@ -63,7 +63,6 @@ public: PartitionLayout( const PartitionLayout& layout ); ~PartitionLayout(); - bool addEntry( PartitionEntry entry ); bool addEntry( const QString& mountPoint, const QString& size, const QString& min = QString(), From eae1e90dcef217b1450fbbc75f43b71343422c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Mon, 22 Jun 2020 09:59:30 -0400 Subject: [PATCH 03/23] [partition] Remove unused PartitionLayout constructor - The constructor PartitionLayout with PartitionEntry appears to be unused since its always. Drop it! --- src/modules/partition/core/PartitionLayout.cpp | 6 ------ src/modules/partition/core/PartitionLayout.h | 1 - 2 files changed, 7 deletions(-) diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index 2fb4b9966..007808910 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -48,12 +48,6 @@ PartitionLayout::PartitionLayout() { } -PartitionLayout::PartitionLayout( PartitionLayout::PartitionEntry entry ) - : PartitionLayout() -{ - m_partLayout.append( entry ); -} - PartitionLayout::PartitionLayout( const PartitionLayout& layout ) : m_defaultFsType( layout.m_defaultFsType ) , m_partLayout( layout.m_partLayout ) diff --git a/src/modules/partition/core/PartitionLayout.h b/src/modules/partition/core/PartitionLayout.h index 29f2cd609..329a181bb 100644 --- a/src/modules/partition/core/PartitionLayout.h +++ b/src/modules/partition/core/PartitionLayout.h @@ -59,7 +59,6 @@ public: }; PartitionLayout(); - PartitionLayout( PartitionEntry entry ); PartitionLayout( const PartitionLayout& layout ); ~PartitionLayout(); From d6ea30b23e72c20d71bf9356efb43000df0374c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Fri, 19 Jun 2020 23:06:38 -0400 Subject: [PATCH 04/23] [partition] Move initLayout logic to object PartitionLayout - The logic of the method initLayout belongs to the object PartitionLayout. Move logic to that object. - Use a single method initLayout in object PartitionCoreModule. - Member m_partLayout in object PartitionCoreModule is no longer allocated. --- .../partition/core/PartitionCoreModule.cpp | 76 +------------------ .../partition/core/PartitionCoreModule.h | 5 +- .../partition/core/PartitionLayout.cpp | 75 ++++++++++++++++++ src/modules/partition/core/PartitionLayout.h | 1 + .../partition/gui/PartitionViewStep.cpp | 9 +-- 5 files changed, 81 insertions(+), 85 deletions(-) diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index 3327eb50b..e97aff9fa 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -860,82 +860,10 @@ PartitionCoreModule::setBootLoaderInstallPath( const QString& path ) m_bootLoaderInstallPath = path; } -void -PartitionCoreModule::initLayout() -{ - m_partLayout = new PartitionLayout(); - - m_partLayout->addEntry( QString( "/" ), QString( "100%" ) ); -} - void PartitionCoreModule::initLayout( const QVariantList& config ) { - bool ok; - QString sizeString; - QString minSizeString; - QString maxSizeString; - - m_partLayout = new PartitionLayout(); - - for ( const auto& r : config ) - { - QVariantMap pentry = r.toMap(); - - if ( !pentry.contains( "name" ) || !pentry.contains( "mountPoint" ) || !pentry.contains( "filesystem" ) - || !pentry.contains( "size" ) ) - { - cError() << "Partition layout entry #" << config.indexOf( r ) - << "lacks mandatory attributes, switching to default layout."; - delete ( m_partLayout ); - initLayout(); - break; - } - - if ( pentry.contains( "size" ) && CalamaresUtils::getString( pentry, "size" ).isEmpty() ) - { - sizeString.setNum( CalamaresUtils::getInteger( pentry, "size", 0 ) ); - } - else - { - sizeString = CalamaresUtils::getString( pentry, "size" ); - } - - if ( pentry.contains( "minSize" ) && CalamaresUtils::getString( pentry, "minSize" ).isEmpty() ) - { - minSizeString.setNum( CalamaresUtils::getInteger( pentry, "minSize", 0 ) ); - } - else - { - minSizeString = CalamaresUtils::getString( pentry, "minSize" ); - } - - if ( pentry.contains( "maxSize" ) && CalamaresUtils::getString( pentry, "maxSize" ).isEmpty() ) - { - maxSizeString.setNum( CalamaresUtils::getInteger( pentry, "maxSize", 0 ) ); - } - else - { - maxSizeString = CalamaresUtils::getString( pentry, "maxSize" ); - } - - if ( !m_partLayout->addEntry( CalamaresUtils::getString( pentry, "name" ), - CalamaresUtils::getString( pentry, "uuid" ), - CalamaresUtils::getString( pentry, "type" ), - CalamaresUtils::getUnsignedInteger( pentry, "attributes", 0 ), - CalamaresUtils::getString( pentry, "mountPoint" ), - CalamaresUtils::getString( pentry, "filesystem" ), - CalamaresUtils::getSubMap( pentry, "features", ok ), - sizeString, - minSizeString, - maxSizeString ) ) - { - cError() << "Partition layout entry #" << config.indexOf( r ) << "is invalid, switching to default layout."; - delete ( m_partLayout ); - initLayout(); - break; - } - } + m_partLayout.init( config ); } void @@ -947,7 +875,7 @@ PartitionCoreModule::layoutApply( Device* dev, const PartitionRole& role ) { bool isEfi = PartUtils::isEfiSystem(); - QList< Partition* > partList = m_partLayout->execute( dev, firstSector, lastSector, luksPassphrase, parent, role ); + QList< Partition* > partList = m_partLayout.execute( dev, firstSector, lastSector, luksPassphrase, parent, role ); // Partition::mountPoint() tells us where it is mounted **now**, while // PartitionInfo::mountPoint() says where it will be mounted in the target system. diff --git a/src/modules/partition/core/PartitionCoreModule.h b/src/modules/partition/core/PartitionCoreModule.h index 1e4179b97..46feb5f94 100644 --- a/src/modules/partition/core/PartitionCoreModule.h +++ b/src/modules/partition/core/PartitionCoreModule.h @@ -156,8 +156,7 @@ public: /// @brief Set the path where the bootloader will be installed void setBootLoaderInstallPath( const QString& path ); - void initLayout(); - void initLayout( const QVariantList& config ); + void initLayout( const QVariantList& config = QVariantList() ); void layoutApply( Device* dev, qint64 firstSector, qint64 lastSector, QString luksPassphrase ); void layoutApply( Device* dev, @@ -256,7 +255,7 @@ private: bool m_hasRootMountPoint = false; bool m_isDirty = false; QString m_bootLoaderInstallPath; - PartitionLayout* m_partLayout; + PartitionLayout m_partLayout; OsproberEntryList m_osproberLines; diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index 007808910..7c00a48b2 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -21,6 +21,8 @@ #include "core/PartitionActions.h" #include "core/PartitionInfo.h" +#include "utils/Variant.h" + #include #include #include @@ -135,6 +137,79 @@ PartitionLayout::addEntry( const QString& label, return true; } +void +PartitionLayout::init( const QVariantList& config ) +{ + bool ok; + QString sizeString; + QString minSizeString; + QString maxSizeString; + + m_partLayout.clear(); + + for ( const auto& r : config ) + { + QVariantMap pentry = r.toMap(); + + if ( !pentry.contains( "name" ) || !pentry.contains( "mountPoint" ) || !pentry.contains( "filesystem" ) + || !pentry.contains( "size" ) ) + { + cError() << "Partition layout entry #" << config.indexOf( r ) + << "lacks mandatory attributes, switching to default layout."; + m_partLayout.clear(); + break; + } + + if ( pentry.contains( "size" ) && CalamaresUtils::getString( pentry, "size" ).isEmpty() ) + { + sizeString.setNum( CalamaresUtils::getInteger( pentry, "size", 0 ) ); + } + else + { + sizeString = CalamaresUtils::getString( pentry, "size" ); + } + + if ( pentry.contains( "minSize" ) && CalamaresUtils::getString( pentry, "minSize" ).isEmpty() ) + { + minSizeString.setNum( CalamaresUtils::getInteger( pentry, "minSize", 0 ) ); + } + else + { + minSizeString = CalamaresUtils::getString( pentry, "minSize" ); + } + + if ( pentry.contains( "maxSize" ) && CalamaresUtils::getString( pentry, "maxSize" ).isEmpty() ) + { + maxSizeString.setNum( CalamaresUtils::getInteger( pentry, "maxSize", 0 ) ); + } + else + { + maxSizeString = CalamaresUtils::getString( pentry, "maxSize" ); + } + + if ( !addEntry( CalamaresUtils::getString( pentry, "name" ), + CalamaresUtils::getString( pentry, "uuid" ), + CalamaresUtils::getString( pentry, "type" ), + CalamaresUtils::getUnsignedInteger( pentry, "attributes", 0 ), + CalamaresUtils::getString( pentry, "mountPoint" ), + CalamaresUtils::getString( pentry, "filesystem" ), + CalamaresUtils::getSubMap( pentry, "features", ok ), + sizeString, + minSizeString, + maxSizeString ) ) + { + cError() << "Partition layout entry #" << config.indexOf( r ) << "is invalid, switching to default layout."; + m_partLayout.clear(); + break; + } + } + + if ( !m_partLayout.count() ) + { + addEntry( QString( "/" ), QString( "100%" ) ); + } +} + QList< Partition* > PartitionLayout::execute( Device* dev, qint64 firstSector, diff --git a/src/modules/partition/core/PartitionLayout.h b/src/modules/partition/core/PartitionLayout.h index 329a181bb..b3c317d50 100644 --- a/src/modules/partition/core/PartitionLayout.h +++ b/src/modules/partition/core/PartitionLayout.h @@ -62,6 +62,7 @@ public: PartitionLayout( const PartitionLayout& layout ); ~PartitionLayout(); + void init( const QVariantList& config ); bool addEntry( const QString& mountPoint, const QString& size, const QString& min = QString(), diff --git a/src/modules/partition/gui/PartitionViewStep.cpp b/src/modules/partition/gui/PartitionViewStep.cpp index 63227e3b7..0431e1107 100644 --- a/src/modules/partition/gui/PartitionViewStep.cpp +++ b/src/modules/partition/gui/PartitionViewStep.cpp @@ -596,14 +596,7 @@ PartitionViewStep::setConfigurationMap( const QVariantMap& configurationMap ) QFuture< void > future = QtConcurrent::run( this, &PartitionViewStep::initPartitionCoreModule ); m_future->setFuture( future ); - if ( configurationMap.contains( "partitionLayout" ) ) - { - m_core->initLayout( configurationMap.value( "partitionLayout" ).toList() ); - } - else - { - m_core->initLayout(); - } + m_core->initLayout( configurationMap.value( "partitionLayout" ).toList() ); } From db7cf74034ea265eaba9aa1796ec1276d3ffb4db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Sun, 21 Jun 2020 18:20:26 -0400 Subject: [PATCH 05/23] [partition] Remove the call the method contains - The variant helper getString() calls contains() already. --- src/modules/partition/core/PartitionLayout.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index 7c00a48b2..aa08aebb9 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -160,7 +160,7 @@ PartitionLayout::init( const QVariantList& config ) break; } - if ( pentry.contains( "size" ) && CalamaresUtils::getString( pentry, "size" ).isEmpty() ) + if ( CalamaresUtils::getString( pentry, "size" ).isEmpty() ) { sizeString.setNum( CalamaresUtils::getInteger( pentry, "size", 0 ) ); } @@ -169,7 +169,7 @@ PartitionLayout::init( const QVariantList& config ) sizeString = CalamaresUtils::getString( pentry, "size" ); } - if ( pentry.contains( "minSize" ) && CalamaresUtils::getString( pentry, "minSize" ).isEmpty() ) + if ( CalamaresUtils::getString( pentry, "minSize" ).isEmpty() ) { minSizeString.setNum( CalamaresUtils::getInteger( pentry, "minSize", 0 ) ); } @@ -178,7 +178,7 @@ PartitionLayout::init( const QVariantList& config ) minSizeString = CalamaresUtils::getString( pentry, "minSize" ); } - if ( pentry.contains( "maxSize" ) && CalamaresUtils::getString( pentry, "maxSize" ).isEmpty() ) + if ( CalamaresUtils::getString( pentry, "maxSize" ).isEmpty() ) { maxSizeString.setNum( CalamaresUtils::getInteger( pentry, "maxSize", 0 ) ); } From aec066359a4553294c0e144f97bc85600388f175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Wed, 28 Oct 2020 10:41:48 -0400 Subject: [PATCH 06/23] [libcalamares] Fix coding style --- src/libcalamares/partition/PartitionQuery.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/libcalamares/partition/PartitionQuery.cpp b/src/libcalamares/partition/PartitionQuery.cpp index beba6b9bc..af281f65b 100644 --- a/src/libcalamares/partition/PartitionQuery.cpp +++ b/src/libcalamares/partition/PartitionQuery.cpp @@ -67,11 +67,15 @@ findPartitionByPath( const QList< Device* >& devices, const QString& path ) } for ( auto device : devices ) + { for ( auto it = PartitionIterator::begin( device ); it != PartitionIterator::end( device ); ++it ) + { if ( ( *it )->partitionPath() == path.simplified() ) { return *it; } + } + } return nullptr; } @@ -81,11 +85,15 @@ findPartitions( const QList< Device* >& devices, std::function< bool( Partition* { QList< Partition* > results; for ( auto device : devices ) + { for ( auto it = PartitionIterator::begin( device ); it != PartitionIterator::end( device ); ++it ) + { if ( criterionFunction( *it ) ) { results.append( *it ); } + } + } return results; } From 03df5f689152fe31a69d19222f9be0ed18935c8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Wed, 28 Oct 2020 11:38:01 -0400 Subject: [PATCH 07/23] [libcalamares] Fix constness of functions --- src/libcalamares/partition/PartitionQuery.cpp | 4 ++-- src/libcalamares/partition/PartitionQuery.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libcalamares/partition/PartitionQuery.cpp b/src/libcalamares/partition/PartitionQuery.cpp index af281f65b..4c9c1549d 100644 --- a/src/libcalamares/partition/PartitionQuery.cpp +++ b/src/libcalamares/partition/PartitionQuery.cpp @@ -27,14 +27,14 @@ using ::Device; using ::Partition; bool -isPartitionFreeSpace( Partition* partition ) +isPartitionFreeSpace( const Partition* partition ) { return partition->roles().has( PartitionRole::Unallocated ); } bool -isPartitionNew( Partition* partition ) +isPartitionNew( const Partition* partition ) { #if defined( WITH_KPMCORE4API ) constexpr auto NewState = Partition::State::New; diff --git a/src/libcalamares/partition/PartitionQuery.h b/src/libcalamares/partition/PartitionQuery.h index 817966d35..9ef5f41f6 100644 --- a/src/libcalamares/partition/PartitionQuery.h +++ b/src/libcalamares/partition/PartitionQuery.h @@ -34,14 +34,14 @@ using ::Device; using ::Partition; /** @brief Is this a free-space area? */ -bool isPartitionFreeSpace( Partition* ); +bool isPartitionFreeSpace( const Partition* ); /** @brief Is this partition newly-to-be-created? * * Returns true if the partition is planned to be created by the installer as * opposed to already existing on the disk. */ -bool isPartitionNew( Partition* ); +bool isPartitionNew( const Partition* ); /** * Iterates on all devices and return the first partition which is (already) From 3f2dd516d3da43525cb733951aef3d78dfba113e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Sun, 21 Jun 2020 18:16:07 -0400 Subject: [PATCH 08/23] [partition] Simplify the retrieval of the size attributes - The variant helper toString() takes a default value since commit c9f942ad6 ([libcalamares] Add default value to variant helpers). - Set the default value to 0 and simplify the retreival of size values by calling the helper toString() and removing the temporary variables. --- .../partition/core/PartitionLayout.cpp | 36 ++----------------- 1 file changed, 3 insertions(+), 33 deletions(-) diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index aa08aebb9..b87f8c0ca 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -141,9 +141,6 @@ void PartitionLayout::init( const QVariantList& config ) { bool ok; - QString sizeString; - QString minSizeString; - QString maxSizeString; m_partLayout.clear(); @@ -160,33 +157,6 @@ PartitionLayout::init( const QVariantList& config ) break; } - if ( CalamaresUtils::getString( pentry, "size" ).isEmpty() ) - { - sizeString.setNum( CalamaresUtils::getInteger( pentry, "size", 0 ) ); - } - else - { - sizeString = CalamaresUtils::getString( pentry, "size" ); - } - - if ( CalamaresUtils::getString( pentry, "minSize" ).isEmpty() ) - { - minSizeString.setNum( CalamaresUtils::getInteger( pentry, "minSize", 0 ) ); - } - else - { - minSizeString = CalamaresUtils::getString( pentry, "minSize" ); - } - - if ( CalamaresUtils::getString( pentry, "maxSize" ).isEmpty() ) - { - maxSizeString.setNum( CalamaresUtils::getInteger( pentry, "maxSize", 0 ) ); - } - else - { - maxSizeString = CalamaresUtils::getString( pentry, "maxSize" ); - } - if ( !addEntry( CalamaresUtils::getString( pentry, "name" ), CalamaresUtils::getString( pentry, "uuid" ), CalamaresUtils::getString( pentry, "type" ), @@ -194,9 +164,9 @@ PartitionLayout::init( const QVariantList& config ) CalamaresUtils::getString( pentry, "mountPoint" ), CalamaresUtils::getString( pentry, "filesystem" ), CalamaresUtils::getSubMap( pentry, "features", ok ), - sizeString, - minSizeString, - maxSizeString ) ) + CalamaresUtils::getString( pentry, "size", QStringLiteral( "0" ) ), + CalamaresUtils::getString( pentry, "minSize", QStringLiteral( "0" ) ), + CalamaresUtils::getString( pentry, "maxSize", QStringLiteral( "0" ) ) ) ) { cError() << "Partition layout entry #" << config.indexOf( r ) << "is invalid, switching to default layout."; m_partLayout.clear(); From 81bec68b3daa1f4758130973e1912dd1784c63ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Sun, 21 Jun 2020 18:02:04 -0400 Subject: [PATCH 09/23] [partition] Introduce new constructors for PartitionEntry - Introduces new constructors for PartitionEntry: copy constructory and constructor with all attributes. - Use the new constructor in method addEntry(). --- .../partition/core/PartitionLayout.cpp | 116 ++++++++---------- src/modules/partition/core/PartitionLayout.h | 35 +++--- src/modules/partition/partition.conf | 14 ++- .../partition/tests/CreateLayoutsTests.cpp | 10 +- 4 files changed, 88 insertions(+), 87 deletions(-) diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index b87f8c0ca..397d64c85 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -63,74 +63,60 @@ PartitionLayout::PartitionEntry::PartitionEntry() { } -PartitionLayout::PartitionEntry::PartitionEntry( const QString& size, const QString& min, const QString& max ) +PartitionLayout::PartitionEntry::PartitionEntry( const QString& mountPoint, const QString& size, const QString& minSize, const QString& maxSize ) : partAttributes( 0 ) + , partMountPoint( mountPoint ) , partSize( size ) - , partMinSize( min ) - , partMaxSize( max ) + , partMinSize( minSize ) + , partMaxSize( maxSize ) { } -bool -PartitionLayout::addEntry( const QString& mountPoint, const QString& size, const QString& min, const QString& max ) +PartitionLayout::PartitionEntry::PartitionEntry( const QString& label, + const QString& uuid, + const QString& type, + quint64 attributes, + const QString& mountPoint, + const QString& fs, + const QVariantMap& features, + const QString& size, + const QString& minSize, + const QString& maxSize ) + : partLabel( label ) + , partUUID( uuid ) + , partType( type ) + , partAttributes( attributes ) + , partMountPoint( mountPoint ) + , partFeatures( features ) + , partSize( size ) + , partMinSize( minSize ) + , partMaxSize( maxSize ) { - PartitionLayout::PartitionEntry entry( size, min, max ); - - if ( !entry.isValid() ) - { - cError() << "Partition size" << size << "is invalid or" << min << ">" << max; - return false; - } - if ( mountPoint.isEmpty() || !mountPoint.startsWith( QString( "/" ) ) ) - { - cError() << "Partition mount point" << mountPoint << "is invalid"; - return false; - } - - entry.partMountPoint = mountPoint; - entry.partFileSystem = m_defaultFsType; - - m_partLayout.append( entry ); - - return true; + PartUtils::findFS( fs, &partFileSystem ); } -bool -PartitionLayout::addEntry( const QString& label, - const QString& uuid, - const QString& type, - quint64 attributes, - const QString& mountPoint, - const QString& fs, - const QVariantMap& features, - const QString& size, - const QString& min, - const QString& max ) +PartitionLayout::PartitionEntry::PartitionEntry( const PartitionEntry& e ) + : partLabel( e.partLabel ) + , partUUID( e.partUUID ) + , partType( e.partType ) + , partAttributes( e.partAttributes ) + , partMountPoint( e.partMountPoint ) + , partFileSystem( e.partFileSystem ) + , partFeatures( e.partFeatures ) + , partSize( e.partSize ) + , partMinSize( e.partMinSize ) + , partMaxSize( e.partMaxSize ) { - PartitionLayout::PartitionEntry entry( size, min, max ); +} + +bool +PartitionLayout::addEntry( const PartitionEntry& entry ) +{ if ( !entry.isValid() ) { - cError() << "Partition size" << size << "is invalid or" << min << ">" << max; return false; } - if ( mountPoint.isEmpty() || !mountPoint.startsWith( QString( "/" ) ) ) - { - cError() << "Partition mount point" << mountPoint << "is invalid"; - return false; - } - - entry.partLabel = label; - entry.partUUID = uuid; - entry.partType = type; - entry.partAttributes = attributes; - entry.partMountPoint = mountPoint; - PartUtils::findFS( fs, &entry.partFileSystem ); - if ( entry.partFileSystem == FileSystem::Unknown ) - { - entry.partFileSystem = m_defaultFsType; - } - entry.partFeatures = features; m_partLayout.append( entry ); @@ -157,16 +143,16 @@ PartitionLayout::init( const QVariantList& config ) break; } - if ( !addEntry( CalamaresUtils::getString( pentry, "name" ), - CalamaresUtils::getString( pentry, "uuid" ), - CalamaresUtils::getString( pentry, "type" ), - CalamaresUtils::getUnsignedInteger( pentry, "attributes", 0 ), - CalamaresUtils::getString( pentry, "mountPoint" ), - CalamaresUtils::getString( pentry, "filesystem" ), - CalamaresUtils::getSubMap( pentry, "features", ok ), - CalamaresUtils::getString( pentry, "size", QStringLiteral( "0" ) ), - CalamaresUtils::getString( pentry, "minSize", QStringLiteral( "0" ) ), - CalamaresUtils::getString( pentry, "maxSize", QStringLiteral( "0" ) ) ) ) + if ( !addEntry( { CalamaresUtils::getString( pentry, "name" ), + CalamaresUtils::getString( pentry, "uuid" ), + CalamaresUtils::getString( pentry, "type" ), + CalamaresUtils::getUnsignedInteger( pentry, "attributes", 0 ), + CalamaresUtils::getString( pentry, "mountPoint" ), + CalamaresUtils::getString( pentry, "filesystem" ), + CalamaresUtils::getSubMap( pentry, "features", ok ), + CalamaresUtils::getString( pentry, "size", QStringLiteral( "0" ) ), + CalamaresUtils::getString( pentry, "minSize", QStringLiteral( "0" ) ), + CalamaresUtils::getString( pentry, "maxSize", QStringLiteral( "0" ) ) } ) ) { cError() << "Partition layout entry #" << config.indexOf( r ) << "is invalid, switching to default layout."; m_partLayout.clear(); @@ -176,7 +162,7 @@ PartitionLayout::init( const QVariantList& config ) if ( !m_partLayout.count() ) { - addEntry( QString( "/" ), QString( "100%" ) ); + addEntry( { QString( "/" ), QString( "100%" ) } ); } } diff --git a/src/modules/partition/core/PartitionLayout.h b/src/modules/partition/core/PartitionLayout.h index b3c317d50..b27adccec 100644 --- a/src/modules/partition/core/PartitionLayout.h +++ b/src/modules/partition/core/PartitionLayout.h @@ -44,8 +44,24 @@ public: /// @brief All-zeroes PartitionEntry PartitionEntry(); - /// @brief Parse @p size, @p min and @p max to their respective member variables - PartitionEntry( const QString& size, const QString& min, const QString& max ); + /// @brief Parse @p mountPoint, @p size, @p minSize and @p maxSize to their respective member variables + PartitionEntry( const QString& mountPoint, + const QString& size, + const QString& minSize = QString(), + const QString& maxSize = QString() ); + /// @brief All-field PartitionEntry + PartitionEntry( const QString& label, + const QString& uuid, + const QString& type, + quint64 attributes, + const QString& mountPoint, + const QString& fs, + const QVariantMap& features, + const QString& size, + const QString& minSize = QString(), + const QString& maxSize = QString() ); + /// @brief Copy PartitionEntry + PartitionEntry( const PartitionEntry& e ); bool isValid() const { @@ -63,20 +79,7 @@ public: ~PartitionLayout(); void init( const QVariantList& config ); - bool addEntry( const QString& mountPoint, - const QString& size, - const QString& min = QString(), - const QString& max = QString() ); - bool addEntry( const QString& label, - const QString& uuid, - const QString& type, - quint64 attributes, - const QString& mountPoint, - const QString& fs, - const QVariantMap& features, - const QString& size, - const QString& min = QString(), - const QString& max = QString() ); + bool addEntry( const PartitionEntry& entry ); /** * @brief Apply the current partition layout to the selected drive space. diff --git a/src/modules/partition/partition.conf b/src/modules/partition/partition.conf index bfedddfca..0f8764bfd 100644 --- a/src/modules/partition/partition.conf +++ b/src/modules/partition/partition.conf @@ -154,7 +154,19 @@ defaultFileSystemType: "ext4" # If nothing is specified, LUKS is enabled in automated modes. #enableLuksAutomatedPartitioning: true -# To apply a custom partition layout, it has to be defined this way : +# Partition layout. +# +# This optional setting specifies a custom partition layout. +# +# If nothing is specified, the default partition layout is a single partition +# for root that uses 100% of the space and uses the filesystem defined by +# defaultFileSystemType. +# +# Note: the EFI system partition is prepend automatically to the layout if +# needed; the swap partition is appended to the layout if enabled (small of +# suspend). +# +# Otherwise, the partition layout is defined as follow: # # partitionLayout: # - name: "rootfs" diff --git a/src/modules/partition/tests/CreateLayoutsTests.cpp b/src/modules/partition/tests/CreateLayoutsTests.cpp index 12c19db5f..2c173fa79 100644 --- a/src/modules/partition/tests/CreateLayoutsTests.cpp +++ b/src/modules/partition/tests/CreateLayoutsTests.cpp @@ -61,7 +61,7 @@ CreateLayoutsTests::testFixedSizePartition() PartitionRole role( PartitionRole::Role::Any ); QList< Partition* > partitions; - if ( !layout.addEntry( QString( "/" ), QString( "5MiB" ) ) ) + if ( !layout.addEntry( { QString( "/" ), QString( "5MiB" ) } ) ) { QFAIL( qPrintable( "Unable to create / partition" ) ); } @@ -81,7 +81,7 @@ CreateLayoutsTests::testPercentSizePartition() PartitionRole role( PartitionRole::Role::Any ); QList< Partition* > partitions; - if ( !layout.addEntry( QString( "/" ), QString( "50%" ) ) ) + if ( !layout.addEntry( { QString( "/" ), QString( "50%" ) } ) ) { QFAIL( qPrintable( "Unable to create / partition" ) ); } @@ -101,17 +101,17 @@ CreateLayoutsTests::testMixedSizePartition() PartitionRole role( PartitionRole::Role::Any ); QList< Partition* > partitions; - if ( !layout.addEntry( QString( "/" ), QString( "5MiB" ) ) ) + if ( !layout.addEntry( { QString( "/" ), QString( "5MiB" ) } ) ) { QFAIL( qPrintable( "Unable to create / partition" ) ); } - if ( !layout.addEntry( QString( "/home" ), QString( "50%" ) ) ) + if ( !layout.addEntry( { QString( "/home" ), QString( "50%" ) } ) ) { QFAIL( qPrintable( "Unable to create /home partition" ) ); } - if ( !layout.addEntry( QString( "/bkup" ), QString( "50%" ) ) ) + if ( !layout.addEntry( { QString( "/bkup" ), QString( "50%" ) } ) ) { QFAIL( qPrintable( "Unable to create /bkup partition" ) ); } From 3016b93c8f7a547a90b52efb6b8fd7d5872cc09e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Mon, 22 Jun 2020 10:36:20 -0400 Subject: [PATCH 10/23] [partition] Simplify the method execute - Rename the "size" locals using "sectors" in their name. Size may be confusing or not enough specific as it can be interpreted a size in Byte. partSizeMap -> partSectorsMap, totalSize -> totalSectors, availablesize -> availableSectors, size -> sectors, minSize -> minSectors maxSize -> maxSectors - Create a the new local currentSector to iterate over the sectors; instead of using the parameter firstSector. - Remove the variable end that does not help much; too many variable already. Expand its expression instead. --- .../partition/core/PartitionLayout.cpp | 111 ++++++------------ 1 file changed, 37 insertions(+), 74 deletions(-) diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index 397d64c85..e5f8479b9 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -176,11 +176,12 @@ PartitionLayout::execute( Device* dev, { QList< Partition* > partList; // Map each partition entry to its requested size (0 when calculated later) - QMap< const PartitionLayout::PartitionEntry*, qint64 > partSizeMap; - qint64 totalSize = lastSector - firstSector + 1; - qint64 availableSize = totalSize; + QMap< const PartitionLayout::PartitionEntry*, qint64 > partSectorsMap; + const qint64 totalSectors = lastSector - firstSector + 1; + qint64 currentSector, availableSectors = totalSectors; - // Let's check if we have enough space for each partSize + // Let's check if we have enough space for each partitions, using the size + // propery or the min-size property if unit is in percentage. for ( const auto& part : qAsConst( m_partLayout ) ) { if ( !part.partSize.isValid() ) @@ -191,118 +192,80 @@ PartitionLayout::execute( Device* dev, // Calculate partition size: Rely on "possibly uninitialized use" // warnings to ensure that all the cases are covered below. - qint64 size; // We need to ignore the percent-defined until later + qint64 sectors = 0; if ( part.partSize.unit() != CalamaresUtils::Partition::SizeUnit::Percent ) { - size = part.partSize.toSectors( totalSize, dev->logicalSize() ); + sectors = part.partSize.toSectors( totalSectors, dev->logicalSize() ); } - else + else if ( part.partMinSize.isValid() ) { - if ( part.partMinSize.isValid() ) - { - size = part.partMinSize.toSectors( totalSize, dev->logicalSize() ); - } - else - { - size = 0; - } + sectors = part.partMinSize.toSectors( totalSectors, dev->logicalSize() ); } - - partSizeMap.insert( &part, size ); - availableSize -= size; + partSectorsMap.insert( &part, sectors ); + availableSectors -= sectors; } - // Use partMinSize and see if we can do better afterward. - if ( availableSize < 0 ) + // There is not enough space for all partitions, use the min-size property + // and see if we can do better afterward. + if ( availableSectors < 0 ) { - availableSize = totalSize; + availableSectors = totalSectors; for ( const auto& part : qAsConst( m_partLayout ) ) { - qint64 size; - + qint64 sectors = partSectorsMap.value( &part ); if ( part.partMinSize.isValid() ) { - size = part.partMinSize.toSectors( totalSize, dev->logicalSize() ); + sectors = part.partMinSize.toSectors( totalSectors, dev->logicalSize() ); + partSectorsMap.insert( &part, sectors ); } - else if ( part.partSize.isValid() ) - { - if ( part.partSize.unit() != CalamaresUtils::Partition::SizeUnit::Percent ) - { - size = part.partSize.toSectors( totalSize, dev->logicalSize() ); - } - else - { - size = 0; - } - } - else - { - size = 0; - } - - partSizeMap.insert( &part, size ); - availableSize -= size; + availableSectors -= sectors; } } - // Assign size for percentage-defined partitions + // Assign sectors for percentage-defined partitions. for ( const auto& part : qAsConst( m_partLayout ) ) { if ( part.partSize.unit() == CalamaresUtils::Partition::SizeUnit::Percent ) { - qint64 size = partSizeMap.value( &part ); - size = part.partSize.toSectors( availableSize + size, dev->logicalSize() ); + qint64 sectors = part.partSize.toSectors( availableSectors + partSectorsMap.value( &part ), + dev->logicalSize() ); if ( part.partMinSize.isValid() ) { - qint64 minSize = part.partMinSize.toSectors( totalSize, dev->logicalSize() ); - if ( minSize > size ) - { - size = minSize; - } + sectors = std::max( sectors, part.partMinSize.toSectors( totalSectors, dev->logicalSize() ) ); } if ( part.partMaxSize.isValid() ) { - qint64 maxSize = part.partMaxSize.toSectors( totalSize, dev->logicalSize() ); - if ( maxSize < size ) - { - size = maxSize; - } + sectors = std::min( sectors, part.partMaxSize.toSectors( totalSectors, dev->logicalSize() ) ); } - - partSizeMap.insert( &part, size ); + partSectorsMap.insert( &part, sectors ); } } - availableSize = totalSize; - - // TODO: Refine partition sizes to make sure there is room for every partition - // Use a default (200-500M ?) minimum size for partition without minSize - + // Create the partitions. + currentSector = firstSector; + availableSectors = totalSectors; for ( const auto& part : qAsConst( m_partLayout ) ) { - qint64 size, end; Partition* currentPartition = nullptr; - size = partSizeMap.value( &part ); - - // Adjust partition size based on available space - if ( size > availableSize ) + // Adjust partition size based on available space. + qint64 sectors = partSectorsMap.value( &part ); + sectors = std::min( sectors, availableSectors ); + if ( sectors == 0 ) { - size = availableSize; + continue; } - end = firstSector + std::max( size - 1, Q_INT64_C( 0 ) ); - if ( luksPassphrase.isEmpty() ) { currentPartition = KPMHelpers::createNewPartition( - parent, *dev, role, part.partFileSystem, firstSector, end, KPM_PARTITION_FLAG( None ) ); + parent, *dev, role, part.partFileSystem, currentSector, currentSector + sectors - 1, KPM_PARTITION_FLAG( None ) ); } else { currentPartition = KPMHelpers::createNewEncryptedPartition( - parent, *dev, role, part.partFileSystem, firstSector, end, luksPassphrase, KPM_PARTITION_FLAG( None ) ); + parent, *dev, role, part.partFileSystem, currentSector, currentSector + sectors - 1, luksPassphrase, KPM_PARTITION_FLAG( None ) ); } PartitionInfo::setFormat( currentPartition, true ); PartitionInfo::setMountPoint( currentPartition, part.partMountPoint ); @@ -345,8 +308,8 @@ PartitionLayout::execute( Device* dev, // Some buggy (legacy) BIOSes test if the bootflag of at least one partition is set. // Otherwise they ignore the device in boot-order, so add it here. partList.append( currentPartition ); - firstSector = end + 1; - availableSize -= size; + currentSector += sectors; + availableSectors -= sectors; } return partList; From 32c1f81fbfdef2d638a800927ea29062b28c6279 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Mon, 22 Jun 2020 13:56:57 -0400 Subject: [PATCH 11/23] [partition] Rename iterator in for loop to entry --- .../partition/core/PartitionLayout.cpp | 76 +++++++++---------- 1 file changed, 38 insertions(+), 38 deletions(-) diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index e5f8479b9..2be7d64fd 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -182,11 +182,11 @@ PartitionLayout::execute( Device* dev, // Let's check if we have enough space for each partitions, using the size // propery or the min-size property if unit is in percentage. - for ( const auto& part : qAsConst( m_partLayout ) ) + for ( const auto& entry : qAsConst( m_partLayout ) ) { - if ( !part.partSize.isValid() ) + if ( !entry.partSize.isValid() ) { - cWarning() << "Partition" << part.partMountPoint << "size is invalid, skipping..."; + cWarning() << "Partition" << entry.partMountPoint << "size is invalid, skipping..."; continue; } @@ -194,15 +194,15 @@ PartitionLayout::execute( Device* dev, // warnings to ensure that all the cases are covered below. // We need to ignore the percent-defined until later qint64 sectors = 0; - if ( part.partSize.unit() != CalamaresUtils::Partition::SizeUnit::Percent ) + if ( entry.partSize.unit() != CalamaresUtils::Partition::SizeUnit::Percent ) { - sectors = part.partSize.toSectors( totalSectors, dev->logicalSize() ); + sectors = entry.partSize.toSectors( totalSectors, dev->logicalSize() ); } - else if ( part.partMinSize.isValid() ) + else if ( entry.partMinSize.isValid() ) { - sectors = part.partMinSize.toSectors( totalSectors, dev->logicalSize() ); + sectors = entry.partMinSize.toSectors( totalSectors, dev->logicalSize() ); } - partSectorsMap.insert( &part, sectors ); + partSectorsMap.insert( &entry, sectors ); availableSectors -= sectors; } @@ -211,46 +211,46 @@ PartitionLayout::execute( Device* dev, if ( availableSectors < 0 ) { availableSectors = totalSectors; - for ( const auto& part : qAsConst( m_partLayout ) ) + for ( const auto& entry : qAsConst( m_partLayout ) ) { - qint64 sectors = partSectorsMap.value( &part ); - if ( part.partMinSize.isValid() ) + qint64 sectors = partSectorsMap.value( &entry ); + if ( entry.partMinSize.isValid() ) { - sectors = part.partMinSize.toSectors( totalSectors, dev->logicalSize() ); - partSectorsMap.insert( &part, sectors ); + sectors = entry.partMinSize.toSectors( totalSectors, dev->logicalSize() ); + partSectorsMap.insert( &entry, sectors ); } availableSectors -= sectors; } } // Assign sectors for percentage-defined partitions. - for ( const auto& part : qAsConst( m_partLayout ) ) + for ( const auto& entry : qAsConst( m_partLayout ) ) { - if ( part.partSize.unit() == CalamaresUtils::Partition::SizeUnit::Percent ) + if ( entry.partSize.unit() == CalamaresUtils::Partition::SizeUnit::Percent ) { - qint64 sectors = part.partSize.toSectors( availableSectors + partSectorsMap.value( &part ), + qint64 sectors = entry.partSize.toSectors( availableSectors + partSectorsMap.value( &entry ), dev->logicalSize() ); - if ( part.partMinSize.isValid() ) + if ( entry.partMinSize.isValid() ) { - sectors = std::max( sectors, part.partMinSize.toSectors( totalSectors, dev->logicalSize() ) ); + sectors = std::max( sectors, entry.partMinSize.toSectors( totalSectors, dev->logicalSize() ) ); } - if ( part.partMaxSize.isValid() ) + if ( entry.partMaxSize.isValid() ) { - sectors = std::min( sectors, part.partMaxSize.toSectors( totalSectors, dev->logicalSize() ) ); + sectors = std::min( sectors, entry.partMaxSize.toSectors( totalSectors, dev->logicalSize() ) ); } - partSectorsMap.insert( &part, sectors ); + partSectorsMap.insert( &entry, sectors ); } } // Create the partitions. currentSector = firstSector; availableSectors = totalSectors; - for ( const auto& part : qAsConst( m_partLayout ) ) + for ( const auto& entry : qAsConst( m_partLayout ) ) { Partition* currentPartition = nullptr; // Adjust partition size based on available space. - qint64 sectors = partSectorsMap.value( &part ); + qint64 sectors = partSectorsMap.value( &entry ); sectors = std::min( sectors, availableSectors ); if ( sectors == 0 ) { @@ -260,46 +260,46 @@ PartitionLayout::execute( Device* dev, if ( luksPassphrase.isEmpty() ) { currentPartition = KPMHelpers::createNewPartition( - parent, *dev, role, part.partFileSystem, currentSector, currentSector + sectors - 1, KPM_PARTITION_FLAG( None ) ); + parent, *dev, role, entry.partFileSystem, currentSector, currentSector + sectors - 1, KPM_PARTITION_FLAG( None ) ); } else { currentPartition = KPMHelpers::createNewEncryptedPartition( - parent, *dev, role, part.partFileSystem, currentSector, currentSector + sectors - 1, luksPassphrase, KPM_PARTITION_FLAG( None ) ); + parent, *dev, role, entry.partFileSystem, currentSector, currentSector + sectors - 1, luksPassphrase, KPM_PARTITION_FLAG( None ) ); } PartitionInfo::setFormat( currentPartition, true ); - PartitionInfo::setMountPoint( currentPartition, part.partMountPoint ); - if ( !part.partLabel.isEmpty() ) + PartitionInfo::setMountPoint( currentPartition, entry.partMountPoint ); + if ( !entry.partLabel.isEmpty() ) { - currentPartition->setLabel( part.partLabel ); - currentPartition->fileSystem().setLabel( part.partLabel ); + currentPartition->setLabel( entry.partLabel ); + currentPartition->fileSystem().setLabel( entry.partLabel ); } - if ( !part.partUUID.isEmpty() ) + if ( !entry.partUUID.isEmpty() ) { - currentPartition->setUUID( part.partUUID ); + currentPartition->setUUID( entry.partUUID ); } - if ( !part.partType.isEmpty() ) + if ( !entry.partType.isEmpty() ) { #if defined( WITH_KPMCORE42API ) - currentPartition->setType( part.partType ); + currentPartition->setType( entry.partType ); #else cWarning() << "Ignoring type; requires KPMcore >= 4.2.0."; #endif } - if ( part.partAttributes ) + if ( entry.partAttributes ) { #if defined( WITH_KPMCORE42API ) - currentPartition->setAttributes( part.partAttributes ); + currentPartition->setAttributes( entry.partAttributes ); #else cWarning() << "Ignoring attributes; requires KPMcore >= 4.2.0."; #endif } - if ( !part.partFeatures.isEmpty() ) + if ( !entry.partFeatures.isEmpty() ) { #if defined( WITH_KPMCORE42API ) - for ( const auto& k : part.partFeatures.keys() ) + for ( const auto& k : entry.partFeatures.keys() ) { - currentPartition->fileSystem().addFeature( k, part.partFeatures.value( k ) ); + currentPartition->fileSystem().addFeature( k, entry.partFeatures.value( k ) ); } #else cWarning() << "Ignoring features; requires KPMcore >= 4.2.0."; From 20073358658553aec5e595d9ebec9db03b0326d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Mon, 22 Jun 2020 16:34:06 -0400 Subject: [PATCH 12/23] [partition] Rename the KPMCore Partition local to part --- .../partition/core/PartitionLayout.cpp | 25 +++++++++---------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index 2be7d64fd..b02cdfaf4 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -247,8 +247,6 @@ PartitionLayout::execute( Device* dev, availableSectors = totalSectors; for ( const auto& entry : qAsConst( m_partLayout ) ) { - Partition* currentPartition = nullptr; - // Adjust partition size based on available space. qint64 sectors = partSectorsMap.value( &entry ); sectors = std::min( sectors, availableSectors ); @@ -257,31 +255,32 @@ PartitionLayout::execute( Device* dev, continue; } + Partition* part = nullptr; if ( luksPassphrase.isEmpty() ) { - currentPartition = KPMHelpers::createNewPartition( + part = KPMHelpers::createNewPartition( parent, *dev, role, entry.partFileSystem, currentSector, currentSector + sectors - 1, KPM_PARTITION_FLAG( None ) ); } else { - currentPartition = KPMHelpers::createNewEncryptedPartition( + part = KPMHelpers::createNewEncryptedPartition( parent, *dev, role, entry.partFileSystem, currentSector, currentSector + sectors - 1, luksPassphrase, KPM_PARTITION_FLAG( None ) ); } - PartitionInfo::setFormat( currentPartition, true ); - PartitionInfo::setMountPoint( currentPartition, entry.partMountPoint ); + PartitionInfo::setFormat( part, true ); + PartitionInfo::setMountPoint( part, entry.partMountPoint ); if ( !entry.partLabel.isEmpty() ) { - currentPartition->setLabel( entry.partLabel ); - currentPartition->fileSystem().setLabel( entry.partLabel ); + part->setLabel( entry.partLabel ); + part->fileSystem().setLabel( entry.partLabel ); } if ( !entry.partUUID.isEmpty() ) { - currentPartition->setUUID( entry.partUUID ); + part->setUUID( entry.partUUID ); } if ( !entry.partType.isEmpty() ) { #if defined( WITH_KPMCORE42API ) - currentPartition->setType( entry.partType ); + part->setType( entry.partType ); #else cWarning() << "Ignoring type; requires KPMcore >= 4.2.0."; #endif @@ -289,7 +288,7 @@ PartitionLayout::execute( Device* dev, if ( entry.partAttributes ) { #if defined( WITH_KPMCORE42API ) - currentPartition->setAttributes( entry.partAttributes ); + part->setAttributes( entry.partAttributes ); #else cWarning() << "Ignoring attributes; requires KPMcore >= 4.2.0."; #endif @@ -299,7 +298,7 @@ PartitionLayout::execute( Device* dev, #if defined( WITH_KPMCORE42API ) for ( const auto& k : entry.partFeatures.keys() ) { - currentPartition->fileSystem().addFeature( k, entry.partFeatures.value( k ) ); + part->fileSystem().addFeature( k, entry.partFeatures.value( k ) ); } #else cWarning() << "Ignoring features; requires KPMcore >= 4.2.0."; @@ -307,7 +306,7 @@ PartitionLayout::execute( Device* dev, } // Some buggy (legacy) BIOSes test if the bootflag of at least one partition is set. // Otherwise they ignore the device in boot-order, so add it here. - partList.append( currentPartition ); + partList.append( part ); currentSector += sectors; availableSectors -= sectors; } From cd725fbb4b43aa8c9f7f52353b31c88f04d90c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Thu, 29 Oct 2020 09:23:28 -0400 Subject: [PATCH 13/23] Fix missing SPDX-FileCopyrightText in header --- src/modules/partition/core/PartUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index a514b9c34..084b7f8f5 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -1,7 +1,7 @@ /* === This file is part of Calamares - === * * SPDX-FileCopyrightText: 2015-2016 Teo Mrnjavac - * Copyright 2018-2019 Adriaan de Groot + * SPDX-FileCopyrightText: 2018-2019 Adriaan de Groot * SPDX-FileCopyrightText: 2019 Collabora Ltd * SPDX-License-Identifier: GPL-3.0-or-later * From f2bfe2bd6a9c20a115f2780efb1fa5bc8356f01e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Fri, 30 Oct 2020 10:01:29 -0400 Subject: [PATCH 14/23] [partition] Fix coding style --- src/modules/partition/core/PartUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/partition/core/PartUtils.cpp b/src/modules/partition/core/PartUtils.cpp index 084b7f8f5..07ab5acc1 100644 --- a/src/modules/partition/core/PartUtils.cpp +++ b/src/modules/partition/core/PartUtils.cpp @@ -59,7 +59,7 @@ convenienceName( const Partition* const candidate ) QString p; QTextStream s( &p ); - s << static_cast(candidate); // No good name available, use pointer address + s << static_cast< const void* >( candidate ); // No good name available, use pointer address return p; } From f03ae06deb42c593a0fa9ad524305e28d55e0d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=ABl=20PORTAY?= Date: Fri, 30 Oct 2020 10:15:30 -0400 Subject: [PATCH 15/23] [partition] Rename execute to createPartitions --- src/modules/partition/core/PartitionCoreModule.cpp | 2 +- src/modules/partition/core/PartitionLayout.cpp | 12 ++++++------ src/modules/partition/core/PartitionLayout.h | 12 ++++++------ src/modules/partition/tests/CreateLayoutsTests.cpp | 6 +++--- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/modules/partition/core/PartitionCoreModule.cpp b/src/modules/partition/core/PartitionCoreModule.cpp index e97aff9fa..706f99017 100644 --- a/src/modules/partition/core/PartitionCoreModule.cpp +++ b/src/modules/partition/core/PartitionCoreModule.cpp @@ -875,7 +875,7 @@ PartitionCoreModule::layoutApply( Device* dev, const PartitionRole& role ) { bool isEfi = PartUtils::isEfiSystem(); - QList< Partition* > partList = m_partLayout.execute( dev, firstSector, lastSector, luksPassphrase, parent, role ); + QList< Partition* > partList = m_partLayout.createPartitions( dev, firstSector, lastSector, luksPassphrase, parent, role ); // Partition::mountPoint() tells us where it is mounted **now**, while // PartitionInfo::mountPoint() says where it will be mounted in the target system. diff --git a/src/modules/partition/core/PartitionLayout.cpp b/src/modules/partition/core/PartitionLayout.cpp index b02cdfaf4..15b18da93 100644 --- a/src/modules/partition/core/PartitionLayout.cpp +++ b/src/modules/partition/core/PartitionLayout.cpp @@ -167,12 +167,12 @@ PartitionLayout::init( const QVariantList& config ) } QList< Partition* > -PartitionLayout::execute( Device* dev, - qint64 firstSector, - qint64 lastSector, - QString luksPassphrase, - PartitionNode* parent, - const PartitionRole& role ) +PartitionLayout::createPartitions( Device* dev, + qint64 firstSector, + qint64 lastSector, + QString luksPassphrase, + PartitionNode* parent, + const PartitionRole& role ) { QList< Partition* > partList; // Map each partition entry to its requested size (0 when calculated later) diff --git a/src/modules/partition/core/PartitionLayout.h b/src/modules/partition/core/PartitionLayout.h index b27adccec..9720ab765 100644 --- a/src/modules/partition/core/PartitionLayout.h +++ b/src/modules/partition/core/PartitionLayout.h @@ -85,12 +85,12 @@ public: * @brief Apply the current partition layout to the selected drive space. * @return A list of Partition objects. */ - QList< Partition* > execute( Device* dev, - qint64 firstSector, - qint64 lastSector, - QString luksPassphrase, - PartitionNode* parent, - const PartitionRole& role ); + QList< Partition* > createPartitions( Device* dev, + qint64 firstSector, + qint64 lastSector, + QString luksPassphrase, + PartitionNode* parent, + const PartitionRole& role ); private: FileSystem::Type m_defaultFsType; diff --git a/src/modules/partition/tests/CreateLayoutsTests.cpp b/src/modules/partition/tests/CreateLayoutsTests.cpp index 2c173fa79..6a56eee99 100644 --- a/src/modules/partition/tests/CreateLayoutsTests.cpp +++ b/src/modules/partition/tests/CreateLayoutsTests.cpp @@ -66,7 +66,7 @@ CreateLayoutsTests::testFixedSizePartition() QFAIL( qPrintable( "Unable to create / partition" ) ); } - partitions = layout.execute( static_cast< Device* >( &dev ), 0, dev.totalLogical(), nullptr, nullptr, role ); + partitions = layout.createPartitions( static_cast< Device* >( &dev ), 0, dev.totalLogical(), nullptr, nullptr, role ); QCOMPARE( partitions.count(), 1 ); @@ -86,7 +86,7 @@ CreateLayoutsTests::testPercentSizePartition() QFAIL( qPrintable( "Unable to create / partition" ) ); } - partitions = layout.execute( static_cast< Device* >( &dev ), 0, dev.totalLogical(), nullptr, nullptr, role ); + partitions = layout.createPartitions( static_cast< Device* >( &dev ), 0, dev.totalLogical(), nullptr, nullptr, role ); QCOMPARE( partitions.count(), 1 ); @@ -116,7 +116,7 @@ CreateLayoutsTests::testMixedSizePartition() QFAIL( qPrintable( "Unable to create /bkup partition" ) ); } - partitions = layout.execute( static_cast< Device* >( &dev ), 0, dev.totalLogical(), nullptr, nullptr, role ); + partitions = layout.createPartitions( static_cast< Device* >( &dev ), 0, dev.totalLogical(), nullptr, nullptr, role ); QCOMPARE( partitions.count(), 3 ); From 71e0081fceb927c4cd57a97410f860bedd8a138e Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Fri, 30 Oct 2020 12:36:57 +0100 Subject: [PATCH 16/23] [keyboard] SPDX-tagging --- src/modules/keyboard/non-ascii-layouts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/modules/keyboard/non-ascii-layouts b/src/modules/keyboard/non-ascii-layouts index 83935c190..34035c91b 100644 --- a/src/modules/keyboard/non-ascii-layouts +++ b/src/modules/keyboard/non-ascii-layouts @@ -1,3 +1,6 @@ +# SPDX-FileCopyrightText: no +# SPDX-License-Identifier: CC0-1.0 +# # Layouts stored here need additional layout (usually us) to provide ASCII support for user #layout additional-layout additional-variant vconsole-keymap From 8bfc4dfcd22655888f791286b1bb77b6189f32d1 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 31 Oct 2020 22:53:47 +0100 Subject: [PATCH 17/23] Docs: try to get the table of links right --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7ad26e2c5..981e0c583 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,8 @@ [![Coverity Scan Build Status](https://scan.coverity.com/projects/5389/badge.svg)](https://scan.coverity.com/projects/5389) [![GitHub license](https://img.shields.io/github/license/calamares/calamares.svg)](https://github.com/calamares/calamares/blob/calamares/LICENSE) -| [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://www.transifex.com/projects/p/calamares/) | [Contribute](CONTRIBUTING.md) | [Freenode (IRC): #calamares](https://webchat.freenode.net/?channel=#calamares?nick=guest|) | [Wiki](https://github.com/calamares/calamares/wiki) | -|:-----------------------------------------:|:----------------------:|:-----------------------:|:--------------------------:|:--------------------------:| +[Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://www.transifex.com/projects/p/calamares/) | [Contribute](CONTRIBUTING.md) | [Freenode (IRC): #calamares](https://webchat.freenode.net/?channel=#calamares?nick=guest|) | [Wiki](https://github.com/calamares/calamares/wiki) +----------------------------------------------------------------- | ------------------------------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------------------- > Calamares is a distribution-independent system installer, with an advanced partitioning > feature for both manual and automated partitioning operations. Calamares is designed to From 9d930ad9cca6a61b8690abb29915e6c502ab0e4f Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 31 Oct 2020 23:04:47 +0100 Subject: [PATCH 18/23] Docs: fix the table --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 981e0c583..a2cb426b7 100644 --- a/README.md +++ b/README.md @@ -10,8 +10,10 @@ [![Coverity Scan Build Status](https://scan.coverity.com/projects/5389/badge.svg)](https://scan.coverity.com/projects/5389) [![GitHub license](https://img.shields.io/github/license/calamares/calamares.svg)](https://github.com/calamares/calamares/blob/calamares/LICENSE) -[Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://www.transifex.com/projects/p/calamares/) | [Contribute](CONTRIBUTING.md) | [Freenode (IRC): #calamares](https://webchat.freenode.net/?channel=#calamares?nick=guest|) | [Wiki](https://github.com/calamares/calamares/wiki) ------------------------------------------------------------------ | ------------------------------------------------------------ | ----------------------------- | ------------------------------------------------------------------------------------------ | --------------------------------------------------- + +| [Report a Bug](https://github.com/calamares/calamares/issues/new) | [Translate](https://www.transifex.com/projects/p/calamares/) | [Contribute](CONTRIBUTING.md) | [Freenode (IRC): #calamares](https://webchat.freenode.net/?channel=#calamares?nick=guest) | [Wiki](https://github.com/calamares/calamares/wiki) | +|:--:|:--:|:--:|:--:|:--:| + > Calamares is a distribution-independent system installer, with an advanced partitioning > feature for both manual and automated partitioning operations. Calamares is designed to From 0a44ce381e80517bd78ddce161e4614c11b9735b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 31 Oct 2020 23:16:48 +0100 Subject: [PATCH 19/23] [partition] Reduce warnings (Clang, FreeBSD) - remove unused this captures from lambda - rename variables that are short, cryptic, and shadowed - remove documentation for parameters that don't exist --- src/modules/partition/gui/ChoicePage.cpp | 27 +++++++++++++----------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index a91c9a8e1..2b68cafe7 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -906,7 +906,9 @@ ChoicePage::updateDeviceStatePreview() m_beforePartitionBarsView->setSelectionMode( QAbstractItemView::SingleSelection ); m_beforePartitionLabelsView->setSelectionMode( QAbstractItemView::SingleSelection ); break; - default: + case InstallChoice::NoChoice: + case InstallChoice::Erase: + case InstallChoice::Manual: m_beforePartitionBarsView->setSelectionMode( QAbstractItemView::NoSelection ); m_beforePartitionLabelsView->setSelectionMode( QAbstractItemView::NoSelection ); } @@ -990,7 +992,7 @@ ChoicePage::updateActionChoicePreview( InstallChoice choice ) m_previewAfterFrame->show(); m_previewAfterLabel->show(); - SelectionFilter filter = [this]( const QModelIndex& index ) { + SelectionFilter filter = []( const QModelIndex& index ) { return PartUtils::canBeResized( static_cast< Partition* >( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ) ); }; @@ -1079,7 +1081,7 @@ ChoicePage::updateActionChoicePreview( InstallChoice choice ) } else { - SelectionFilter filter = [this]( const QModelIndex& index ) { + SelectionFilter filter = []( const QModelIndex& index ) { return PartUtils::canBeReplaced( static_cast< Partition* >( index.data( PartitionModel::PartitionPtrRole ).value< void* >() ) ); }; @@ -1125,7 +1127,9 @@ ChoicePage::updateActionChoicePreview( InstallChoice choice ) case InstallChoice::Alongside: previewSelectionMode = QAbstractItemView::SingleSelection; break; - default: + case InstallChoice::NoChoice: + case InstallChoice::Erase: + case InstallChoice::Manual: previewSelectionMode = QAbstractItemView::NoSelection; } @@ -1179,15 +1183,15 @@ ChoicePage::setupEfiSystemPartitionSelector() QComboBox* ChoicePage::createBootloaderComboBox( QWidget* parent ) { - QComboBox* bcb = new QComboBox( parent ); - bcb->setModel( m_core->bootLoaderModel() ); + QComboBox* comboForBootloader = new QComboBox( parent ); + comboForBootloader->setModel( m_core->bootLoaderModel() ); // When the chosen bootloader device changes, we update the choice in the PCM - connect( bcb, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, [this]( int newIndex ) { - QComboBox* bcb = qobject_cast< QComboBox* >( sender() ); - if ( bcb ) + connect( comboForBootloader, QOverload< int >::of( &QComboBox::currentIndexChanged ), this, [this]( int newIndex ) { + QComboBox* bootloaderCombo = qobject_cast< QComboBox* >( sender() ); + if ( bootloaderCombo ) { - QVariant var = bcb->itemData( newIndex, BootLoaderModel::BootLoaderPathRole ); + QVariant var = bootloaderCombo->itemData( newIndex, BootLoaderModel::BootLoaderPathRole ); if ( !var.isValid() ) { return; @@ -1196,7 +1200,7 @@ ChoicePage::createBootloaderComboBox( QWidget* parent ) } } ); - return bcb; + return comboForBootloader; } @@ -1220,7 +1224,6 @@ operator<<( QDebug& s, PartitionIterator& it ) * @brief ChoicePage::setupActions happens every time a new Device* is selected in the * device picker. Sets up the text and visibility of the partitioning actions based * on the currently selected Device*, bootloader and os-prober output. - * @param currentDevice */ void ChoicePage::setupActions() From 4d444cbfbb1b09efea32ee1b5432bfc3d1d9893b Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 31 Oct 2020 23:37:06 +0100 Subject: [PATCH 20/23] [partition] Reduce warnings (Clang, FreeBSD) The code doesn't match the comment: there are no by-ref captures in the code, and the shadowing of parameters and local variables is confusing. Remove one variable that is passed in as an argument (and just pass the value as argument) and copy-capture the other rather than doing weird argument passing. --- src/modules/partition/gui/ChoicePage.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/modules/partition/gui/ChoicePage.cpp b/src/modules/partition/gui/ChoicePage.cpp index 2b68cafe7..35aec51e4 100644 --- a/src/modules/partition/gui/ChoicePage.cpp +++ b/src/modules/partition/gui/ChoicePage.cpp @@ -736,14 +736,12 @@ ChoicePage::doReplaceSelectedPartition( const QModelIndex& current ) return; } + // This will be deleted by the second lambda, below. QString* homePartitionPath = new QString(); - bool doReuseHomePartition = m_reuseHomeCheckBox->isChecked(); - // NOTE: using by-ref captures because we need to write homePartitionPath and - // doReuseHomePartition *after* the device revert, for later use. ScanningDialog::run( QtConcurrent::run( - [this, current]( QString* homePartitionPath, bool doReuseHomePartition ) { + [this, current, homePartitionPath]( bool doReuseHomePartition ) { QMutexLocker locker( &m_coreMutex ); if ( m_core->isDirty() ) @@ -823,9 +821,8 @@ ChoicePage::doReplaceSelectedPartition( const QModelIndex& current ) } } }, - homePartitionPath, - doReuseHomePartition ), - [=] { + m_reuseHomeCheckBox->isChecked() ), + [this, homePartitionPath] { m_reuseHomeCheckBox->setVisible( !homePartitionPath->isEmpty() ); if ( !homePartitionPath->isEmpty() ) m_reuseHomeCheckBox->setText( tr( "Reuse %1 as home partition for %2." ) From c41ff94f8aca8020c274ebf52a36381d47374d87 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sat, 31 Oct 2020 23:48:20 +0100 Subject: [PATCH 21/23] [locale] Reduce warnings (C++17) Now that Calamares is compiled as C++17, we get this: src/modules/locale/timezonewidget/TimeZoneImage.cpp:28:55: warning: out-of-line definition of constexpr static data member is redundant in C++17 and is deprecated [-Wdeprecated] /* static constexpr */ const QSize TimeZoneImageList::imageSize; --- src/modules/locale/timezonewidget/TimeZoneImage.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/modules/locale/timezonewidget/TimeZoneImage.cpp b/src/modules/locale/timezonewidget/TimeZoneImage.cpp index 54aa1afd5..ad772ef63 100644 --- a/src/modules/locale/timezonewidget/TimeZoneImage.cpp +++ b/src/modules/locale/timezonewidget/TimeZoneImage.cpp @@ -24,9 +24,6 @@ static_assert( TimeZoneImageList::zoneCount == ( sizeof( zoneNames ) / sizeof( z #define ZONE_NAME QStringLiteral( "zone" ) -/* static constexpr */ const int TimeZoneImageList::zoneCount; -/* static constexpr */ const QSize TimeZoneImageList::imageSize; - static_assert( TimeZoneImageList::zoneCount == 37, "Incorrect number of zones" ); TimeZoneImageList::TimeZoneImageList() {} From d26fde664745f4b35751f26106d325ac02f08974 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 1 Nov 2020 00:05:05 +0100 Subject: [PATCH 22/23] [partition] Reduce warnings - Add a helper header that munges the warnings-settings so that KPMcore headers can be included. --- src/libcalamares/partition/KPMHelper.h | 36 +++++++++++++++++++ .../partition/tests/PartitionJobTests.cpp | 4 +-- 2 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 src/libcalamares/partition/KPMHelper.h diff --git a/src/libcalamares/partition/KPMHelper.h b/src/libcalamares/partition/KPMHelper.h new file mode 100644 index 000000000..900c973a2 --- /dev/null +++ b/src/libcalamares/partition/KPMHelper.h @@ -0,0 +1,36 @@ +/* === This file is part of Calamares - === + * + * SPDX-FileCopyrightText: 2020 Adriaan de Groot + * SPDX-License-Identifier: GPL-3.0-or-later + * + * Calamares is Free Software: see the License-Identifier above. + * + */ + +/* + * KPMCore header file inclusion. + * + * Includes the system KPMCore headers without warnings (by switching off + * the expected warnings). + */ +#ifndef PARTITION_KPMHELPER_H +#define PARTITION_KPMHELPER_H + +// The kpmcore headers are not C++17 warning-proof, especially +// with picky compilers like Clang 10. Since we use Clang for the +// find-all-the-warnings case, switch those warnings off for +// the we-can't-change-them system headers. +#ifdef __clang__ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdocumentation" +#pragma clang diagnostic ignored "-Wsuggest-destructor-override" +#endif + +#include +#include + +#ifdef __clang__ +#pragma clang diagnostic pop +#endif + +#endif diff --git a/src/modules/partition/tests/PartitionJobTests.cpp b/src/modules/partition/tests/PartitionJobTests.cpp index 2b0b1a1dc..204819fef 100644 --- a/src/modules/partition/tests/PartitionJobTests.cpp +++ b/src/modules/partition/tests/PartitionJobTests.cpp @@ -15,14 +15,12 @@ #include "jobs/CreatePartitionTableJob.h" #include "jobs/ResizePartitionJob.h" +#include "partition/KPMHelper.h" #include "partition/KPMManager.h" #include "partition/PartitionQuery.h" #include "utils/Logger.h" #include "utils/Units.h" -#include -#include - #include #include #include From 4a08fdbb92fbdd1dd5ec13bfb99ceca6fd2fb407 Mon Sep 17 00:00:00 2001 From: Adriaan de Groot Date: Sun, 1 Nov 2020 00:20:17 +0100 Subject: [PATCH 23/23] [partition] Reduce warnings from KPMCore - make KPMHelper.h an "everything include" and suppress warnings from it, then use it in the tests. --- src/libcalamares/partition/KPMHelper.h | 7 +++++++ src/modules/partition/tests/CreateLayoutsTests.cpp | 4 ---- src/modules/partition/tests/CreateLayoutsTests.h | 3 ++- src/modules/partition/tests/PartitionJobTests.h | 7 +------ 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/libcalamares/partition/KPMHelper.h b/src/libcalamares/partition/KPMHelper.h index 900c973a2..f6007b119 100644 --- a/src/libcalamares/partition/KPMHelper.h +++ b/src/libcalamares/partition/KPMHelper.h @@ -24,9 +24,16 @@ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdocumentation" #pragma clang diagnostic ignored "-Wsuggest-destructor-override" +#pragma clang diagnostic ignored "-Winconsistent-missing-destructor-override" #endif #include +#include +#include +#include +#include +#include +#include #include #ifdef __clang__ diff --git a/src/modules/partition/tests/CreateLayoutsTests.cpp b/src/modules/partition/tests/CreateLayoutsTests.cpp index 6a56eee99..fb991fc82 100644 --- a/src/modules/partition/tests/CreateLayoutsTests.cpp +++ b/src/modules/partition/tests/CreateLayoutsTests.cpp @@ -15,10 +15,6 @@ #include "partition/KPMManager.h" #include "utils/Logger.h" -#include -#include -#include - #include #include diff --git a/src/modules/partition/tests/CreateLayoutsTests.h b/src/modules/partition/tests/CreateLayoutsTests.h index 2ecc7b634..5953b06a7 100644 --- a/src/modules/partition/tests/CreateLayoutsTests.h +++ b/src/modules/partition/tests/CreateLayoutsTests.h @@ -10,8 +10,9 @@ #ifndef CLEARMOUNTSJOBTESTS_H #define CLEARMOUNTSJOBTESTS_H +#include "partition/KPMHelper.h" + #include -#include class CreateLayoutsTests : public QObject { diff --git a/src/modules/partition/tests/PartitionJobTests.h b/src/modules/partition/tests/PartitionJobTests.h index c2c01088f..9e4455ddc 100644 --- a/src/modules/partition/tests/PartitionJobTests.h +++ b/src/modules/partition/tests/PartitionJobTests.h @@ -12,12 +12,7 @@ #include "JobQueue.h" -// CalaPM -#include -#include -#include -#include -#include +#include "partition/KPMHelper.h" // Qt #include