From dde0a25d2c6b0258ed03d37d446ceb6be29033d3 Mon Sep 17 00:00:00 2001 From: crosbymichael Date: Tue, 8 Jul 2025 13:10:05 -0400 Subject: [PATCH] guard arch around Rosetta API 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 --- .../VZVirtualMachineInstance.swift | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/Sources/Containerization/VZVirtualMachineInstance.swift b/Sources/Containerization/VZVirtualMachineInstance.swift index 1022f935..f0281588 100644 --- a/Sources/Containerization/VZVirtualMachineInstance.swift +++ b/Sources/Containerization/VZVirtualMachineInstance.swift @@ -207,9 +207,15 @@ extension VZVirtualMachineInstance { } func prestart() async throws { - if self.config.rosetta && VZLinuxRosettaDirectoryShare.availability == .notInstalled { - self.logger?.info("installing rosetta") - try await VZVirtualMachineInstance.Configuration.installRosetta() + if self.config.rosetta { + #if arch(arm64) + if VZLinuxRosettaDirectoryShare.availability == .notInstalled { + self.logger?.info("installing rosetta") + try await VZVirtualMachineInstance.Configuration.installRosetta() + } + #else + fatalError("rosetta is only supported on arm64") + #endif } } } @@ -217,7 +223,11 @@ extension VZVirtualMachineInstance { extension VZVirtualMachineInstance.Configuration { public static func installRosetta() async throws { do { + #if arch(arm64) try await VZLinuxRosettaDirectoryShare.installRosetta() + #else + fatalError("rosetta is only supported on arm64") + #endif } catch { throw ContainerizationError( .internalError, @@ -252,6 +262,7 @@ extension VZVirtualMachineInstance.Configuration { } if self.rosetta { + #if arch(arm64) switch VZLinuxRosettaDirectoryShare.availability { case .notSupported: throw ContainerizationError( @@ -273,6 +284,9 @@ extension VZVirtualMachineInstance.Configuration { message: "unknown rosetta availability encountered: \(VZLinuxRosettaDirectoryShare.availability)" ) } + #else + fatalError("rosetta is only supported on arm64") + #endif } guard let kernel = self.kernel else {