Skip to content

Commit 3800613

Browse files
committed
Require Swift 6
1 parent ed72bdd commit 3800613

File tree

4 files changed

+71
-184
lines changed

4 files changed

+71
-184
lines changed

Package.swift

+61-35
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
1-
// swift-tools-version:5.9
1+
// swift-tools-version:6.0
22

33
import PackageDescription
44

55
let package = Package(
66
name: "swift-aws-lambda-runtime",
77
platforms: [
8-
.macOS(.v12),
9-
.iOS(.v15),
10-
.tvOS(.v15),
11-
.watchOS(.v8),
8+
.macOS(.v15)
129
],
1310
products: [
1411
// this library exports `AWSLambdaRuntimeCore` and adds Foundation convenience methods
1512
.library(name: "AWSLambdaRuntime", targets: ["AWSLambdaRuntime"]),
1613
// this has all the main functionality for lambda and it does not link Foundation
1714
.library(name: "AWSLambdaRuntimeCore", targets: ["AWSLambdaRuntimeCore"]),
1815
// plugin to package the lambda, creating an archive that can be uploaded to AWS
16+
// requires Linux or at least macOS v15
1917
.plugin(name: "AWSLambdaPackager", targets: ["AWSLambdaPackager"]),
2018
// for testing only
2119
.library(name: "AWSLambdaTesting", targets: ["AWSLambdaTesting"]),
@@ -26,18 +24,26 @@ let package = Package(
2624
.package(url: "https://github.com/apple/swift-docc-plugin", from: "1.0.0"),
2725
],
2826
targets: [
29-
.target(name: "AWSLambdaRuntime", dependencies: [
30-
.byName(name: "AWSLambdaRuntimeCore"),
31-
.product(name: "NIOCore", package: "swift-nio"),
32-
.product(name: "NIOFoundationCompat", package: "swift-nio"),
33-
]),
34-
.target(name: "AWSLambdaRuntimeCore", dependencies: [
35-
.product(name: "Logging", package: "swift-log"),
36-
.product(name: "NIOHTTP1", package: "swift-nio"),
37-
.product(name: "NIOCore", package: "swift-nio"),
38-
.product(name: "NIOConcurrencyHelpers", package: "swift-nio"),
39-
.product(name: "NIOPosix", package: "swift-nio"),
40-
]),
27+
.target(
28+
name: "AWSLambdaRuntime",
29+
dependencies: [
30+
.byName(name: "AWSLambdaRuntimeCore"),
31+
.product(name: "NIOCore", package: "swift-nio"),
32+
.product(name: "NIOFoundationCompat", package: "swift-nio"),
33+
],
34+
swiftSettings: [.swiftLanguageMode(.v5)]
35+
),
36+
.target(
37+
name: "AWSLambdaRuntimeCore",
38+
dependencies: [
39+
.product(name: "Logging", package: "swift-log"),
40+
.product(name: "NIOHTTP1", package: "swift-nio"),
41+
.product(name: "NIOCore", package: "swift-nio"),
42+
.product(name: "NIOConcurrencyHelpers", package: "swift-nio"),
43+
.product(name: "NIOPosix", package: "swift-nio"),
44+
],
45+
swiftSettings: [.swiftLanguageMode(.v5)]
46+
),
4147
.plugin(
4248
name: "AWSLambdaPackager",
4349
capability: .command(
@@ -47,25 +53,45 @@ let package = Package(
4753
)
4854
)
4955
),
50-
.testTarget(name: "AWSLambdaRuntimeCoreTests", dependencies: [
51-
.byName(name: "AWSLambdaRuntimeCore"),
52-
.product(name: "NIOTestUtils", package: "swift-nio"),
53-
.product(name: "NIOFoundationCompat", package: "swift-nio"),
54-
]),
55-
.testTarget(name: "AWSLambdaRuntimeTests", dependencies: [
56-
.byName(name: "AWSLambdaRuntimeCore"),
57-
.byName(name: "AWSLambdaRuntime"),
58-
]),
56+
.testTarget(
57+
name: "AWSLambdaRuntimeCoreTests",
58+
dependencies: [
59+
.byName(name: "AWSLambdaRuntimeCore"),
60+
.product(name: "NIOTestUtils", package: "swift-nio"),
61+
.product(name: "NIOFoundationCompat", package: "swift-nio"),
62+
],
63+
swiftSettings: [.swiftLanguageMode(.v5)]
64+
),
65+
.testTarget(
66+
name: "AWSLambdaRuntimeTests",
67+
dependencies: [
68+
.byName(name: "AWSLambdaRuntimeCore"),
69+
.byName(name: "AWSLambdaRuntime"),
70+
],
71+
swiftSettings: [.swiftLanguageMode(.v5)]
72+
),
5973
// testing helper
60-
.target(name: "AWSLambdaTesting", dependencies: [
61-
.byName(name: "AWSLambdaRuntime"),
62-
.product(name: "NIO", package: "swift-nio"),
63-
]),
64-
.testTarget(name: "AWSLambdaTestingTests", dependencies: ["AWSLambdaTesting"]),
74+
.target(
75+
name: "AWSLambdaTesting",
76+
dependencies: [
77+
.byName(name: "AWSLambdaRuntime"),
78+
.product(name: "NIO", package: "swift-nio"),
79+
],
80+
swiftSettings: [.swiftLanguageMode(.v5)]
81+
),
82+
.testTarget(
83+
name: "AWSLambdaTestingTests",
84+
dependencies: ["AWSLambdaTesting"],
85+
swiftSettings: [.swiftLanguageMode(.v5)]
86+
),
6587
// for perf testing
66-
.executableTarget(name: "MockServer", dependencies: [
67-
.product(name: "NIOHTTP1", package: "swift-nio"),
68-
.product(name: "NIO", package: "swift-nio"),
69-
]),
88+
.executableTarget(
89+
name: "MockServer",
90+
dependencies: [
91+
.product(name: "NIOHTTP1", package: "swift-nio"),
92+
.product(name: "NIO", package: "swift-nio"),
93+
],
94+
swiftSettings: [.swiftLanguageMode(.v5)]
95+
),
7096
]
7197
)

[email protected]

-73
This file was deleted.

[email protected]

-73
This file was deleted.

Plugins/AWSLambdaPackager/Plugin.swift

+10-3
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import Dispatch
1616
import Foundation
1717
import PackagePlugin
18+
import Synchronization
1819

1920
#if os(macOS)
2021
import Darwin
@@ -28,6 +29,7 @@ import ucrt
2829
#error("Unsupported platform")
2930
#endif
3031

32+
@available(macOS 15.0, *)
3133
@main
3234
struct AWSLambdaPackager: CommandPlugin {
3335
func performCommand(context: PackagePlugin.PluginContext, arguments: [String]) async throws {
@@ -259,10 +261,10 @@ struct AWSLambdaPackager: CommandPlugin {
259261
print("\(executable.string) \(arguments.joined(separator: " "))")
260262
}
261263

262-
var output = ""
264+
let outputMutex = Mutex("")
263265
let outputSync = DispatchGroup()
264266
let outputQueue = DispatchQueue(label: "AWSLambdaPackager.output")
265-
let outputHandler = { (data: Data?) in
267+
let outputHandler = { @Sendable (data: Data?) in
266268
dispatchPrecondition(condition: .onQueue(outputQueue))
267269

268270
outputSync.enter()
@@ -272,7 +274,9 @@ struct AWSLambdaPackager: CommandPlugin {
272274
return
273275
}
274276

275-
output += _output + "\n"
277+
outputMutex.withLock { output in
278+
output += _output + "\n"
279+
}
276280

277281
switch logLevel {
278282
case .silent:
@@ -307,6 +311,8 @@ struct AWSLambdaPackager: CommandPlugin {
307311
// wait for output to be full processed
308312
outputSync.wait()
309313

314+
let output = outputMutex.withLock { $0 }
315+
310316
if process.terminationStatus != 0 {
311317
// print output on failure and if not already printed
312318
if logLevel < .output {
@@ -328,6 +334,7 @@ struct AWSLambdaPackager: CommandPlugin {
328334
}
329335
}
330336

337+
@available(macOS 15.0, *)
331338
private struct Configuration: CustomStringConvertible {
332339
public let outputDirectory: Path
333340
public let products: [Product]

0 commit comments

Comments
 (0)