Skip to content

Commit 6c0166f

Browse files
committed
bugs: Just ban Sonoma < 14.2
Now that 14.2 is out, we can remove all the complex logic and just tell people to update. Signed-off-by: Hector Martin <[email protected]>
1 parent a0530e0 commit 6c0166f

1 file changed

Lines changed: 10 additions & 95 deletions

File tree

src/bugs.py

Lines changed: 10 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -63,60 +63,19 @@ def get_startup_display_mode():
6363
return None
6464

6565
def request_upgrade():
66-
p_error("Mismatched System Firmware / System Recovery detected!")
66+
p_error("Dangerously buggy macOS version detected!")
6767
print()
68-
p_warning("You have a machine with a ProMotion display, with a System Firmware version")
69-
p_warning("newer than 14.0 and a System Recovery version older than 14.0. Due to a")
70-
p_warning("critical macOS bug, this combination can lead to an unbootable system under")
68+
p_warning("You have a machine with a ProMotion display, and you are running macOS")
69+
p_warning("Sonoma earlier than 14.2 or your System Firmware is in this range. Due to")
70+
p_warning("critical macOS bugs, this combination can lead to an unbootable system under")
7171
p_warning("certain conditions.")
7272
print()
73-
p_plain("Your machine is not currently in imminent danger, but will be safer if you")
74-
p_plain("upgrade to macOS Sonoma 14.1.1 or later. With this version, Apple added a")
75-
p_plain("temporary workaround that will make it harder to hit the bug in practice.")
76-
print()
77-
p_message("Please upgrade your system to macOS 14.1.1 or later and run this installer")
78-
p_message("again to continue. Do NOT change your display configuration until the upgrade")
79-
p_message("is complete.")
73+
p_message("Please upgrade your system to macOS 14.2 or later and run this installer")
74+
p_message("again to continue. This version resolves the bug and will make your machine")
75+
p_message("safe again. If you have multiple macOS installs, we recommend not booting")
76+
p_message("macOS Sonoma versions prior to 14.2 on this machine.")
8077
print()
8178

82-
def sadness(sysinfo):
83-
p_error("Your machine is affected by a critical macOS bug!")
84-
print()
85-
p_warning("You have a machine with a ProMotion display, with a System Firmware version")
86-
p_warning("newer than 14.0 and a System Recovery version older than 14.0. Due to a")
87-
p_warning("critical Apple bug, this combination can lead to an unbootable system under")
88-
p_warning("certain conditions.")
89-
print()
90-
if split_ver(sysinfo.sros_ver) < split_ver(BUGGY_SFR_MIN):
91-
p_error("We have determined that your machine is affected and currently has an")
92-
p_error("inoperable System Recovery. This is a dangerous condition that can make it")
93-
p_error("impossible to recover from certain situations. Installing Asahi Linux is also")
94-
p_error("not possible in this state.")
95-
else:
96-
p_error("We have determined that your machine is affected and would not be able to")
97-
p_error("successfully complete an Asahi Linux installation, as it cannot boot older")
98-
p_error("versions of macOS Recovery in this state.")
99-
print()
100-
p_error("Apple have deployed a fix for this issue in macOS 14.2 beta 4. To install")
101-
p_error("Asahi Linux, you must upgrade to this version or later. If you do not wish")
102-
p_error("to use a beta version of macOS, you will have to wait until the 14.2 final")
103-
p_error("release is out.")
104-
print()
105-
p_plain("More information:")
106-
print()
107-
p_plain( f" {col(BLUE, BRIGHT)}https://github.com/AsahiLinux/docs/wiki/macOS-Sonoma-Boot-Failures{col()}")
108-
109-
def you_are_safe(main):
110-
p_plain("Good news! Your machine should be unaffected by the critical ProMotion")
111-
p_plain("boot failure bug at this time. If you have any other versions of macOS")
112-
p_plain("installed side-by-side, we strongly recommend not booting them until")
113-
p_plain("Apple properly and fully fixes this bug, as that could cause the issue")
114-
p_plain("to trigger and your machine to become unbootable. Asahi Linux installs")
115-
p_plain("are safe and will not cause any danger to your system.")
116-
print()
117-
p_message("Press enter to continue.")
118-
main.input()
119-
12079
def run_checks(main):
12180
if main.sysinfo.device_class not in PROMOTION_DEVICES:
12281
logging.info("bugs: Not a ProMotion device")
@@ -130,49 +89,5 @@ def run_checks(main):
13089
logging.info("bugs: macOS is new enough to guarantee safety")
13190
return
13291

133-
p_progress("Checking whether your machine is affected by critical Apple bugs...")
134-
print()
135-
136-
hz = main.sysinfo.get_refresh_rate()
137-
if hz is None:
138-
p_warning("Could not check ProMotion display status")
139-
p_plain("This probably means your laptop lid is closed. Please open it and try again.")
140-
p_plain("(You're going to have to use the power button soon anyway!)")
141-
print()
142-
sys.exit(1)
143-
144-
p_info(f" Current display refresh rate: {col()}{hz} Hz")
145-
print()
146-
if hz != 120.0:
147-
p_error("Your display is not set to ProMotion mode (120 Hz). Please change your")
148-
p_error("display refresh rate to ProMotion mode in System Settings, then reboot")
149-
p_error("your machine with the lid open and try again.")
150-
print()
151-
p_error("Due to a critical Apple bug, it is not safe to install multiple operating")
152-
p_error("systems on your Mac with a non-ProMotion refresh rate configured.")
153-
print()
154-
sys.exit(1)
155-
156-
mode = get_startup_display_mode()
157-
if mode is None:
158-
p_warning("Could not check boot-time display configuration")
159-
p_plain("This can happen if you have not rebooted your machine in several days.")
160-
p_plain("Please reboot your machine with the laptop lid open, then try again.")
161-
print()
162-
sys.exit(1)
163-
164-
if split_ver(main.sysinfo.macos_ver) < split_ver(ALLOWED_MACOS_MIN):
165-
if mode != 2:
166-
p_warning("Mismatch between screen boot mode and current screen mode detected.")
167-
print()
168-
p_plain("Please reboot your machine and try again.")
169-
print()
170-
else:
171-
request_upgrade()
172-
sys.exit(1)
173-
174-
if mode == 2:
175-
you_are_safe(main)
176-
else:
177-
sadness(main.sysinfo)
178-
sys.exit(1)
92+
request_upgrade()
93+
sys.exit(1)

0 commit comments

Comments
 (0)