PMUtils is now KPMHelpers. Also fixup after PartUtils refactor.

main
Teo Mrnjavac 9 years ago
parent 95e87391a4
commit 5f54a56513

@ -24,11 +24,12 @@ calamares_add_plugin( partition
core/BootLoaderModel.cpp
core/ColorUtils.cpp
core/DeviceModel.cpp
core/KPMHelpers.cpp
core/PartitionCoreModule.cpp
core/PartitionInfo.cpp
core/PartitionIterator.cpp
core/PartitionModel.cpp
core/PMUtils.cpp
core/PartUtils.cpp
gui/ChoicePage.cpp
gui/CreatePartitionDialog.cpp
gui/EditExistingPartitionDialog.cpp

@ -20,7 +20,7 @@
#include "core/BootLoaderModel.h"
#include "core/PartitionInfo.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
// KPMcore
#include <kpmcore/core/device.h>
@ -71,12 +71,12 @@ BootLoaderModel::update()
createMbrItems();
QString partitionText;
Partition* partition = PMUtils::findPartitionByMountPoint( m_devices, "/boot" );
Partition* partition = KPMHelpers::findPartitionByMountPoint( m_devices, "/boot" );
if ( partition )
partitionText = tr( "Boot Partition" );
else
{
partition = PMUtils::findPartitionByMountPoint( m_devices, "/" );
partition = KPMHelpers::findPartitionByMountPoint( m_devices, "/" );
if ( partition )
partitionText = tr( "System Partition" );
}

@ -19,7 +19,7 @@
#include "core/ColorUtils.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "core/PartitionIterator.h"
// KPMcore
@ -74,7 +74,7 @@ _findRootForPartition( PartitionNode* partition )
QColor
colorForPartition( Partition* partition )
{
if ( PMUtils::isPartitionFreeSpace( partition ) )
if ( KPMHelpers::isPartitionFreeSpace( partition ) )
return FREE_SPACE_COLOR;
if ( partition->roles().has( PartitionRole::Extended ) )
return EXTENDED_COLOR;
@ -96,17 +96,17 @@ colorForPartition( Partition* partition )
Partition* child = *it;
if ( child == partition )
break;
if ( !PMUtils::isPartitionFreeSpace( child ) &&
if ( !KPMHelpers::isPartitionFreeSpace( child ) &&
!child->hasChildren() )
{
if ( PMUtils::isPartitionNew( child ) )
if ( KPMHelpers::isPartitionNew( child ) )
++newColorIdx;
else
++colorIdx;
}
}
if ( PMUtils::isPartitionNew( partition ) )
if ( KPMHelpers::isPartitionNew( partition ) )
return NEW_PARTITION_COLORS[ newColorIdx % NUM_NEW_PARTITION_COLORS ];
s_partitionColorsCache.insert( partition->partitionPath(),
@ -129,9 +129,9 @@ colorForPartitionInFreeSpace( Partition* partition )
Partition* child = *it;
if ( child == partition )
break;
if ( !PMUtils::isPartitionFreeSpace( child ) &&
if ( !KPMHelpers::isPartitionFreeSpace( child ) &&
!child->hasChildren() &&
PMUtils::isPartitionNew( child ) )
KPMHelpers::isPartitionNew( child ) )
++newColorIdx;
}
return NEW_PARTITION_COLORS[ newColorIdx % NUM_NEW_PARTITION_COLORS ];

@ -17,7 +17,7 @@
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "core/PartitionInfo.h"
#include "core/PartitionIterator.h"
@ -30,7 +30,7 @@
#include <QDebug>
namespace PMUtils
namespace KPMHelpers
{
static bool s_KPMcoreInited = false;

@ -16,8 +16,8 @@
* You should have received a copy of the GNU General Public License
* along with Calamares. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PMUTILS_H
#define PMUTILS_H
#ifndef KPMHELPERS_H
#define KPMHELPERS_H
// KPMcore
#include <kpmcore/fs/filesystem.h>
@ -35,7 +35,7 @@ class PartitionRole;
/**
* Helper functions to manipulate partitions
*/
namespace PMUtils
namespace KPMHelpers
{
/**
@ -87,4 +87,4 @@ Partition* createNewPartition( PartitionNode* parent, const Device& device, cons
Partition* clonePartition( Device* device, Partition* partition );
}
#endif /* PMUTILS_H */
#endif /* KPMHELPERS_H */

@ -24,7 +24,7 @@
#include "core/PartitionInfo.h"
#include "core/PartitionIterator.h"
#include "core/PartitionModel.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "jobs/ClearMountsJob.h"
#include "jobs/ClearTempMountsJob.h"
#include "jobs/CreatePartitionJob.h"
@ -96,7 +96,7 @@ PartitionCoreModule::PartitionCoreModule( QObject* parent )
, m_deviceModel( new DeviceModel( this ) )
, m_bootLoaderModel( new BootLoaderModel( this ) )
{
if ( !PMUtils::initKPMcore() )
if ( !KPMHelpers::initKPMcore() )
qFatal( "Failed to initialize KPMcore backend" );
FileSystemFactory::init();
init();
@ -216,7 +216,7 @@ PartitionCoreModule::deletePartition( Device* device, Partition* partition )
// deleting them, so let's play it safe and keep our own list.
QList< Partition* > lst;
for ( auto childPartition : partition->children() )
if ( !PMUtils::isPartitionFreeSpace( childPartition ) )
if ( !KPMHelpers::isPartitionFreeSpace( childPartition ) )
lst << childPartition;
for ( auto partition : lst )
@ -416,7 +416,7 @@ PartitionCoreModule::scanForEfiSystemPartitions()
// The following findPartitions call and lambda should be scrapped and
// rewritten based on libKPM. -- Teo 5/2015
QList< Partition* > efiSystemPartitions =
PMUtils::findPartitions( devices,
KPMHelpers::findPartitions( devices,
[]( Partition* partition ) -> bool
{
QProcess process;

@ -20,7 +20,7 @@
#include "core/ColorUtils.h"
#include "core/PartitionInfo.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "utils/Logger.h"
// CalaPM
@ -132,11 +132,11 @@ PartitionModel::data( const QModelIndex& index, int role ) const
int col = index.column();
if ( col == NameColumn )
{
if ( PMUtils::isPartitionFreeSpace( partition ) )
if ( KPMHelpers::isPartitionFreeSpace( partition ) )
return tr( "Free Space" );
else
{
return PMUtils::isPartitionNew( partition )
return KPMHelpers::isPartitionNew( partition )
? tr( "New partition" )
: partition->partitionPath();
}
@ -161,7 +161,7 @@ PartitionModel::data( const QModelIndex& index, int role ) const
case SizeRole:
return ( partition->lastSector() - partition->firstSector() + 1 ) * m_device->logicalSectorSize();
case IsFreeSpaceRole:
return PMUtils::isPartitionFreeSpace( partition );
return KPMHelpers::isPartitionFreeSpace( partition );
default:
return QVariant();
}

@ -21,7 +21,7 @@
#include "core/ColorUtils.h"
#include "core/PartitionCoreModule.h"
#include "core/DeviceModel.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "core/PartitionInfo.h"
#include "core/PartitionIterator.h"
#include "gui/PartitionSplitterWidget.h"
@ -146,7 +146,7 @@ AlongsidePage::onPartitionSelected( int comboBoxIndex )
for ( int i = 0; i < dm->rowCount(); ++i )
{
Device* dev = dm->deviceForIndex( dm->index( i ) );
Partition* candidate = PMUtils::findPartitionByPath( { dev }, path );
Partition* candidate = KPMHelpers::findPartitionByPath( { dev }, path );
if ( candidate )
{
// store candidate->partitionPath() here!
@ -280,7 +280,7 @@ AlongsidePage::applyChanges()
for ( int i = 0; i < dm->rowCount(); ++i )
{
Device* dev = dm->deviceForIndex( dm->index( i ) );
Partition* candidate = PMUtils::findPartitionByPath( { dev }, path );
Partition* candidate = KPMHelpers::findPartitionByPath( { dev }, path );
if ( candidate )
{
qint64 firstSector = candidate->firstSector();
@ -289,7 +289,7 @@ AlongsidePage::applyChanges()
dev->logicalSectorSize();
m_core->resizePartition( dev, candidate, firstSector, newLastSector );
Partition* newPartition = PMUtils::createNewPartition(
Partition* newPartition = KPMHelpers::createNewPartition(
candidate->parent(),
*dev,
candidate->roles(),

@ -21,7 +21,7 @@
#include <QWidget>
#include "OsproberEntry.h"
#include "core/OsproberEntry.h"
class QComboBox;
class QLabel;

@ -21,7 +21,7 @@
#include "core/PartitionCoreModule.h"
#include "core/DeviceModel.h"
#include "core/PartitionModel.h"
#include "OsproberEntry.h"
#include "core/OsproberEntry.h"
#include "PrettyRadioButton.h"

@ -21,7 +21,7 @@
#include <QWidget>
#include "OsproberEntry.h"
#include "core/OsproberEntry.h"
class QBoxLayout;
class QLabel;

@ -20,7 +20,7 @@
#include "core/ColorUtils.h"
#include "core/PartitionInfo.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "gui/PartitionSizeController.h"
#include "ui_CreatePartitionDialog.h"
@ -141,7 +141,7 @@ CreatePartitionDialog::createPartition()
FileSystem::Type fsType = m_role.has( PartitionRole::Extended )
? FileSystem::Extended
: FileSystem::typeForName( m_ui->fsComboBox->currentText() );
Partition* partition = PMUtils::createNewPartition(
Partition* partition = KPMHelpers::createNewPartition(
m_parent,
*m_device,
m_role,
@ -170,7 +170,7 @@ CreatePartitionDialog::updateMountPointUi()
void
CreatePartitionDialog::initPartResizerWidget( Partition* partition )
{
QColor color = PMUtils::isPartitionFreeSpace( partition )
QColor color = KPMHelpers::isPartitionFreeSpace( partition )
? ColorUtils::colorForPartitionInFreeSpace( partition )
: ColorUtils::colorForPartition( partition );
m_partitionSizeController->init( m_device, partition, color );

@ -21,7 +21,7 @@
#include <core/ColorUtils.h>
#include <core/PartitionCoreModule.h>
#include <core/PartitionInfo.h>
#include <core/PMUtils.h>
#include <core/KPMHelpers.h>
#include <gui/PartitionSizeController.h>
#include <ui_EditExistingPartitionDialog.h>
@ -125,7 +125,7 @@ EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core )
{
if ( m_ui->formatRadioButton->isChecked() )
{
Partition* newPartition = PMUtils::createNewPartition(
Partition* newPartition = KPMHelpers::createNewPartition(
m_partition->parent(),
*m_device,
m_partition->roles(),
@ -158,7 +158,7 @@ EditExistingPartitionDialog::applyChanges( PartitionCoreModule* core )
}
else // otherwise, we delete and recreate the partition with new fs type
{
Partition* newPartition = PMUtils::createNewPartition(
Partition* newPartition = KPMHelpers::createNewPartition(
m_partition->parent(),
*m_device,
m_partition->roles(),

@ -20,7 +20,7 @@
#include "core/DeviceModel.h"
#include "core/PartitionCoreModule.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "core/PartitionInfo.h"
#include "gui/PartitionPreview.h"
@ -162,7 +162,7 @@ EraseDiskPage::doAutopartition( Device* dev )
{
qint64 lastSector = firstFreeSector + ( uefisys_part_size MiB / dev->logicalSectorSize() );
m_core->createPartitionTable( dev, PartitionTable::gpt );
Partition* efiPartition = PMUtils::createNewPartition(
Partition* efiPartition = KPMHelpers::createNewPartition(
dev->partitionTable(),
*dev,
PartitionRole( PartitionRole::Primary ),
@ -201,7 +201,7 @@ EraseDiskPage::doAutopartition( Device* dev )
lastSectorForRoot -= suggestedSwapSizeB / dev->logicalSectorSize() + 1;
}
Partition* rootPartition = PMUtils::createNewPartition(
Partition* rootPartition = KPMHelpers::createNewPartition(
dev->partitionTable(),
*dev,
PartitionRole( PartitionRole::Primary ),
@ -215,7 +215,7 @@ EraseDiskPage::doAutopartition( Device* dev )
if ( shouldCreateSwap )
{
Partition* swapPartition = PMUtils::createNewPartition(
Partition* swapPartition = KPMHelpers::createNewPartition(
dev->partitionTable(),
*dev,
PartitionRole( PartitionRole::Primary ),

@ -23,7 +23,7 @@
#include "core/DeviceModel.h"
#include "core/PartitionCoreModule.h"
#include "core/PartitionModel.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "gui/CreatePartitionDialog.h"
#include "gui/EditExistingPartitionDialog.h"
@ -102,7 +102,7 @@ PartitionPage::updateButtons()
Q_ASSERT( model );
Partition* partition = model->partitionForIndex( index );
Q_ASSERT( partition );
bool isFree = PMUtils::isPartitionFreeSpace( partition );
bool isFree = KPMHelpers::isPartitionFreeSpace( partition );
bool isExtended = partition->roles().has( PartitionRole::Extended );
create = isFree;
@ -169,7 +169,7 @@ PartitionPage::onEditClicked()
Partition* partition = model->partitionForIndex( index );
Q_ASSERT( partition );
if ( PMUtils::isPartitionNew( partition ) )
if ( KPMHelpers::isPartitionNew( partition ) )
updatePartitionToCreate( model->device(), partition );
else
editExistingPartition( model->device(), partition );
@ -214,7 +214,7 @@ PartitionPage::onPartitionViewActivated()
// but I don't expect there will be other occurences of triggering the same
// action from multiple UI elements in this page, so it does not feel worth
// the price.
if ( PMUtils::isPartitionFreeSpace( partition ) )
if ( KPMHelpers::isPartitionFreeSpace( partition ) )
m_ui->createButton->click();
else
m_ui->editButton->click();

@ -19,7 +19,7 @@
#include "gui/PartitionSizeController.h"
#include "core/ColorUtils.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
// Qt
#include <QSpinBox>
@ -45,7 +45,7 @@ PartitionSizeController::init( Device* device, Partition* partition, const QColo
// because it means we would have to revert them if the user cancel the
// dialog the widget is in. Therefore we init PartResizerWidget with a clone
// of the original partition.
m_partition.reset( PMUtils::clonePartition( m_device, partition ) );
m_partition.reset( KPMHelpers::clonePartition( m_device, partition ) );
m_partitionColor = color;
}

@ -22,7 +22,9 @@
#include "core/DeviceModel.h"
#include "core/PartitionCoreModule.h"
#include "core/PartitionModel.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "core/OsproberEntry.h"
#include "core/PartUtils.h"
#include "gui/ChoicePage.h"
#include "gui/EraseDiskPage.h"
#include "gui/AlongsidePage.h"
@ -72,7 +74,7 @@ PartitionViewStep::PartitionViewStep( QObject* parent )
connect( timer, &QTimer::timeout,
[=]()
{
OsproberEntryList osproberEntries = runOsprober();
OsproberEntryList osproberEntries = PartUtils::runOsprober( m_core );
m_choicePage->init( m_core, osproberEntries );
m_erasePage->init( m_core );
@ -112,60 +114,6 @@ PartitionViewStep::~PartitionViewStep()
}
OsproberEntryList
PartitionViewStep::runOsprober()
{
QString osproberOutput;
QProcess osprober;
osprober.setProgram( "os-prober" );
osprober.setProcessChannelMode( QProcess::SeparateChannels );
osprober.start();
if ( !osprober.waitForStarted() )
{
cDebug() << "ERROR: os-prober cannot start.";
}
else if ( !osprober.waitForFinished( 60000 ) )
{
cDebug() << "ERROR: os-prober timed out.";
}
else
{
osproberOutput.append(
QString::fromLocal8Bit(
osprober.readAllStandardOutput() ).trimmed() );
}
QString osProberReport( "Osprober lines, clean:\n" );
QStringList osproberCleanLines;
OsproberEntryList osproberEntries;
foreach ( const QString& line, osproberOutput.split( '\n' ) )
{
if ( !line.simplified().isEmpty() )
{
QStringList lineColumns = line.split( ':' );
QString prettyName;
if ( !lineColumns.value( 1 ).simplified().isEmpty() )
prettyName = lineColumns.value( 1 ).simplified();
else if ( !lineColumns.value( 2 ).simplified().isEmpty() )
prettyName = lineColumns.value( 2 ).simplified();
QString path = lineColumns.value( 0 ).simplified();
if ( !path.startsWith( "/dev/" ) ) //basic sanity check
continue;
osproberEntries.append( { prettyName, path, canBeResized( path ), lineColumns } );
osproberCleanLines.append( line );
}
}
osProberReport.append( osproberCleanLines.join( '\n' ) );
cDebug() << osProberReport;
Calamares::JobQueue::instance()->globalStorage()->insert( "osproberLines", osproberCleanLines );
return osproberEntries;
}
QString
PartitionViewStep::prettyName() const
{
@ -456,57 +404,4 @@ PartitionViewStep::jobs() const
}
bool
PartitionViewStep::canBeResized( const QString& partitionPath )
{
//FIXME: check for max partitions count on DOS MBR
cDebug() << "checking if" << partitionPath << "can be resized.";
QString partitionWithOs = partitionPath;
if ( partitionWithOs.startsWith( "/dev/" ) )
{
cDebug() << partitionWithOs << "seems like a good path";
bool canResize = false;
DeviceModel* dm = m_core->deviceModel();
for ( int i = 0; i < dm->rowCount(); ++i )
{
Device* dev = dm->deviceForIndex( dm->index( i ) );
Partition* candidate = PMUtils::findPartitionByPath( { dev }, partitionWithOs );
if ( candidate )
{
cDebug() << "found Partition* for" << partitionWithOs;
if ( !candidate->fileSystem().supportGrow() ||
!candidate->fileSystem().supportShrink() )
return false;
bool ok = false;
double requiredStorageGB = Calamares::JobQueue::instance()
->globalStorage()
->value( "requiredStorageGB" )
.toDouble( &ok );
qint64 availableStorageB = candidate->available();
// We require a little more for partitioning overhead and swap file
// TODO: maybe make this configurable?
qint64 requiredStorageB = ( requiredStorageGB + 0.1 + 2.0 ) * 1024 * 1024 * 1024;
cDebug() << "Required storage B:" << requiredStorageB
<< QString( "(%1GB)" ).arg( requiredStorageB / 1024 / 1024 / 1024 );
cDebug() << "Available storage B:" << availableStorageB
<< QString( "(%1GB)" ).arg( availableStorageB / 1024 / 1024 / 1024 );
if ( ok &&
availableStorageB > requiredStorageB )
{
cDebug() << "Partition" << partitionWithOs << "authorized for resize + autopartition install.";
return true;
}
}
}
}
cDebug() << "Partition" << partitionWithOs << "CANNOT BE RESIZED FOR AUTOINSTALL.";
return false;
}
CALAMARES_PLUGIN_FACTORY_DEFINITION( PartitionViewStepFactory, registerPlugin<PartitionViewStep>(); )

@ -20,8 +20,6 @@
#ifndef PARTITIONVIEWSTEP_H
#define PARTITIONVIEWSTEP_H
#include "OsproberEntry.h"
#include <utils/PluginFactory.h>
#include <viewpages/ViewStep.h>
@ -71,9 +69,6 @@ public:
QList< Calamares::job_ptr > jobs() const override;
private:
OsproberEntryList runOsprober();
bool canBeResized( const QString& partitionPath );
PartitionCoreModule* m_core;
QStackedWidget* m_widget;
ChoicePage* m_choicePage;

@ -21,7 +21,7 @@
#include "ui_ReplacePage.h"
#include "core/PartitionCoreModule.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "core/PartitionInfo.h"
#include "core/DeviceModel.h"
@ -109,7 +109,7 @@ ReplacePage::applyChanges()
if ( partition )
{
Device* dev = model->device();
Partition* newPartition = PMUtils::createNewPartition(
Partition* newPartition = KPMHelpers::createNewPartition(
partition->parent(),
*dev,
partition->roles(),

@ -23,7 +23,7 @@
#include "JobQueue.h"
#include "core/PartitionInfo.h"
#include "core/PartitionIterator.h"
#include "core/PMUtils.h"
#include "core/KPMHelpers.h"
#include "Branding.h"
#include "utils/Logger.h"
@ -195,7 +195,7 @@ FillGlobalStorageJob::createBootLoaderMap() const
QString path = m_bootLoaderPath;
if ( !path.startsWith( "/dev/" ) )
{
Partition* partition = PMUtils::findPartitionByMountPoint( m_devices, path );
Partition* partition = KPMHelpers::findPartitionByMountPoint( m_devices, path );
if ( !partition )
return QVariant();
path = partition->partitionPath();

@ -4,7 +4,7 @@ include( ECMAddTests )
set( PartitionModule_SOURCE_DIR .. )
set( partitionjobtests_SRCS
${PartitionModule_SOURCE_DIR}/core/PMUtils.cpp
${PartitionModule_SOURCE_DIR}/core/KPMHelpers.cpp
${PartitionModule_SOURCE_DIR}/core/PartitionInfo.cpp
${PartitionModule_SOURCE_DIR}/core/PartitionIterator.cpp
${PartitionModule_SOURCE_DIR}/jobs/CheckFileSystemJob.cpp

@ -21,7 +21,7 @@
#include <jobs/CreatePartitionJob.h>
#include <jobs/CreatePartitionTableJob.h>
#include <jobs/ResizePartitionJob.h>
#include <core/PMUtils.h>
#include <core/KPMHelpers.h>
// CalaPM
#include <CalaPM.h>
@ -113,7 +113,7 @@ static Partition*
firstFreePartition( PartitionNode* parent )
{
for( auto child : parent->children() )
if ( PMUtils::isPartitionFreeSpace( child ) )
if ( KPMHelpers::isPartitionFreeSpace( child ) )
return child;
return nullptr;
}
@ -353,7 +353,7 @@ PartitionJobTests::testResizePartition()
Partition* freePartition = firstFreePartition( m_device->partitionTable() );
QVERIFY( freePartition );
Partition* partition = PMUtils::createNewPartition( freePartition->parent(), *m_device, PartitionRole( PartitionRole::Primary ), FileSystem::Ext4, oldFirst, oldLast );
Partition* partition = KPMHelpers::createNewPartition( freePartition->parent(), *m_device, PartitionRole( PartitionRole::Primary ), FileSystem::Ext4, oldFirst, oldLast );
CreatePartitionJob* job = new CreatePartitionJob( m_device.data(), partition );
job->updatePreview();
m_queue.enqueue( job_ptr( job ) );

Loading…
Cancel
Save