diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 8403d7d..040c612 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -2,7 +2,7 @@ name: macOS on: [push] jobs: build: - runs-on: macos-13 + runs-on: macos-14 steps: - name: Checkout Repository uses: actions/checkout@v2 @@ -16,14 +16,14 @@ jobs: name: diavirt path: diavirt format: - runs-on: macos-13 + runs-on: macos-14 steps: - name: Checkout Repository uses: actions/checkout@v2 - name: Swift Format run: swiftformat --lint . lint: - runs-on: macos-13 + runs-on: macos-14 steps: - name: Checkout Repository uses: actions/checkout@v2 diff --git a/.swift-version b/.swift-version index d346e2a..f9ce5a9 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -5.3 +5.10 diff --git a/Sources/diavirt/ConfigurationBuilder.swift b/Sources/diavirt/ConfigurationBuilder.swift index 2f08729..51287c0 100644 --- a/Sources/diavirt/ConfigurationBuilder.swift +++ b/Sources/diavirt/ConfigurationBuilder.swift @@ -19,7 +19,7 @@ extension DAVirtualMachineConfiguration { func preflight(wire: WireProtocol) async throws -> DABuildState { let state = DABuildState() #if arch(arm64) - if let macRestoreImage = macRestoreImage { + if let macRestoreImage { state.macRestoreImage = try await macRestoreImage.preflight(wire: wire) } #endif @@ -33,61 +33,61 @@ extension DAVirtualMachineConfiguration { configuration.cpuCount = cpuCoreCount configuration.memorySize = memorySizeInBytes - if let storageDevices = storageDevices { + if let storageDevices { for storageDevice in storageDevices { try configuration.storageDevices.append(storageDevice.build(wire: wire)) } } - if let serialPorts = serialPorts { + if let serialPorts { for serialPort in serialPorts { try configuration.serialPorts.append(serialPort.build(wire: wire)) } } - if let entropyDevices = entropyDevices { + if let entropyDevices { for entropyDevice in entropyDevices { try configuration.entropyDevices.append(entropyDevice.build()) } } - if let memoryBalloonDevices = memoryBalloonDevices { + if let memoryBalloonDevices { for memoryBalloonDevice in memoryBalloonDevices { try configuration.memoryBalloonDevices.append(memoryBalloonDevice.build()) } } - if let networkDevices = networkDevices { + if let networkDevices { for networkDevice in networkDevices { try configuration.networkDevices.append(networkDevice.build()) } } - if let graphicsDevices = graphicsDevices { + if let graphicsDevices { for graphicsDevice in graphicsDevices { try configuration.graphicsDevices.append(graphicsDevice.build()) } } - if let directorySharingDevices = directorySharingDevices { + if let directorySharingDevices { for directorySharingDevice in directorySharingDevices { try configuration.directorySharingDevices.append(directorySharingDevice.build()) } } - if let socketDevices = socketDevices { + if let socketDevices { for socketDevice in socketDevices { try configuration.socketDevices.append(socketDevice.build()) } } - if let keyboardDevices = keyboardDevices { + if let keyboardDevices { for keyboardDevice in keyboardDevices { try configuration.keyboards.append(keyboardDevice.build()) } } - if let pointingDevices = pointingDevices { + if let pointingDevices { for pointingDevice in pointingDevices { try configuration.pointingDevices.append(pointingDevice.build()) } @@ -98,18 +98,18 @@ extension DAVirtualMachineConfiguration { extension DABootLoader { func apply(to configuration: VZVirtualMachineConfiguration, state _: DABuildState) throws { - if let linuxBootLoader = linuxBootLoader { + if let linuxBootLoader { configuration.bootLoader = try linuxBootLoader.build() } #if DIAVIRT_USE_PRIVATE_APIS - if let efiBootLoader = efiBootLoader { + if let efiBootLoader { configuration.bootLoader = try efiBootLoader.build() } #endif #if arch(arm64) - if let macOSBootLoader = macOSBootLoader { + if let macOSBootLoader { configuration.bootLoader = try macOSBootLoader.build() } #endif @@ -121,12 +121,12 @@ extension DALinuxBootLoader { let kernelURL = URL(fileURLWithPath: kernelFilePath).absoluteURL let bootloader = VZLinuxBootLoader(kernelURL: kernelURL) - if let initialRamdiskPath = initialRamdiskPath { + if let initialRamdiskPath { let initialRamdiskURL = URL(fileURLWithPath: initialRamdiskPath).absoluteURL bootloader.initialRamdiskURL = initialRamdiskURL } - if let commandLine = commandLine { + if let commandLine { bootloader.commandLine = commandLine } return bootloader @@ -161,12 +161,12 @@ extension DAEFIBootLoader { extension DAPlatform { func apply(to configuration: VZVirtualMachineConfiguration, state: DABuildState) throws { - if let genericPlatform = genericPlatform { + if let genericPlatform { configuration.platform = try genericPlatform.build() } #if arch(arm64) - if let macPlatform = macPlatform { + if let macPlatform { configuration.platform = try macPlatform.build(state: state) } #endif @@ -187,11 +187,10 @@ extension DAMacPlatform { let model = configuration.hardwareModel let platform = VZMacPlatformConfiguration() let auxilaryStorageURL = URL(fileURLWithPath: auxiliaryStoragePath) - let auxilaryStorage: VZMacAuxiliaryStorage - if !FileManager.default.fileExists(atPath: auxiliaryStoragePath) { - auxilaryStorage = try VZMacAuxiliaryStorage(creatingStorageAt: auxilaryStorageURL, hardwareModel: model, options: .allowOverwrite) + let auxilaryStorage: VZMacAuxiliaryStorage = if !FileManager.default.fileExists(atPath: auxiliaryStoragePath) { + try VZMacAuxiliaryStorage(creatingStorageAt: auxilaryStorageURL, hardwareModel: model, options: .allowOverwrite) } else { - auxilaryStorage = VZMacAuxiliaryStorage(contentsOf: auxilaryStorageURL) + VZMacAuxiliaryStorage(contentsOf: auxilaryStorageURL) } var machineIdentifier: VZMacMachineIdentifier? @@ -207,7 +206,7 @@ extension DAMacPlatform { platform.auxiliaryStorage = auxilaryStorage platform.hardwareModel = configuration.hardwareModel - if let machineIdentifier = machineIdentifier { + if let machineIdentifier { platform.machineIdentifier = machineIdentifier } return platform @@ -220,19 +219,19 @@ extension DAStorageDevice { var attachment: VZStorageDeviceAttachment? var storage: VZStorageDeviceConfiguration? - if let diskImageAttachment = diskImageAttachment { + if let diskImageAttachment { attachment = try diskImageAttachment.build(wire: wire) } - if let networkBlockDeviceAttachment = networkBlockDeviceAttachment { + if let networkBlockDeviceAttachment { attachment = try networkBlockDeviceAttachment.build() } - if let virtioBlockDevice = virtioBlockDevice { + if let virtioBlockDevice { storage = try virtioBlockDevice.build(attachment: attachment!) } - if let usbMassStorageDevice = usbMassStorageDevice { + if let usbMassStorageDevice { storage = try usbMassStorageDevice.build(attachment: attachment!) } @@ -245,7 +244,7 @@ extension DADiskImageAttachment { let url = URL(fileURLWithPath: imageFilePath).absoluteURL var wasDiskAllocated = false - if let autoCreateSizeInBytes = autoCreateSizeInBytes { + if let autoCreateSizeInBytes { if !FileManager.default.fileExists(atPath: url.path) { let parentFileUrl = url.deletingLastPathComponent() try FileManager.default.createDirectory(at: parentFileUrl, withIntermediateDirectories: true) @@ -303,24 +302,24 @@ extension DASerialPort { var attachment: VZSerialPortAttachment? var port: VZSerialPortConfiguration? - if let stdioSerialAttachment = stdioSerialAttachment { + if let stdioSerialAttachment { attachment = try stdioSerialAttachment.build(wire: wire) } - if let wireSerialAttachment = wireSerialAttachment { + if let wireSerialAttachment { attachment = try wireSerialAttachment.build(wire: wire) } - if let virtioConsoleDevice = virtioConsoleDevice { + if let virtioConsoleDevice { port = try virtioConsoleDevice.build() } #if DIAVIRT_USE_PRIVATE_APIS - if let pl011SerialDevice = pl011SerialDevice { + if let pl011SerialDevice { port = try pl011SerialDevice.build() } - if let p16550SerialDevice = p16550SerialDevice { + if let p16550SerialDevice { port = try p16550SerialDevice.build() } #endif @@ -417,11 +416,11 @@ extension DANetworkDevice { var attachment: VZNetworkDeviceAttachment? var device: VZNetworkDeviceConfiguration? - if let natNetworkAttachment = natNetworkAttachment { + if let natNetworkAttachment { attachment = try natNetworkAttachment.build() } - if let virtioNetworkDevice = virtioNetworkDevice { + if let virtioNetworkDevice { device = try virtioNetworkDevice.build() } @@ -439,7 +438,7 @@ extension DANATNetworkAttachment { extension DAVirtioNetworkDevice { func build() throws -> VZVirtioNetworkDeviceConfiguration { let device = VZVirtioNetworkDeviceConfiguration() - if let macAddress = macAddress { + if let macAddress { device.macAddress = VZMACAddress(string: macAddress)! } return device @@ -499,7 +498,7 @@ extension DADirectorySharingDevice { func build() throws -> VZDirectorySharingDeviceConfiguration { let share = try directoryShare.build() var device: VZDirectorySharingDeviceConfiguration? - if let virtioFileSystemDevice = virtioFileSystemDevice { + if let virtioFileSystemDevice { let fileSystemDevice = try virtioFileSystemDevice.build() fileSystemDevice.share = share device = fileSystemDevice @@ -517,11 +516,11 @@ extension DAVirtioFileSystemDevice { extension DADirectoryShare { func build() throws -> VZDirectoryShare { var share: VZDirectoryShare? - if let singleDirectoryShare = singleDirectoryShare { + if let singleDirectoryShare { share = try singleDirectoryShare.build() } - if let multipleDirectoryShare = multipleDirectoryShare { + if let multipleDirectoryShare { share = try multipleDirectoryShare.build() } @@ -553,7 +552,7 @@ extension DASocketDevice { func build() throws -> VZSocketDeviceConfiguration { var device: VZSocketDeviceConfiguration? - if let virtioSocketDevice = virtioSocketDevice { + if let virtioSocketDevice { device = try virtioSocketDevice.build() } @@ -571,7 +570,7 @@ extension DAKeyboardDevice { func build() throws -> VZKeyboardConfiguration { var device: VZKeyboardConfiguration? - if let usbKeyboardDevice = usbKeyboardDevice { + if let usbKeyboardDevice { device = try usbKeyboardDevice.build() } @@ -589,7 +588,7 @@ extension DAPointingDevice { func build() throws -> VZPointingDeviceConfiguration { var device: VZPointingDeviceConfiguration? - if let usbScreenCoordinatePointingDevice = usbScreenCoordinatePointingDevice { + if let usbScreenCoordinatePointingDevice { device = try usbScreenCoordinatePointingDevice.build() } @@ -630,11 +629,11 @@ extension DAMacOSRestoreImage { wire.writeProtocolEvent(StateEvent("preflight.macRestoreImage.start")) var restoreImage: VZMacOSRestoreImage? - if let latestSupportedRestoreImage = latestSupportedRestoreImage { + if let latestSupportedRestoreImage { restoreImage = try await latestSupportedRestoreImage.preflight(wire: wire) } - if let fileRestoreImage = fileRestoreImage { + if let fileRestoreImage { restoreImage = try await fileRestoreImage.preflight() } wire.writeProtocolEvent(StateEvent("preflight.macRestoreImage.end")) @@ -650,7 +649,7 @@ extension DALatestSupportedMacOSRestoreImage { wire.writeProtocolEvent(StateEvent("installation.download.start")) let future: Future = Future { promise in let task = URLSession.shared.downloadTask(with: imageRemote.url) { url, _, error in - if let error = error { + if let error { promise(.failure(error)) return } diff --git a/Sources/diavirt/EntryPoint.swift b/Sources/diavirt/EntryPoint.swift index e11aca3..08e75c5 100644 --- a/Sources/diavirt/EntryPoint.swift +++ b/Sources/diavirt/EntryPoint.swift @@ -1,5 +1,5 @@ // -// main.swift +// EntryPoint.swift // diavirt // // Created by Alex Zenla on 12/13/21. diff --git a/Sources/diavirt/ViewerApplication.swift b/Sources/diavirt/ViewerApplication.swift index 5e2f2ec..171d6f5 100644 --- a/Sources/diavirt/ViewerApplication.swift +++ b/Sources/diavirt/ViewerApplication.swift @@ -1,5 +1,5 @@ // -// Viewer.swift +// ViewerApplication.swift // diavirt // // Created by Alex Zenla on 12/14/21. diff --git a/Sources/diavirt/VirtualMachine.swift b/Sources/diavirt/VirtualMachine.swift index 381b6bf..51732f2 100644 --- a/Sources/diavirt/VirtualMachine.swift +++ b/Sources/diavirt/VirtualMachine.swift @@ -1,5 +1,5 @@ // -// Runtime.swift +// VirtualMachine.swift // diavirt // // Created by Alex Zenla on 12/13/21. @@ -168,7 +168,7 @@ class DAVirtualMachine: NSObject, WireProtocol, VZVirtualMachineDelegate { try machine?.requestStop() } - func writeProtocolEvent(_ event: T) where T: WireEvent { + func writeProtocolEvent(_ event: some WireEvent) { if !enableWireProtocol { if let message = event.toUserMessage() { var data = message.data(using: .utf8)! diff --git a/Sources/diavirt/WireModel.swift b/Sources/diavirt/WireModel.swift index 2b0ecec..cf9047d 100644 --- a/Sources/diavirt/WireModel.swift +++ b/Sources/diavirt/WireModel.swift @@ -23,10 +23,6 @@ protocol WireProtocol { struct SimpleEvent: WireEvent { var type: String - init(type: String) { - self.type = type - } - func toUserMessage() -> String? { nil } diff --git a/diavirt.xcodeproj/project.pbxproj b/diavirt.xcodeproj/project.pbxproj index 48676fe..2dcda04 100644 --- a/diavirt.xcodeproj/project.pbxproj +++ b/diavirt.xcodeproj/project.pbxproj @@ -8,7 +8,6 @@ /* Begin PBXBuildFile section */ 2A2A9C7227678B000006C500 /* EntryPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A2A9C7127678B000006C500 /* EntryPoint.swift */; }; - 2A2A9C7B27678DF40006C500 /* ArgumentParser in Frameworks */ = {isa = PBXBuildFile; productRef = 2A2A9C7A27678DF40006C500 /* ArgumentParser */; }; 2A2A9C7D27678E3B0006C500 /* ConfigurationModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A2A9C7C27678E3B0006C500 /* ConfigurationModel.swift */; }; 2A2A9C7F27678ECF0006C500 /* VirtualMachine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A2A9C7E27678ECF0006C500 /* VirtualMachine.swift */; }; 2A3190CA276972CE00D4B154 /* ConfigurationBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A3190C9276972CE00D4B154 /* ConfigurationBuilder.swift */; }; @@ -17,6 +16,7 @@ 2A7518EC276EAC560032FC8B /* TerminalMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A7518EB276EAC560032FC8B /* TerminalMode.swift */; }; 2AAE43B227E9B4F0005A8EE0 /* CannedMac.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AAE43B127E9B4F0005A8EE0 /* CannedMac.swift */; }; 2AD7152227EE151E00EDD14E /* VirtualizationPrivate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AD7152127EE151E00EDD14E /* VirtualizationPrivate.swift */; }; + FA53C98E2C181FEF005FEEFC /* ArgumentParser in Frameworks */ = {isa = PBXBuildFile; productRef = FA53C98D2C181FEF005FEEFC /* ArgumentParser */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -52,7 +52,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 2A2A9C7B27678DF40006C500 /* ArgumentParser in Frameworks */, + FA53C98E2C181FEF005FEEFC /* ArgumentParser in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -119,7 +119,7 @@ ); name = diavirt; packageProductDependencies = ( - 2A2A9C7A27678DF40006C500 /* ArgumentParser */, + FA53C98D2C181FEF005FEEFC /* ArgumentParser */, ); productName = diavirt; productReference = 2A2A9C6E27678B000006C500 /* diavirt */; @@ -150,7 +150,7 @@ ); mainGroup = 2A2A9C6527678B000006C500; packageReferences = ( - 2A2A9C7927678DF40006C500 /* XCRemoteSwiftPackageReference "swift-argument-parser" */, + FA53C98C2C181FEF005FEEFC /* XCRemoteSwiftPackageReference "swift-argument-parser" */, ); productRefGroup = 2A2A9C6F27678B000006C500 /* Products */; projectDirPath = ""; @@ -314,7 +314,7 @@ ENABLE_HARDENED_RUNTIME = YES; MACOSX_DEPLOYMENT_TARGET = 14.0; OTHER_SWIFT_FLAGS = "-D DIAVIRT_USE_PRIVATE_APIS"; - PRODUCT_BUNDLE_IDENTIFIER = io.kexec.diavirt; + PRODUCT_BUNDLE_IDENTIFIER = gay.pizza.diavirt; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; }; @@ -332,7 +332,7 @@ ENABLE_HARDENED_RUNTIME = YES; MACOSX_DEPLOYMENT_TARGET = 14.0; OTHER_SWIFT_FLAGS = "-D DIAVIRT_USE_PRIVATE_APIS"; - PRODUCT_BUNDLE_IDENTIFIER = io.kexec.diavirt; + PRODUCT_BUNDLE_IDENTIFIER = gay.pizza.diavirt; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; SWIFT_VERSION = 5.0; @@ -363,20 +363,20 @@ /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - 2A2A9C7927678DF40006C500 /* XCRemoteSwiftPackageReference "swift-argument-parser" */ = { + FA53C98C2C181FEF005FEEFC /* XCRemoteSwiftPackageReference "swift-argument-parser" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/apple/swift-argument-parser.git"; requirement = { kind = upToNextMajorVersion; - minimumVersion = 1.0.0; + minimumVersion = 1.4.0; }; }; /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - 2A2A9C7A27678DF40006C500 /* ArgumentParser */ = { + FA53C98D2C181FEF005FEEFC /* ArgumentParser */ = { isa = XCSwiftPackageProductDependency; - package = 2A2A9C7927678DF40006C500 /* XCRemoteSwiftPackageReference "swift-argument-parser" */; + package = FA53C98C2C181FEF005FEEFC /* XCRemoteSwiftPackageReference "swift-argument-parser" */; productName = ArgumentParser; }; /* End XCSwiftPackageProductDependency section */ diff --git a/diavirt.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/diavirt.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 91fdecb..8491e51 100644 --- a/diavirt.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/diavirt.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,16 +1,15 @@ { - "object": { - "pins": [ - { - "package": "swift-argument-parser", - "repositoryURL": "https://github.com/apple/swift-argument-parser.git", - "state": { - "branch": null, - "revision": "e1465042f195f374b94f915ba8ca49de24300a0d", - "version": "1.0.2" - } + "originHash" : "59ba1edda695b389d6c9ac1809891cd779e4024f505b0ce1a9d5202b6762e38a", + "pins" : [ + { + "identity" : "swift-argument-parser", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-argument-parser.git", + "state" : { + "revision" : "0fbc8848e389af3bb55c182bc19ca9d5dc2f255b", + "version" : "1.4.0" } - ] - }, - "version": 1 + } + ], + "version" : 3 }