Skip to content

Commit d16893d

Browse files
guard arch around Rosetta API (#203)
While this only supports AS, xcode's default will build all arches, so this presents a bit nicer default for Archiving an xcode application that utilizes containerization. Fixes #179 Signed-off-by: crosbymichael <michael_crosby@apple.com>
1 parent 6dc5489 commit d16893d

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

Sources/Containerization/VZVirtualMachineInstance.swift

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,17 +207,27 @@ extension VZVirtualMachineInstance {
207207
}
208208

209209
func prestart() async throws {
210-
if self.config.rosetta && VZLinuxRosettaDirectoryShare.availability == .notInstalled {
211-
self.logger?.info("installing rosetta")
212-
try await VZVirtualMachineInstance.Configuration.installRosetta()
210+
if self.config.rosetta {
211+
#if arch(arm64)
212+
if VZLinuxRosettaDirectoryShare.availability == .notInstalled {
213+
self.logger?.info("installing rosetta")
214+
try await VZVirtualMachineInstance.Configuration.installRosetta()
215+
}
216+
#else
217+
fatalError("rosetta is only supported on arm64")
218+
#endif
213219
}
214220
}
215221
}
216222

217223
extension VZVirtualMachineInstance.Configuration {
218224
public static func installRosetta() async throws {
219225
do {
226+
#if arch(arm64)
220227
try await VZLinuxRosettaDirectoryShare.installRosetta()
228+
#else
229+
fatalError("rosetta is only supported on arm64")
230+
#endif
221231
} catch {
222232
throw ContainerizationError(
223233
.internalError,
@@ -252,6 +262,7 @@ extension VZVirtualMachineInstance.Configuration {
252262
}
253263

254264
if self.rosetta {
265+
#if arch(arm64)
255266
switch VZLinuxRosettaDirectoryShare.availability {
256267
case .notSupported:
257268
throw ContainerizationError(
@@ -273,6 +284,9 @@ extension VZVirtualMachineInstance.Configuration {
273284
message: "unknown rosetta availability encountered: \(VZLinuxRosettaDirectoryShare.availability)"
274285
)
275286
}
287+
#else
288+
fatalError("rosetta is only supported on arm64")
289+
#endif
276290
}
277291

278292
guard let kernel = self.kernel else {

0 commit comments

Comments
 (0)