project: remove UTMQemuVirtualMachine from Remote client builds
This commit is contained in:
parent
be1f4ec87a
commit
a258ec396c
|
@ -120,7 +120,7 @@ extension UTMConfiguration {
|
|||
#endif
|
||||
// is it a legacy QEMU config?
|
||||
let dict = try NSDictionary(contentsOf: configURL, error: ()) as! [AnyHashable : Any]
|
||||
let name = UTMQemuVirtualMachine.virtualMachineName(for: packageURL)
|
||||
let name = ConcreteVirtualMachine.virtualMachineName(for: packageURL)
|
||||
let legacy = UTMLegacyQemuConfiguration(dictionary: dict, name: name, path: packageURL)
|
||||
return UTMQemuConfiguration(migrating: legacy)
|
||||
} else if stub.backend == .qemu {
|
||||
|
|
|
@ -177,7 +177,7 @@ private struct HardwareOptions: View {
|
|||
}
|
||||
}
|
||||
.onChange(of: config.architecture) { newValue in
|
||||
isArchitectureSupported = UTMQemuVirtualMachine.isSupported(systemArchitecture: newValue)
|
||||
isArchitectureSupported = ConcreteVirtualMachine.isSupported(systemArchitecture: newValue)
|
||||
if newValue != architecture {
|
||||
architecture = newValue
|
||||
}
|
||||
|
|
|
@ -25,6 +25,13 @@ import SwiftUI
|
|||
import AltKit
|
||||
#endif
|
||||
|
||||
#if WITH_REMOTE
|
||||
import CocoaSpiceNoUsb
|
||||
typealias ConcreteVirtualMachine = UTMRemoteSpiceVirtualMachine
|
||||
#else
|
||||
typealias ConcreteVirtualMachine = UTMQemuVirtualMachine
|
||||
#endif
|
||||
|
||||
struct AlertMessage: Identifiable {
|
||||
var message: String
|
||||
public var id: String {
|
||||
|
@ -141,7 +148,7 @@ struct AlertMessage: Identifiable {
|
|||
guard try file.resourceValues(forKeys: [.isDirectoryKey]).isDirectory ?? false else {
|
||||
continue
|
||||
}
|
||||
guard UTMQemuVirtualMachine.isVirtualMachine(url: file) else {
|
||||
guard ConcreteVirtualMachine.isVirtualMachine(url: file) else {
|
||||
continue
|
||||
}
|
||||
await Task.yield()
|
||||
|
@ -326,7 +333,7 @@ struct AlertMessage: Identifiable {
|
|||
let nameForId = { (i: Int) in i <= 1 ? base : "\(base) \(i)" }
|
||||
for i in 1..<1000 {
|
||||
let name = nameForId(i)
|
||||
let file = UTMQemuVirtualMachine.virtualMachinePath(for: name, in: documentsURL)
|
||||
let file = ConcreteVirtualMachine.virtualMachinePath(for: name, in: documentsURL)
|
||||
if !fileManager.fileExists(atPath: file.path) {
|
||||
return name
|
||||
}
|
||||
|
@ -460,8 +467,8 @@ struct AlertMessage: Identifiable {
|
|||
/// - Returns: The new VM
|
||||
@discardableResult func clone(vm: VMData) async throws -> VMData {
|
||||
let newName: String = newDefaultVMName(base: vm.detailsTitleLabel)
|
||||
let newPath = UTMQemuVirtualMachine.virtualMachinePath(for: newName, in: documentsURL)
|
||||
|
||||
let newPath = ConcreteVirtualMachine.virtualMachinePath(for: newName, in: documentsURL)
|
||||
|
||||
try await copyItemWithCopyfile(at: vm.pathUrl, to: newPath)
|
||||
guard let newVM = try? VMData(url: newPath) else {
|
||||
throw UTMDataError.cloneFailed
|
||||
|
@ -688,7 +695,7 @@ struct AlertMessage: Identifiable {
|
|||
}
|
||||
|
||||
func mountSupportTools(for vm: any UTMVirtualMachine) async throws {
|
||||
guard let vm = vm as? UTMQemuVirtualMachine else {
|
||||
guard let vm = vm as? any UTMSpiceVirtualMachine else {
|
||||
throw UTMDataError.unsupportedBackend
|
||||
}
|
||||
let task = UTMDownloadSupportToolsTask(for: vm)
|
||||
|
@ -837,7 +844,7 @@ struct AlertMessage: Identifiable {
|
|||
/// - vm: VM to send mouse/tablet coordinates to
|
||||
/// - components: Data (see UTM Wiki for details)
|
||||
func automationSendMouse(to vm: VMData, urlComponents components: URLComponents) {
|
||||
guard let qemuVm = vm.wrapped as? UTMQemuVirtualMachine else { return } // FIXME: implement for Apple VM
|
||||
guard let qemuVm = vm.wrapped as? any UTMSpiceVirtualMachine else { return } // FIXME: implement for Apple VM
|
||||
guard !qemuVm.config.displays.isEmpty else { return }
|
||||
guard let queryItems = components.queryItems else { return }
|
||||
/// Parse targeted position
|
||||
|
|
|
@ -18,8 +18,8 @@ import Foundation
|
|||
|
||||
/// Downloads support tools ISO
|
||||
class UTMDownloadSupportToolsTask: UTMDownloadTask {
|
||||
private let vm: UTMQemuVirtualMachine
|
||||
|
||||
private let vm: any UTMSpiceVirtualMachine
|
||||
|
||||
private static let supportToolsDownloadUrl = URL(string: "https://getutm.app/downloads/utm-guest-tools-latest.iso")!
|
||||
|
||||
private var toolsUrl: URL {
|
||||
|
@ -42,7 +42,7 @@ class UTMDownloadSupportToolsTask: UTMDownloadTask {
|
|||
}
|
||||
}
|
||||
|
||||
init(for vm: UTMQemuVirtualMachine) {
|
||||
init(for vm: any UTMSpiceVirtualMachine) {
|
||||
self.vm = vm
|
||||
let name = NSLocalizedString("Windows Guest Support Tools", comment: "UTMDownloadSupportToolsTask")
|
||||
super.init(for: Self.supportToolsDownloadUrl, named: name)
|
||||
|
|
|
@ -134,9 +134,11 @@ import SwiftUI
|
|||
/// - Parameter config: Configuration to create new VM
|
||||
convenience init<Config: UTMConfiguration>(creatingFromConfig config: Config, destinationUrl: URL) throws {
|
||||
self.init()
|
||||
#if !WITH_REMOTE
|
||||
if let qemuConfig = config as? UTMQemuConfiguration {
|
||||
wrapped = try UTMQemuVirtualMachine(newForConfiguration: qemuConfig, destinationUrl: destinationUrl)
|
||||
}
|
||||
#endif
|
||||
#if os(macOS)
|
||||
if let appleConfig = config as? UTMAppleConfiguration {
|
||||
wrapped = try UTMAppleVirtualMachine(newForConfiguration: appleConfig, destinationUrl: destinationUrl)
|
||||
|
@ -165,9 +167,11 @@ import SwiftUI
|
|||
}
|
||||
var loaded: (any UTMVirtualMachine)?
|
||||
let config = try UTMQemuConfiguration.load(from: url)
|
||||
#if !WITH_REMOTE
|
||||
if let qemuConfig = config as? UTMQemuConfiguration {
|
||||
loaded = try UTMQemuVirtualMachine(packageUrl: url, configuration: qemuConfig, isShortcut: isShortcut(url))
|
||||
}
|
||||
#endif
|
||||
#if os(macOS)
|
||||
if let appleConfig = config as? UTMAppleConfiguration {
|
||||
loaded = try UTMAppleVirtualMachine(packageUrl: url, configuration: appleConfig, isShortcut: isShortcut(url))
|
||||
|
|
|
@ -26,7 +26,7 @@ extension UTMData {
|
|||
guard let wrapped = vm.wrapped else {
|
||||
return
|
||||
}
|
||||
let session = VMSessionState(for: wrapped as! UTMQemuVirtualMachine)
|
||||
let session = VMSessionState(for: wrapped as! (any UTMSpiceVirtualMachine))
|
||||
session.start()
|
||||
}
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ import SwiftUI
|
|||
|
||||
struct VMDisplayHostedView: UIViewControllerRepresentable {
|
||||
internal class Coordinator: VMDisplayViewControllerDelegate {
|
||||
let vm: UTMQemuVirtualMachine
|
||||
let vm: any UTMSpiceVirtualMachine
|
||||
let device: VMWindowState.Device
|
||||
@Binding var state: VMWindowState
|
||||
var vmStateCancellable: AnyCancellable?
|
||||
|
@ -100,7 +100,7 @@ struct VMDisplayHostedView: UIViewControllerRepresentable {
|
|||
}
|
||||
}
|
||||
|
||||
init(with vm: UTMQemuVirtualMachine, device: VMWindowState.Device, state: Binding<VMWindowState>) {
|
||||
init(with vm: any UTMSpiceVirtualMachine, device: VMWindowState.Device, state: Binding<VMWindowState>) {
|
||||
self.vm = vm
|
||||
self.device = device
|
||||
self._state = state
|
||||
|
@ -131,7 +131,7 @@ struct VMDisplayHostedView: UIViewControllerRepresentable {
|
|||
}
|
||||
}
|
||||
|
||||
let vm: UTMQemuVirtualMachine
|
||||
let vm: any UTMSpiceVirtualMachine
|
||||
let device: VMWindowState.Device
|
||||
|
||||
@Binding var state: VMWindowState
|
||||
|
|
|
@ -37,8 +37,8 @@ import SwiftUI
|
|||
|
||||
let id: ID = ID()
|
||||
|
||||
let vm: UTMQemuVirtualMachine
|
||||
|
||||
let vm: any UTMSpiceVirtualMachine
|
||||
|
||||
var qemuConfig: UTMQemuConfiguration {
|
||||
vm.config
|
||||
}
|
||||
|
@ -81,7 +81,7 @@ import SwiftUI
|
|||
|
||||
private var hasAutosave: Bool = false
|
||||
|
||||
init(for vm: UTMQemuVirtualMachine) {
|
||||
init(for vm: any UTMSpiceVirtualMachine) {
|
||||
self.vm = vm
|
||||
super.init()
|
||||
vm.delegate = self
|
||||
|
@ -494,7 +494,7 @@ extension VMSessionState {
|
|||
}
|
||||
Task {
|
||||
do {
|
||||
try await vm.saveSnapshot()
|
||||
try await vm.saveSnapshot(name: nil)
|
||||
self.hasAutosave = true
|
||||
logger.info("Save snapshot complete")
|
||||
} catch {
|
||||
|
|
|
@ -1063,7 +1063,6 @@
|
|||
CEF7F6102AEEDCC400E34952 /* UTMSerialPortDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848F71EB277A2F47006A0240 /* UTMSerialPortDelegate.swift */; };
|
||||
CEF7F6112AEEDCC400E34952 /* VMConfigSoundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D953A24AD4F980059923A /* VMConfigSoundView.swift */; };
|
||||
CEF7F6122AEEDCC400E34952 /* UTMLegacyQemuConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = CE31C244225E555600A965DD /* UTMLegacyQemuConfiguration.m */; };
|
||||
CEF7F6132AEEDCC400E34952 /* UTMQemuVirtualMachine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 841E999728AC817D003C6CB6 /* UTMQemuVirtualMachine.swift */; };
|
||||
CEF7F6142AEEDCC400E34952 /* VMDetailsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE2D954B24AD4F980059923A /* VMDetailsView.swift */; };
|
||||
CEF7F6152AEEDCC400E34952 /* VMDisplayMetalViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5286EC94243748C3007E6CBC /* VMDisplayMetalViewController.m */; };
|
||||
CEF7F6162AEEDCC400E34952 /* UTMQemuConfiguration+Arguments.swift in Sources */ = {isa = PBXBuildFile; fileRef = 848D99C328670F650055C215 /* UTMQemuConfiguration+Arguments.swift */; };
|
||||
|
@ -4108,7 +4107,6 @@
|
|||
CEF7F6102AEEDCC400E34952 /* UTMSerialPortDelegate.swift in Sources */,
|
||||
CEF7F6112AEEDCC400E34952 /* VMConfigSoundView.swift in Sources */,
|
||||
CEF7F6122AEEDCC400E34952 /* UTMLegacyQemuConfiguration.m in Sources */,
|
||||
CEF7F6132AEEDCC400E34952 /* UTMQemuVirtualMachine.swift in Sources */,
|
||||
CEF7F6142AEEDCC400E34952 /* VMDetailsView.swift in Sources */,
|
||||
CEF7F6152AEEDCC400E34952 /* VMDisplayMetalViewController.m in Sources */,
|
||||
CEF7F6162AEEDCC400E34952 /* UTMQemuConfiguration+Arguments.swift in Sources */,
|
||||
|
|
Loading…
Reference in New Issue