From 75eddcb6fd619edde98922c29958dd962793c46f Mon Sep 17 00:00:00 2001 From: Stephen Parkinson Date: Mon, 12 May 2025 19:45:46 -0700 Subject: [PATCH] Update to swift 6 --- .../UserInterfaceState.xcuserstate | Bin 37021 -> 37529 bytes .../xcschemes/xcschememanagement.plist | 13 ++ Dockerfile | 4 +- Package.resolved | 126 +++++++++++------- Package.swift | 7 +- Sources/Run/main.swift | 17 ++- 6 files changed, 112 insertions(+), 55 deletions(-) diff --git a/.swiftpm/xcode/package.xcworkspace/xcuserdata/smparkin.xcuserdatad/UserInterfaceState.xcuserstate b/.swiftpm/xcode/package.xcworkspace/xcuserdata/smparkin.xcuserdatad/UserInterfaceState.xcuserstate index 1372275ccf08fca024d658f38316a7730c6660e1..057e012f9f2c1298bce6a02dd8798afb4fa9c4cf 100644 GIT binary patch literal 37529 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 Jgocq-%>a)~zlQ(- diff --git a/.swiftpm/xcode/xcuserdata/smparkin.xcuserdatad/xcschemes/xcschememanagement.plist b/.swiftpm/xcode/xcuserdata/smparkin.xcuserdatad/xcschemes/xcschememanagement.plist index 24b24c7..2546a16 100644 --- a/.swiftpm/xcode/xcuserdata/smparkin.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/.swiftpm/xcode/xcuserdata/smparkin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -10,5 +10,18 @@ 0 + SuppressBuildableAutocreation + + AppTests + + primary + + + Run + + primary + + + diff --git a/Dockerfile b/Dockerfile index f51eba7..ae028f1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,7 +1,7 @@ # ================================ # Build image # ================================ -FROM swift:5.10.1-jammy AS build +FROM swift:6.1.0-noble AS build # Install OS updates and, if needed, sqlite3 RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ @@ -42,7 +42,7 @@ RUN [ -d /build/Resources ] && { mv /build/Resources ./Resources && chmod -R a-w # ================================ # Run image # ================================ -FROM ubuntu:jammy +FROM ubuntu:noble # Make sure all system packages are up to date, and install only essential packages. RUN export DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true \ diff --git a/Package.resolved b/Package.resolved index d445bde..eff99f4 100644 --- a/Package.resolved +++ b/Package.resolved @@ -6,8 +6,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/swift-server/async-http-client.git", "state" : { - "revision" : "0ae99db85b2b9d1e79b362bd31fd1ffe492f7c47", - "version" : "1.21.2" + "revision" : "3b265e6a00fc5c3fdb8f91f773e506990c704337", + "version" : "1.26.0" } }, { @@ -15,8 +15,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/async-kit.git", "state" : { - "revision" : "7ece208cd401687641c88367a00e3ea2b04311f1", - "version" : "1.19.0" + "revision" : "e048c8ee94967e8d8a1c2ec0e1156d6f7fa34d31", + "version" : "1.20.0" } }, { @@ -24,8 +24,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/console-kit.git", "state" : { - "revision" : "9f7932f22ab6f64aafadc14491e694179b7d0f6f", - "version" : "4.14.3" + "revision" : "742f624a998cba2a9e653d9b1e91ad3f3a5dff6b", + "version" : "4.15.2" } }, { @@ -33,8 +33,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/leaf.git", "state" : { - "revision" : "0be8765af9991823c854d97faa4a97db1cfa2643", - "version" : "4.3.0" + "revision" : "d469584b9186851c5a4012d11325fb9db3207ebb", + "version" : "4.5.0" } }, { @@ -42,8 +42,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/leaf-kit.git", "state" : { - "revision" : "547e48cc5f8d98380dd8a7226ce630d3aa3b2245", - "version" : "1.10.6" + "revision" : "cf186d8f2ef33e16fd1dd78df36466c22c2e632f", + "version" : "1.13.1" } }, { @@ -51,8 +51,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/multipart-kit.git", "state" : { - "revision" : "a31236f24bfd2ea2f520a74575881f6731d7ae68", - "version" : "4.7.0" + "revision" : "3498e60218e6003894ff95192d756e238c01f44e", + "version" : "4.7.1" } }, { @@ -60,8 +60,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/routing-kit.git", "state" : { - "revision" : "8c9a227476555c55837e569be71944e02a056b72", - "version" : "4.9.1" + "revision" : "93f7222c8e195cbad39fafb5a0e4cc85a8def7ea", + "version" : "4.9.2" } }, { @@ -69,8 +69,17 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-algorithms.git", "state" : { - "revision" : "f6919dfc309e7f1b56224378b11e28bab5bccc42", - "version" : "1.2.0" + "revision" : "87e50f483c54e6efd60e885f7f5aa946cee68023", + "version" : "1.2.1" + } + }, + { + "identity" : "swift-asn1", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-asn1.git", + "state" : { + "revision" : "a54383ada6cecde007d374f58f864e29370ba5c3", + "version" : "1.3.2" } }, { @@ -87,8 +96,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-collections.git", "state" : { - "revision" : "ee97538f5b81ae89698fd95938896dec5217b148", - "version" : "1.1.1" + "revision" : "671108c96644956dddcd89dd59c203dcdb36cec7", + "version" : "1.1.4" } }, { @@ -96,17 +105,35 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-crypto.git", "state" : { - "revision" : "46072478ca365fe48370993833cb22de9b41567f", - "version" : "3.5.2" + "revision" : "e8d6eba1fef23ae5b359c46b03f7d94be2f41fed", + "version" : "3.12.3" + } + }, + { + "identity" : "swift-distributed-tracing", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-distributed-tracing.git", + "state" : { + "revision" : "a64a0abc2530f767af15dd88dda7f64d5f1ff9de", + "version" : "1.2.0" + } + }, + { + "identity" : "swift-http-structured-headers", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-http-structured-headers.git", + "state" : { + "revision" : "f280fc7676b9940ff2c6598642751ea333c6544f", + "version" : "1.2.2" } }, { "identity" : "swift-http-types", "kind" : "remoteSourceControl", - "location" : "https://github.com/apple/swift-http-types", + "location" : "https://github.com/apple/swift-http-types.git", "state" : { - "revision" : "1ddbea1ee34354a6a2532c60f98501c35ae8edfa", - "version" : "1.2.0" + "revision" : "a0a57e949a8903563aba4615869310c0ebf14c03", + "version" : "1.4.0" } }, { @@ -114,8 +141,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-log.git", "state" : { - "revision" : "9cb486020ebf03bfa5b5df985387a14a98744537", - "version" : "1.6.1" + "revision" : "3d8596ed08bd13520157f0355e35caed215ffbfa", + "version" : "1.6.3" } }, { @@ -123,8 +150,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-metrics.git", "state" : { - "revision" : "e0165b53d49b413dd987526b641e05e246782685", - "version" : "2.5.0" + "revision" : "4c83e1cdf4ba538ef6e43a9bbd0bcc33a0ca46e3", + "version" : "2.7.0" } }, { @@ -132,8 +159,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio.git", "state" : { - "revision" : "fc79798d5a150d61361a27ce0c51169b889e23de", - "version" : "2.68.0" + "revision" : "34d486b01cd891297ac615e40d5999536a1e138d", + "version" : "2.83.0" } }, { @@ -141,8 +168,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-extras.git", "state" : { - "revision" : "05c36b57453d23ea63785d58a7dbc7b70ba1745e", - "version" : "1.23.0" + "revision" : "f1f6f772198bee35d99dd145f1513d8581a54f2c", + "version" : "1.26.0" } }, { @@ -150,8 +177,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-http2.git", "state" : { - "revision" : "a0224f3d20438635dd59c9fcc593520d80d131d0", - "version" : "1.33.0" + "revision" : "4281466512f63d1bd530e33f4aa6993ee7864be0", + "version" : "1.36.0" } }, { @@ -159,8 +186,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-ssl.git", "state" : { - "revision" : "2b09805797f21c380f7dc9bedaab3157c5508efb", - "version" : "2.27.0" + "revision" : "4b38f35946d00d8f6176fe58f96d83aba64b36c7", + "version" : "2.31.0" } }, { @@ -168,8 +195,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio-transport-services.git", "state" : { - "revision" : "38ac8221dd20674682148d6451367f89c2652980", - "version" : "1.21.0" + "revision" : "cd1e89816d345d2523b11c55654570acd5cd4c56", + "version" : "1.24.0" } }, { @@ -177,8 +204,17 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-numerics.git", "state" : { - "revision" : "0a5bc04095a675662cf24757cc0640aa2204253b", - "version" : "1.0.2" + "revision" : "e0ec0f5f3af6f3e4d5e7a19d2af26b481acb6ba8", + "version" : "1.0.3" + } + }, + { + "identity" : "swift-service-context", + "kind" : "remoteSourceControl", + "location" : "https://github.com/apple/swift-service-context.git", + "state" : { + "revision" : "8946c930cae601452149e45d31d8ddfac973c3c7", + "version" : "1.2.0" } }, { @@ -186,8 +222,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-system.git", "state" : { - "revision" : "6a9e38e7bd22a3b8ba80bddf395623cf68f57807", - "version" : "1.3.1" + "revision" : "a34201439c74b53f0fd71ef11741af7e7caf01e1", + "version" : "1.4.2" } }, { @@ -195,8 +231,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/vapor.git", "state" : { - "revision" : "ebbe71c89aa1b76a0920277760b12be7a2ec7c70", - "version" : "4.102.0" + "revision" : "87b0edd2633c35de543cb7573efe5fbf456181bc", + "version" : "4.114.1" } }, { @@ -204,8 +240,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/vapor/websocket-kit.git", "state" : { - "revision" : "4232d34efa49f633ba61afde365d3896fc7f8740", - "version" : "2.15.0" + "revision" : "8666c92dbbb3c8eefc8008c9c8dcf50bfd302167", + "version" : "2.16.1" } } ], diff --git a/Package.swift b/Package.swift index 3551ca9..ded15b9 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.10 +// swift-tools-version:6.1.0 import PackageDescription let package = Package( @@ -7,8 +7,8 @@ let package = Package( .macOS(.v13) ], dependencies: [ - .package(url: "https://github.com/vapor/vapor.git", .upToNextMajor(from: "4.92.1")), - .package(url: "https://github.com/vapor/leaf.git", .upToNextMajor(from: "4.3.0")), + .package(url: "https://github.com/vapor/vapor.git", .upToNextMajor(from: "4.114.0")), + .package(url: "https://github.com/vapor/leaf.git", .upToNextMajor(from: "4.5.0")), ], targets: [ .target( @@ -36,4 +36,3 @@ let package = Package( ) ] ) - diff --git a/Sources/Run/main.swift b/Sources/Run/main.swift index 373be5f..7820142 100644 --- a/Sources/Run/main.swift +++ b/Sources/Run/main.swift @@ -1,9 +1,18 @@ import App import Vapor +import Logging var env = try Environment.detect() try LoggingSystem.bootstrap(from: &env) -let app = Application(env) -defer { app.shutdown() } -try configure(app) -try app.run() +let app = try await Application.make(env) + +do { + try configure(app) + try await app.execute() +} catch { + app.logger.report(error: error) + try? await app.asyncShutdown() + throw error +} + +try await app.asyncShutdown()