From 5df1abdb743ac71986cabe8c76dcd9a0f75e44da Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Thu, 25 Apr 2024 23:27:30 -0500 Subject: Qt UI: Fix partition count for APM disklabel The APM disklabel includes a meta partition for the partition map itself. This is always counted by parted as a partition, and is *not* considered to be a metadata partition. We therefore need to start our partitioning at #2 on APM, not #1. Closes: #376 --- CHANGELOG.rst | 14 +++++++++++++- ui/qt5/horizonwizard.cc | 6 ++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 7afcb34..b944410 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -5,7 +5,19 @@ * **A. Wilcox**, documentation writer * **Contributors**, code :Copyright: - © 2019-2023 Adélie Linux and contributors. + © 2019-2024 Adélie Linux and contributors. + + + +0.9.9 (2024-??-??) +================== + +Qt UI +----- + +* The Qt UI now counts APM partition map partitions when creating APM + disklabels, fixing a long-standing bug when installing to an empty disk + on PowerPC Macintosh systems. diff --git a/ui/qt5/horizonwizard.cc b/ui/qt5/horizonwizard.cc index 298cd15..2872eb6 100644 --- a/ui/qt5/horizonwizard.cc +++ b/ui/qt5/horizonwizard.cc @@ -400,7 +400,8 @@ QString nameForPartitionOnDisk(const std::string &dev, int part) { /*! Determine the correct disk label based on the target platform. */ QStringList eraseDiskForArch(const std::string &raw_disk, HorizonWizard::Arch arch, - HorizonWizard::Subarch subarch) { + HorizonWizard::Subarch subarch, + int *start) { const auto disk = QString::fromStdString(raw_disk); switch(arch) { @@ -412,6 +413,7 @@ QStringList eraseDiskForArch(const std::string &raw_disk, case HorizonWizard::ppc64: /* Complicated */ switch(subarch) { case HorizonWizard::ppc64_PowerMac: + (*start)++; return {QString{"disklabel %1 apm"}.arg(disk)}; case HorizonWizard::ppc64_PowerNV: return {QString{"disklabel %1 gpt"}.arg(disk)}; @@ -620,7 +622,7 @@ QString HorizonWizard::toHScript() { int start = 1; if(erase) { - lines << eraseDiskForArch(chosen_disk, arch, subarch); + lines << eraseDiskForArch(chosen_disk, arch, subarch, &start); } else { /* This branch will be taken when "use available space" is back. */ Q_ASSERT(false); -- cgit v1.2.3-60-g2f50