Skip to content

Commit d7b9711

Browse files
fix: only enable rosetta by default when installed
1 parent 474906d commit d7b9711

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

Sources/ContainerCommands/Builder/BuilderStart.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import ContainerizationOCI
2626
import Foundation
2727
import Logging
2828
import TerminalProgress
29+
import Virtualization
2930

3031
extension Application {
3132
public struct BuilderStart: AsyncLoggableCommand {
@@ -195,7 +196,15 @@ extension Application {
195196
}
196197
}
197198

198-
let useRosetta = DefaultsStore.getBool(key: .buildRosetta) ?? true
199+
let rosettaPreference = DefaultsStore.getBool(key: .buildRosetta) ?? true
200+
let rosettaExplicit = DefaultsStore.isSet(key: .buildRosetta)
201+
let useRosetta: Bool
202+
#if arch(arm64)
203+
let rosettaAvailable = VZLinuxRosettaDirectoryShare.availability == .installed
204+
useRosetta = rosettaExplicit ? rosettaPreference : (rosettaPreference && rosettaAvailable)
205+
#else
206+
useRosetta = false
207+
#endif
199208
let shimArguments = [
200209
"--debug",
201210
"--vsock",

Sources/ContainerPersistence/DefaultsStore.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ public enum DefaultsStore {
6666
?? Bool(key.defaultValue)
6767
}
6868

69+
public static func isSet(key: DefaultsStore.Keys) -> Bool {
70+
udSuite.object(forKey: key.rawValue) != nil
71+
}
72+
6973
public static func allValues() -> [DefaultsStoreValue] {
7074
let allKeys: [(Self.Keys, (Self.Keys) -> Any?)] = [
7175
(.buildRosetta, { Self.getBool(key: $0) }),

0 commit comments

Comments
 (0)