diff --git a/debian/changelog b/debian/changelog index 08b7515..21663e7 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +calamares (3.2.4-0ubuntu3) UNRELEASED; urgency=medium + + * Cherry-pick several beneficial upstream patches: + - Ensure the firmware type is set in the global configuration. + - Avoid heap-wrangling the CreatePartitionDialog. + - Drop some re-parenting trickery. + + -- Simon Quigley Thu, 11 Apr 2019 12:39:57 -0500 + calamares (3.2.4-0ubuntu2) disco; urgency=medium * Restore button updates in partition page (LP: #1823569). diff --git a/debian/patches/avoid-heap-wrangling.patch b/debian/patches/avoid-heap-wrangling.patch new file mode 100644 index 0000000..f8f3ee3 --- /dev/null +++ b/debian/patches/avoid-heap-wrangling.patch @@ -0,0 +1,38 @@ +Description: [partition] Avoid heap-wrangling + The CreatePartitionDialog doesn't need to be on the heap, it's modal here. + Avoid QPointer weirdness as well. +Author: Adriaan de Groot +Origin: upstream +Applied-Upstream: commit:b4cefff975138e621d9a9437891c9d1b09616b74 +Last-Update: 2019-04-11 +--- a/src/modules/partition/gui/PartitionPage.cpp ++++ b/src/modules/partition/gui/PartitionPage.cpp +@@ -376,18 +376,18 @@ PartitionPage::onCreateClicked() + if ( !checkCanCreate( model->device() ) ) + return; + +- QPointer< CreatePartitionDialog > dlg = new CreatePartitionDialog( model->device(), +- partition->parent(), +- nullptr, +- getCurrentUsedMountpoints(), +- this ); +- dlg->initFromFreeSpace( partition ); +- if ( dlg->exec() == QDialog::Accepted ) ++ CreatePartitionDialog dlg( ++ model->device(), ++ partition->parent(), ++ nullptr, ++ getCurrentUsedMountpoints(), ++ this ); ++ dlg.initFromFreeSpace( partition ); ++ if ( dlg.exec() == QDialog::Accepted ) + { +- Partition* newPart = dlg->createPartition(); +- m_core->createPartition( model->device(), newPart, dlg->newFlags() ); ++ Partition* newPart = dlg.createPartition(); ++ m_core->createPartition( model->device(), newPart, dlg.newFlags() ); + } +- delete dlg; + } + + void diff --git a/debian/patches/drop-reparenting-trickery.patch b/debian/patches/drop-reparenting-trickery.patch new file mode 100644 index 0000000..28497e4 --- /dev/null +++ b/debian/patches/drop-reparenting-trickery.patch @@ -0,0 +1,22 @@ +Description: [partition] Drop some re-parenting trickery + Can't re-parent across threads easily. If device is made by + immutableDeviceCopy(), then it's still owned by the PartitionCoreModule; + giving it away to the widget is not a good idea. +Author: Adriaan de Groot +Origin: upstream +Applied-Upstream: commit:2092ec3c9a0a37553fd061f423df9d29fe55ab80 +Last-Update: 2019-04-11 +--- a/src/modules/partition/gui/ChoicePage.cpp ++++ b/src/modules/partition/gui/ChoicePage.cpp +@@ -882,11 +882,6 @@ ChoicePage::updateDeviceStatePreview() + PartitionModel* model = new PartitionModel( m_beforePartitionBarsView ); + model->init( deviceBefore, m_core->osproberEntries() ); + +- // The QObject parents tree is meaningful for memory management here, +- // see qDeleteAll above. +- deviceBefore->setParent( model ); // Can't reparent across threads +- model->setParent( m_beforePartitionBarsView ); +- + m_beforePartitionBarsView->setModel( model ); + m_beforePartitionLabelsView->setModel( model ); + diff --git a/debian/patches/series b/debian/patches/series index 4cfd2cd..38d0c6b 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,3 +1,6 @@ 0001-replace-pkexec-by-sudo.patch apport-package-hook.patch update-buttons.patch +set-firmware-type.patch +avoid-heap-wrangling.patch +drop-reparenting-trickery.patch diff --git a/debian/patches/set-firmware-type.patch b/debian/patches/set-firmware-type.patch new file mode 100644 index 0000000..73d1a7c --- /dev/null +++ b/debian/patches/set-firmware-type.patch @@ -0,0 +1,19 @@ +Description: [partition] Set firmware type +Author: Adriaan de Groot +Origin: upstream +Applied-Upstream: commit:105f9c48617b390743aefe2e612d1761a420a7fc +Last-Update: 2019-04-11 +--- a/src/modules/partition/gui/PartitionViewStep.cpp ++++ b/src/modules/partition/gui/PartitionViewStep.cpp +@@ -553,6 +553,11 @@ PartitionViewStep::setConfigurationMap( + efiSP = QStringLiteral( "/boot/efi" ); + gs->insert( "efiSystemPartition", efiSP ); + ++ // Set up firmwareType global storage entry. This is used, e.g. by the bootloader module. ++ QString firmwareType( PartUtils::isEfiSystem() ? QStringLiteral( "efi" ) : QStringLiteral( "bios" ) ); ++ cDebug() << "Setting firmwareType to" << firmwareType; ++ gs->insert( "firmwareType", firmwareType ); ++ + // SWAP SETTINGS + // + // This is a bit convoluted because there's legacy settings to handle as well