summaryrefslogtreecommitdiff
path: root/user/horizon/apm-disklabel.patch
blob: 368aa8b0549894dfbcecffe13673a5799f3c1da2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
From 5df1abdb743ac71986cabe8c76dcd9a0f75e44da Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
Date: Thu, 25 Apr 2024 23:27:30 -0500
Subject: [PATCH] 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);
-- 
2.40.0