diff --git a/Sources/Basics/Cancellator.swift b/Sources/Basics/Cancellator.swift index 805d7976655..9cb30617d57 100644 --- a/Sources/Basics/Cancellator.swift +++ b/Sources/Basics/Cancellator.swift @@ -128,7 +128,7 @@ public final class Cancellator: Cancellable, Sendable { self.register(name: "\(process.arguments.joined(separator: " "))", handler: process.terminate) } - #if !os(iOS) && !os(watchOS) && !os(tvOS) + #if !canImport(Darwin) || os(macOS) public func register(_ process: Foundation.Process) -> RegistrationKey? { self.register(name: "\(process.description)", handler: process.terminate(timeout:)) } @@ -245,7 +245,7 @@ extension AsyncProcess { } } -#if !os(iOS) && !os(watchOS) && !os(tvOS) +#if !canImport(Darwin) || os(macOS) extension Foundation.Process { fileprivate func terminate(timeout: DispatchTime) { guard self.isRunning else { diff --git a/Sources/Basics/DispatchTimeInterval+Extensions.swift b/Sources/Basics/DispatchTimeInterval+Extensions.swift index 07f5be1f575..4c74b3bc61e 100644 --- a/Sources/Basics/DispatchTimeInterval+Extensions.swift +++ b/Sources/Basics/DispatchTimeInterval+Extensions.swift @@ -86,7 +86,7 @@ extension DispatchTimeInterval { return String(format: "%.2f", Double(value) / Double(1_000_000_000)) + "s" case .never: return "n/a" - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) + #if canImport(Darwin) @unknown default: return "n/a" #endif diff --git a/Sources/Basics/JSON+Extensions.swift b/Sources/Basics/JSON+Extensions.swift index 3aa38d77a71..94c35fe7442 100644 --- a/Sources/Basics/JSON+Extensions.swift +++ b/Sources/Basics/JSON+Extensions.swift @@ -15,64 +15,8 @@ import class Foundation.DateFormatter import class Foundation.JSONDecoder import class Foundation.JSONEncoder -#if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) -extension DateFormatter { - public static let iso8601: DateFormatter = { - let dateFormatter = DateFormatter() - dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ" - return dateFormatter - }() -} - -extension JSONEncoder.DateEncodingStrategy { - public static let customISO8601 = custom { - var container = $1.singleValueContainer() - try container.encode(DateFormatter.iso8601.string(from: $0)) - } -} - -extension JSONDecoder.DateDecodingStrategy { - public static let customISO8601 = custom { - let container = try $0.singleValueContainer() - let string = try container.decode(String.self) - if let date = DateFormatter.iso8601.date(from: string) { - return date - } - throw DecodingError.dataCorruptedError(in: container, debugDescription: "Invalid date: \(string)") - } -} -#endif - -extension JSONEncoder.DateEncodingStrategy { - public static var safeISO8601: JSONEncoder.DateEncodingStrategy { - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - if #available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *) { - return .iso8601 - } else { - return .customISO8601 - } - #else - return .iso8601 - #endif - } -} - -extension JSONDecoder.DateDecodingStrategy { - public static var safeISO8601: JSONDecoder.DateDecodingStrategy { - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - if #available(macOS 10.12, iOS 10.0, watchOS 3.0, tvOS 10.0, *) { - return .iso8601 - } else { - return .customISO8601 - } - #else - return .iso8601 - #endif - } -} - extension JSONDecoder { - public static func makeWithDefaults(dateDecodingStrategy: DateDecodingStrategy = .safeISO8601) -> JSONDecoder { + public static func makeWithDefaults(dateDecodingStrategy: DateDecodingStrategy = .iso8601) -> JSONDecoder { let decoder = JSONDecoder() decoder.dateDecodingStrategy = dateDecodingStrategy return decoder @@ -82,7 +26,7 @@ extension JSONDecoder { extension JSONEncoder { public static func makeWithDefaults( prettified: Bool = true, - dateEncodingStrategy: DateEncodingStrategy = .safeISO8601 + dateEncodingStrategy: DateEncodingStrategy = .iso8601 ) -> JSONEncoder { Self.makeWithDefaults( sortKeys: prettified, @@ -96,19 +40,13 @@ extension JSONEncoder { sortKeys: Bool, prettyPrint: Bool, escapeSlashes: Bool, - dateEncodingStrategy: DateEncodingStrategy = .safeISO8601 + dateEncodingStrategy: DateEncodingStrategy = .iso8601 ) -> JSONEncoder { let encoder = JSONEncoder() var outputFormatting: JSONEncoder.OutputFormatting = [] if sortKeys { - #if os(macOS) || os(iOS) || os(tvOS) || os(watchOS) - if #available(macOS 10.15, iOS 11.0, watchOS 4.0, tvOS 11.0, *) { - outputFormatting.insert(.sortedKeys) - } - #else outputFormatting.insert(.sortedKeys) - #endif } if prettyPrint { outputFormatting.insert(.prettyPrinted) diff --git a/Sources/SPMBuildCore/Plugins/DefaultPluginScriptRunner.swift b/Sources/SPMBuildCore/Plugins/DefaultPluginScriptRunner.swift index 223c60a229c..38da378e0ac 100644 --- a/Sources/SPMBuildCore/Plugins/DefaultPluginScriptRunner.swift +++ b/Sources/SPMBuildCore/Plugins/DefaultPluginScriptRunner.swift @@ -433,7 +433,7 @@ public struct DefaultPluginScriptRunner: PluginScriptRunner, Cancellable { delegate: PluginScriptRunnerDelegate, completion: @escaping (Result) -> Void ) { -#if os(iOS) || os(watchOS) || os(tvOS) +#if canImport(Darwin) && !os(macOS) callbackQueue.async { completion(.failure(DefaultPluginScriptRunnerError.pluginUnavailable(reason: "subprocess invocations are unavailable on this platform"))) } diff --git a/Sources/_InternalTestSupport/MockBuildTestHelper.swift b/Sources/_InternalTestSupport/MockBuildTestHelper.swift index 47dc0cb4e1a..5a29ebadf33 100644 --- a/Sources/_InternalTestSupport/MockBuildTestHelper.swift +++ b/Sources/_InternalTestSupport/MockBuildTestHelper.swift @@ -23,7 +23,7 @@ import XCTest public struct MockToolchain: PackageModel.Toolchain { #if os(Windows) public let librarianPath = AbsolutePath("/fake/path/to/link.exe") - #elseif os(iOS) || os(macOS) || os(tvOS) || os(watchOS) + #elseif canImport(Darwin) public let librarianPath = AbsolutePath("/fake/path/to/libtool") #else public let librarianPath = AbsolutePath("/fake/path/to/llvm-ar")