Build Information
Successful build of SwiftUPnP, reference v1.1.0 (ca29e2
), with Swift 6.1 for macOS (SPM) on 28 Apr 2025 03:00:00 UTC.
Swift 6 data race errors: 3
Build Command
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Build Log
========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/katoemba/SwiftUPnP.git
Reference: v1.1.0
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/katoemba/SwiftUPnP
* tag v1.1.0 -> FETCH_HEAD
HEAD is now at ca29e25 Updated to swift tools version 5.9.
Cloned https://github.com/katoemba/SwiftUPnP.git
Revision (git rev-parse @):
ca29e25e0604c87009768d73a8e8490796054831
SUCCESS checkout https://github.com/katoemba/SwiftUPnP.git at v1.1.0
Fetching https://github.com/httpswift/swifter
[1/6050] Fetching swifter
Fetched https://github.com/httpswift/swifter from cache (1.42s)
Fetching https://github.com/robbiehanson/CocoaAsyncSocket
[1/6425] Fetching cocoaasyncsocket
Fetched https://github.com/robbiehanson/CocoaAsyncSocket from cache (1.21s)
Fetching https://github.com/CoreOffice/XMLCoder.git
[1/10011] Fetching xmlcoder
Fetched https://github.com/CoreOffice/XMLCoder.git from cache (1.13s)
Computing version for https://github.com/CoreOffice/XMLCoder.git
Computed https://github.com/CoreOffice/XMLCoder.git at 0.15.0 (1.74s)
Creating working copy for https://github.com/CoreOffice/XMLCoder.git
Working copy of https://github.com/CoreOffice/XMLCoder.git resolved at 0.15.0
Creating working copy for https://github.com/robbiehanson/CocoaAsyncSocket
Working copy of https://github.com/robbiehanson/CocoaAsyncSocket resolved at master (5ddba5e)
Creating working copy for https://github.com/httpswift/swifter
Working copy of https://github.com/httpswift/swifter resolved at stable (1e4f51c)
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"dependencies": [
{
"identity": "swiftupnp",
"name": "SwiftUPnP",
"url": "https://github.com/katoemba/SwiftUPnP.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/SwiftUPnP",
"dependencies": [
{
"identity": "xmlcoder",
"name": "XMLCoder",
"url": "https://github.com/CoreOffice/XMLCoder.git",
"version": "0.17.1",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/XMLCoder",
"dependencies": [
]
},
{
"identity": "swifter",
"name": "Swifter",
"url": "https://github.com/httpswift/swifter",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/swifter",
"dependencies": [
]
},
{
"identity": "cocoaasyncsocket",
"name": "CocoaAsyncSocket",
"url": "https://github.com/robbiehanson/CocoaAsyncSocket",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/CocoaAsyncSocket",
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/katoemba/SwiftUPnP.git
[1/531] Fetching swiftupnp
Fetched https://github.com/katoemba/SwiftUPnP.git from cache (0.85s)
Fetching https://github.com/httpswift/swifter from cache
Fetched https://github.com/httpswift/swifter from cache (0.43s)
Fetching https://github.com/robbiehanson/CocoaAsyncSocket from cache
Fetched https://github.com/robbiehanson/CocoaAsyncSocket from cache (0.51s)
Fetching https://github.com/CoreOffice/XMLCoder.git from cache
Fetched https://github.com/CoreOffice/XMLCoder.git from cache (0.45s)
Computing version for https://github.com/CoreOffice/XMLCoder.git
Computed https://github.com/CoreOffice/XMLCoder.git at 0.17.1 (0.50s)
Creating working copy for https://github.com/katoemba/SwiftUPnP.git
Working copy of https://github.com/katoemba/SwiftUPnP.git resolved at v1.1.0 (ca29e25)
Creating working copy for https://github.com/CoreOffice/XMLCoder.git
Working copy of https://github.com/CoreOffice/XMLCoder.git resolved at 0.17.1
Creating working copy for https://github.com/httpswift/swifter
Working copy of https://github.com/httpswift/swifter resolved at stable (1e4f51c)
Creating working copy for https://github.com/robbiehanson/CocoaAsyncSocket
Working copy of https://github.com/robbiehanson/CocoaAsyncSocket resolved at master (5ddba5e)
Found 3 product dependencies
- XMLCoder
- Swifter
- CocoaAsyncSocket
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/katoemba/SwiftUPnP.git
https://github.com/katoemba/SwiftUPnP.git
{
"dependencies" : [
{
"identity" : "xmlcoder",
"requirement" : {
"range" : [
{
"lower_bound" : "0.13.1",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/CoreOffice/XMLCoder.git"
},
{
"identity" : "swifter",
"requirement" : {
"branch" : [
"stable"
]
},
"type" : "sourceControl",
"url" : "https://github.com/httpswift/swifter"
},
{
"identity" : "cocoaasyncsocket",
"requirement" : {
"branch" : [
"master"
]
},
"type" : "sourceControl",
"url" : "https://github.com/robbiehanson/CocoaAsyncSocket"
}
],
"manifest_display_name" : "SwiftUPnP",
"name" : "SwiftUPnP",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "10.0"
}
],
"products" : [
{
"name" : "SwiftUPnP",
"targets" : [
"SwiftUPnP"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "UPnPCodeGenerator",
"targets" : [
"UPnPCodeGenerator"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "UPnPCodeGenerator",
"module_type" : "SwiftTarget",
"name" : "UPnPCodeGenerator",
"path" : "CodeGenerator",
"product_dependencies" : [
"XMLCoder"
],
"product_memberships" : [
"UPnPCodeGenerator"
],
"sources" : [
"ServiceDefinition.swift",
"SourceGenerator.swift",
"main.swift"
],
"type" : "executable"
},
{
"c99name" : "SwiftUPnP",
"module_type" : "SwiftTarget",
"name" : "SwiftUPnP",
"path" : "Source",
"product_dependencies" : [
"XMLCoder",
"Swifter",
"CocoaAsyncSocket"
],
"product_memberships" : [
"SwiftUPnP"
],
"sources" : [
"Profiles/AV Profile/AVTransport1Service.swift",
"Profiles/AV Profile/ConnectionManager1Service.swift",
"Profiles/AV Profile/ContentDirectory1Service+DIDL.swift",
"Profiles/AV Profile/ContentDirectory1Service.swift",
"Profiles/AV Profile/RenderingControl1Service.swift",
"Profiles/OpenHome Profile/OpenHomeConfig1Service.swift",
"Profiles/OpenHome Profile/OpenHomeCredentials1Service.swift",
"Profiles/OpenHome Profile/OpenHomeInfo1Service.swift",
"Profiles/OpenHome Profile/OpenHomePins1Service.swift",
"Profiles/OpenHome Profile/OpenHomePlaylist1Service+DIDL.swift",
"Profiles/OpenHome Profile/OpenHomePlaylist1Service.swift",
"Profiles/OpenHome Profile/OpenHomePlaylistManager1Service.swift",
"Profiles/OpenHome Profile/OpenHomeProduct1Service.swift",
"Profiles/OpenHome Profile/OpenHomeProduct2Service.swift",
"Profiles/OpenHome Profile/OpenHomeRadio1Service.swift",
"Profiles/OpenHome Profile/OpenHomeReceiver1Service.swift",
"Profiles/OpenHome Profile/OpenHomeSender1Service.swift",
"Profiles/OpenHome Profile/OpenHomeTime1Service.swift",
"Profiles/OpenHome Profile/OpenHomeTransport1Service.swift",
"Profiles/OpenHome Profile/OpenHomeVolume1Service.swift",
"Profiles/OpenHome Profile/OpenHomeVolume2Service.swift",
"SSDP/SSDPCocoaAsyncSocketDiscovery.swift",
"SSDP/SSDPDiscovery.swift",
"SSDP/SSDPNetworkDiscovery.swift",
"SSDP/UserAgentGenerator.swift",
"Support/IPHelper.swift",
"Support/XMLParserSupport.swift",
"UPnP/UPnPDevice.swift",
"UPnP/UPnPDeviceDefinition.swift",
"UPnP/UPnPRegistry.swift",
"UPnP/UPnPService.swift",
"UPnP/UPnPServiceDefinition.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/11] Write sources
[2/11] Write UPnPCodeGenerator-entitlement.plist
[5/11] Write swift-version-2F0A5646E1D333AE.txt
[6/76] Compiling CocoaAsyncSocket GCDAsyncUdpSocket.m
[7/76] Compiling CocoaAsyncSocket GCDAsyncSocket.m
[9/76] Emitting module XMLCoder
[10/81] Compiling XMLCoder XMLDecoder.swift
[11/81] Compiling XMLCoder XMLDecoderImplementation.swift
[12/81] Compiling XMLCoder XMLDecodingStorage.swift
[13/81] Compiling XMLCoder XMLKeyedDecodingContainer.swift
[14/81] Compiling XMLCoder XMLUnkeyedDecodingContainer.swift
[15/81] Compiling XMLCoder DynamicNodeEncoding.swift
[16/81] Compiling XMLCoder EncodingErrorExtension.swift
[17/81] Compiling XMLCoder SingleValueEncodingContainer.swift
[18/81] Compiling XMLCoder XMLChoiceEncodingContainer.swift
[19/81] Compiling XMLCoder XMLEncoder.swift
[20/81] Compiling XMLCoder XMLChoiceCodingKey.swift
[21/81] Compiling XMLCoder XMLCoderElement.swift
[22/81] Compiling XMLCoder XMLDocumentType.swift
[23/81] Compiling XMLCoder XMLHeader.swift
[24/81] Compiling XMLCoder XMLKey.swift
[25/81] Compiling XMLCoder XMLStackParser.swift
[26/81] Compiling XMLCoder DecodingErrorExtension.swift
[27/81] Compiling XMLCoder DynamicNodeDecoding.swift
[28/81] Compiling XMLCoder SingleValueDecodingContainer.swift
[29/81] Compiling XMLCoder XMLChoiceDecodingContainer.swift
[30/81] Compiling XMLCoder XMLEncoderImplementation.swift
[31/81] Compiling XMLCoder XMLEncodingStorage.swift
[32/81] Compiling XMLCoder XMLKeyedEncodingContainer.swift
[33/81] Compiling XMLCoder XMLReferencingEncoder.swift
[34/81] Compiling XMLCoder XMLUnkeyedEncodingContainer.swift
[35/81] Compiling XMLCoder Element.swift
[36/81] Compiling XMLCoder KeyedBox.swift
[37/81] Compiling XMLCoder FloatBox.swift
[38/81] Compiling XMLCoder IntBox.swift
[39/81] Compiling XMLCoder UnkeyedBox.swift
[40/81] Compiling XMLCoder ValueBox.swift
[41/81] Compiling XMLCoder DataBox.swift
[42/81] Compiling XMLCoder DateBox.swift
[43/81] Compiling XMLCoder NullBox.swift
[44/81] Compiling XMLCoder SharedBox.swift
[48/83] Compiling Swifter String+SHA1.swift
[49/83] Compiling Swifter WebSockets.swift
[50/83] Compiling XMLCoder ElementAndAttribute.swift
[51/83] Compiling XMLCoder ISO8601DateFormatter.swift
[52/83] Compiling XMLCoder KeyedStorage.swift
[53/83] Compiling XMLCoder Metatypes.swift
[54/83] Compiling XMLCoder String+Extensions.swift
[55/83] Emitting module Swifter
[56/83] Compiling XMLCoder Box.swift
[57/83] Compiling XMLCoder ChoiceBox.swift
[58/83] Compiling XMLCoder UIntBox.swift
[59/83] Compiling XMLCoder URLBox.swift
[60/83] Compiling XMLCoder DecimalBox.swift
[61/83] Compiling XMLCoder DoubleBox.swift
[62/83] Compiling XMLCoder Attribute.swift
[63/83] Compiling XMLCoder BoolBox.swift
[81/117] Compiling UPnPCodeGenerator main.swift
[82/117] Compiling UPnPCodeGenerator SourceGenerator.swift
[83/117] Emitting module UPnPCodeGenerator
[84/117] Compiling UPnPCodeGenerator ServiceDefinition.swift
[84/117] Write Objects.LinkFileList
[85/117] Linking UPnPCodeGenerator
[86/117] Applying UPnPCodeGenerator
[88/117] Compiling SwiftUPnP XMLParserSupport.swift
[89/117] Compiling SwiftUPnP UPnPDevice.swift
[90/117] Compiling SwiftUPnP UPnPDeviceDefinition.swift
[91/120] Compiling SwiftUPnP OpenHomeVolume2Service.swift
[92/120] Compiling SwiftUPnP SSDPCocoaAsyncSocketDiscovery.swift
[93/120] Compiling SwiftUPnP SSDPDiscovery.swift
[94/120] Compiling SwiftUPnP UPnPRegistry.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:33:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'UPnPRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
30 | import os.log
31 |
32 | public class UPnPRegistry {
| `- note: class 'UPnPRegistry' does not conform to the 'Sendable' protocol
33 | public static let shared = UPnPRegistry()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'UPnPRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 |
35 | // Use CocoaAsyncSocket discovery for SSDP, as the standard network framework doesn't support when
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:49:23: warning: static property 'defaultSubscriptionTimeout' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
47 | }
48 |
49 | public static var defaultSubscriptionTimeout = 120
| |- warning: static property 'defaultSubscriptionTimeout' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultSubscriptionTimeout' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultSubscriptionTimeout' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 |
51 | public let controlUrl: URL
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:86:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
84 |
85 | public func startDiscovery() throws {
86 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
87 | await startHTTPServerIfNotRunning()
| `- note: closure captures 'self' which is accessible to code in the current task
88 | try discoveryEngine.startDiscovery(forTypes: types)
89 | discoveryEngine.searchRequest()
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:87:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
85 | public func startDiscovery() throws {
86 | Task {
87 | await startHTTPServerIfNotRunning()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startHTTPServerIfNotRunning()' risks causing data races between main actor-isolated and local nonisolated uses
88 | try discoveryEngine.startDiscovery(forTypes: types)
| `- note: access can happen concurrently
89 | discoveryEngine.searchRequest()
90 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:94:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
92 |
93 | public func stopDiscovery() {
94 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
95 | await stopHTTPServer()
| `- note: closure captures 'self' which is accessible to code in the current task
96 | await MainActor.run {
97 | devices.removeAll(keepingCapacity: false)
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:95:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
93 | public func stopDiscovery() {
94 | Task {
95 | await stopHTTPServer()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'stopHTTPServer()' risks causing data races between main actor-isolated and local nonisolated uses
96 | await MainActor.run {
| `- note: access can happen concurrently
97 | devices.removeAll(keepingCapacity: false)
98 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:161:35: warning: sending 'service' risks causing data races; this is an error in the Swift 6 language mode
159 | guard let service = typedService(device: device, serviceUrn: deviceService.serviceType) else { continue }
160 |
161 | await service.loadScdp()
| |- warning: sending 'service' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'service' to nonisolated instance method 'loadScdp()' risks causing data races between nonisolated and main actor-isolated uses
162 | device.add(service)
163 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:247:24: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
245 | (response as? HTTPURLResponse)?.statusCode ?? 0 <= 204 else {
246 | Logger.swiftUPnP.error("\(type) failed, status = \((response as? HTTPURLResponse)?.statusCode ?? -1)")
247 | await self.setSubcriptionStatus(.failed, subscriptionId: nil)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'setSubcriptionStatus(_:subscriptionId:)' risks causing data races between main actor-isolated and local nonisolated uses
248 | await self.subscribeToEvents()
| `- note: access can happen concurrently
249 | return
250 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:260:31: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
258 | Logger.swiftUPnP.debug("Will renew sid: \(subscriptionId) at: \(Date(timeIntervalSinceNow: Double(timeout - 10)))")
259 | DispatchQueue.main.asyncAfter(deadline: DispatchTime.now().advanced(by: .seconds(timeout - 10))) { [weak self] in
260 | guard let self else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
261 | Task {
262 | await self.renewSubscriptionToEvents()
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:211:21: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
209 | public func subscribeToEvents() async {
210 | guard let eventUrl = eventUrl, let eventCallbackUrl = eventCallbackUrl else { return }
211 | guard await startSubcribing() else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startSubcribing()' risks causing data races between main actor-isolated and local nonisolated uses
212 |
213 | var request = URLRequest(url: eventUrl)
:
218 | request.setValue("Second-\(Self.defaultSubscriptionTimeout)", forHTTPHeaderField: "TIMEOUT")
219 |
220 | await subscribeOrRenew(request: request, type: "subscribed")
| `- note: access can happen concurrently
221 | }
222 |
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:224:67: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
222 |
223 | internal func renewSubscriptionToEvents() async {
224 | guard let eventUrl = eventUrl, let subscriptionId = await startRenewing() else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startRenewing()' risks causing data races between main actor-isolated and local nonisolated uses
225 |
226 | var request = URLRequest(url: eventUrl)
:
230 | request.setValue("Second-\(Self.defaultSubscriptionTimeout)", forHTTPHeaderField: "TIMEOUT")
231 |
232 | await subscribeOrRenew(request: request, type: "renewed")
| `- note: access can happen concurrently
233 | }
234 |
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:273:46: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
271 |
272 | public func unsubscribeFromEvents() async {
273 | guard let eventUrl = eventUrl, await startUnubcribing() else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startUnubcribing()' risks causing data races between main actor-isolated and local nonisolated uses
274 |
275 | var request = URLRequest(url: eventUrl)
276 | request.httpMethod = "UNSUBSCRIBE"
277 | request.setValue("text/xml", forHTTPHeaderField: "Content-Type")
278 | request.setValue(subscriptionId, forHTTPHeaderField: "SID")
| `- note: access can happen concurrently
279 |
280 | guard let (_, response) = try? await URLSession.shared.data(for: request),
[95/120] Compiling SwiftUPnP UPnPService.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:33:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'UPnPRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
30 | import os.log
31 |
32 | public class UPnPRegistry {
| `- note: class 'UPnPRegistry' does not conform to the 'Sendable' protocol
33 | public static let shared = UPnPRegistry()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'UPnPRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 |
35 | // Use CocoaAsyncSocket discovery for SSDP, as the standard network framework doesn't support when
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:49:23: warning: static property 'defaultSubscriptionTimeout' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
47 | }
48 |
49 | public static var defaultSubscriptionTimeout = 120
| |- warning: static property 'defaultSubscriptionTimeout' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultSubscriptionTimeout' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultSubscriptionTimeout' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 |
51 | public let controlUrl: URL
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:86:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
84 |
85 | public func startDiscovery() throws {
86 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
87 | await startHTTPServerIfNotRunning()
| `- note: closure captures 'self' which is accessible to code in the current task
88 | try discoveryEngine.startDiscovery(forTypes: types)
89 | discoveryEngine.searchRequest()
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:87:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
85 | public func startDiscovery() throws {
86 | Task {
87 | await startHTTPServerIfNotRunning()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startHTTPServerIfNotRunning()' risks causing data races between main actor-isolated and local nonisolated uses
88 | try discoveryEngine.startDiscovery(forTypes: types)
| `- note: access can happen concurrently
89 | discoveryEngine.searchRequest()
90 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:94:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
92 |
93 | public func stopDiscovery() {
94 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
95 | await stopHTTPServer()
| `- note: closure captures 'self' which is accessible to code in the current task
96 | await MainActor.run {
97 | devices.removeAll(keepingCapacity: false)
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:95:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
93 | public func stopDiscovery() {
94 | Task {
95 | await stopHTTPServer()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'stopHTTPServer()' risks causing data races between main actor-isolated and local nonisolated uses
96 | await MainActor.run {
| `- note: access can happen concurrently
97 | devices.removeAll(keepingCapacity: false)
98 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:161:35: warning: sending 'service' risks causing data races; this is an error in the Swift 6 language mode
159 | guard let service = typedService(device: device, serviceUrn: deviceService.serviceType) else { continue }
160 |
161 | await service.loadScdp()
| |- warning: sending 'service' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'service' to nonisolated instance method 'loadScdp()' risks causing data races between nonisolated and main actor-isolated uses
162 | device.add(service)
163 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:247:24: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
245 | (response as? HTTPURLResponse)?.statusCode ?? 0 <= 204 else {
246 | Logger.swiftUPnP.error("\(type) failed, status = \((response as? HTTPURLResponse)?.statusCode ?? -1)")
247 | await self.setSubcriptionStatus(.failed, subscriptionId: nil)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'setSubcriptionStatus(_:subscriptionId:)' risks causing data races between main actor-isolated and local nonisolated uses
248 | await self.subscribeToEvents()
| `- note: access can happen concurrently
249 | return
250 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:260:31: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
258 | Logger.swiftUPnP.debug("Will renew sid: \(subscriptionId) at: \(Date(timeIntervalSinceNow: Double(timeout - 10)))")
259 | DispatchQueue.main.asyncAfter(deadline: DispatchTime.now().advanced(by: .seconds(timeout - 10))) { [weak self] in
260 | guard let self else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
261 | Task {
262 | await self.renewSubscriptionToEvents()
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:211:21: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
209 | public func subscribeToEvents() async {
210 | guard let eventUrl = eventUrl, let eventCallbackUrl = eventCallbackUrl else { return }
211 | guard await startSubcribing() else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startSubcribing()' risks causing data races between main actor-isolated and local nonisolated uses
212 |
213 | var request = URLRequest(url: eventUrl)
:
218 | request.setValue("Second-\(Self.defaultSubscriptionTimeout)", forHTTPHeaderField: "TIMEOUT")
219 |
220 | await subscribeOrRenew(request: request, type: "subscribed")
| `- note: access can happen concurrently
221 | }
222 |
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:224:67: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
222 |
223 | internal func renewSubscriptionToEvents() async {
224 | guard let eventUrl = eventUrl, let subscriptionId = await startRenewing() else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startRenewing()' risks causing data races between main actor-isolated and local nonisolated uses
225 |
226 | var request = URLRequest(url: eventUrl)
:
230 | request.setValue("Second-\(Self.defaultSubscriptionTimeout)", forHTTPHeaderField: "TIMEOUT")
231 |
232 | await subscribeOrRenew(request: request, type: "renewed")
| `- note: access can happen concurrently
233 | }
234 |
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:273:46: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
271 |
272 | public func unsubscribeFromEvents() async {
273 | guard let eventUrl = eventUrl, await startUnubcribing() else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startUnubcribing()' risks causing data races between main actor-isolated and local nonisolated uses
274 |
275 | var request = URLRequest(url: eventUrl)
276 | request.httpMethod = "UNSUBSCRIBE"
277 | request.setValue("text/xml", forHTTPHeaderField: "Content-Type")
278 | request.setValue(subscriptionId, forHTTPHeaderField: "SID")
| `- note: access can happen concurrently
279 |
280 | guard let (_, response) = try? await URLSession.shared.data(for: request),
[96/120] Compiling SwiftUPnP UPnPServiceDefinition.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:33:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'UPnPRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
30 | import os.log
31 |
32 | public class UPnPRegistry {
| `- note: class 'UPnPRegistry' does not conform to the 'Sendable' protocol
33 | public static let shared = UPnPRegistry()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'UPnPRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 |
35 | // Use CocoaAsyncSocket discovery for SSDP, as the standard network framework doesn't support when
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:49:23: warning: static property 'defaultSubscriptionTimeout' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
47 | }
48 |
49 | public static var defaultSubscriptionTimeout = 120
| |- warning: static property 'defaultSubscriptionTimeout' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultSubscriptionTimeout' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultSubscriptionTimeout' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 |
51 | public let controlUrl: URL
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:86:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
84 |
85 | public func startDiscovery() throws {
86 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
87 | await startHTTPServerIfNotRunning()
| `- note: closure captures 'self' which is accessible to code in the current task
88 | try discoveryEngine.startDiscovery(forTypes: types)
89 | discoveryEngine.searchRequest()
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:87:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
85 | public func startDiscovery() throws {
86 | Task {
87 | await startHTTPServerIfNotRunning()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startHTTPServerIfNotRunning()' risks causing data races between main actor-isolated and local nonisolated uses
88 | try discoveryEngine.startDiscovery(forTypes: types)
| `- note: access can happen concurrently
89 | discoveryEngine.searchRequest()
90 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:94:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
92 |
93 | public func stopDiscovery() {
94 | Task {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
95 | await stopHTTPServer()
| `- note: closure captures 'self' which is accessible to code in the current task
96 | await MainActor.run {
97 | devices.removeAll(keepingCapacity: false)
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:95:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
93 | public func stopDiscovery() {
94 | Task {
95 | await stopHTTPServer()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'stopHTTPServer()' risks causing data races between main actor-isolated and local nonisolated uses
96 | await MainActor.run {
| `- note: access can happen concurrently
97 | devices.removeAll(keepingCapacity: false)
98 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:161:35: warning: sending 'service' risks causing data races; this is an error in the Swift 6 language mode
159 | guard let service = typedService(device: device, serviceUrn: deviceService.serviceType) else { continue }
160 |
161 | await service.loadScdp()
| |- warning: sending 'service' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'service' to nonisolated instance method 'loadScdp()' risks causing data races between nonisolated and main actor-isolated uses
162 | device.add(service)
163 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:247:24: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
245 | (response as? HTTPURLResponse)?.statusCode ?? 0 <= 204 else {
246 | Logger.swiftUPnP.error("\(type) failed, status = \((response as? HTTPURLResponse)?.statusCode ?? -1)")
247 | await self.setSubcriptionStatus(.failed, subscriptionId: nil)
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'setSubcriptionStatus(_:subscriptionId:)' risks causing data races between main actor-isolated and local nonisolated uses
248 | await self.subscribeToEvents()
| `- note: access can happen concurrently
249 | return
250 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:260:31: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
258 | Logger.swiftUPnP.debug("Will renew sid: \(subscriptionId) at: \(Date(timeIntervalSinceNow: Double(timeout - 10)))")
259 | DispatchQueue.main.asyncAfter(deadline: DispatchTime.now().advanced(by: .seconds(timeout - 10))) { [weak self] in
260 | guard let self else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
261 | Task {
262 | await self.renewSubscriptionToEvents()
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:211:21: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
209 | public func subscribeToEvents() async {
210 | guard let eventUrl = eventUrl, let eventCallbackUrl = eventCallbackUrl else { return }
211 | guard await startSubcribing() else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startSubcribing()' risks causing data races between main actor-isolated and local nonisolated uses
212 |
213 | var request = URLRequest(url: eventUrl)
:
218 | request.setValue("Second-\(Self.defaultSubscriptionTimeout)", forHTTPHeaderField: "TIMEOUT")
219 |
220 | await subscribeOrRenew(request: request, type: "subscribed")
| `- note: access can happen concurrently
221 | }
222 |
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:224:67: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
222 |
223 | internal func renewSubscriptionToEvents() async {
224 | guard let eventUrl = eventUrl, let subscriptionId = await startRenewing() else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startRenewing()' risks causing data races between main actor-isolated and local nonisolated uses
225 |
226 | var request = URLRequest(url: eventUrl)
:
230 | request.setValue("Second-\(Self.defaultSubscriptionTimeout)", forHTTPHeaderField: "TIMEOUT")
231 |
232 | await subscribeOrRenew(request: request, type: "renewed")
| `- note: access can happen concurrently
233 | }
234 |
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:273:46: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
271 |
272 | public func unsubscribeFromEvents() async {
273 | guard let eventUrl = eventUrl, await startUnubcribing() else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self' to main actor-isolated instance method 'startUnubcribing()' risks causing data races between main actor-isolated and local nonisolated uses
274 |
275 | var request = URLRequest(url: eventUrl)
276 | request.httpMethod = "UNSUBSCRIBE"
277 | request.setValue("text/xml", forHTTPHeaderField: "Content-Type")
278 | request.setValue(subscriptionId, forHTTPHeaderField: "SID")
| `- note: access can happen concurrently
279 |
280 | guard let (_, response) = try? await URLSession.shared.data(for: request),
[97/120] Compiling SwiftUPnP SSDPNetworkDiscovery.swift
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPNetworkDiscovery.swift:50:17: warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | import os.log
31 |
32 | class SSDPNetworkDiscovery: SSDPDiscovery {
| `- note: class 'SSDPNetworkDiscovery' does not conform to the 'Sendable' protocol
33 | private var multicastGroup: NWMulticastGroup?
34 | private var connectionGroup: NWConnectionGroup?
:
48 | Logger.swiftUPnP.error("\(error.localizedDescription)")
49 | case .cancelled:
50 | self?.multicastGroup = nil
| `- warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
51 | self?.connectionGroup = nil
52 | default:
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPNetworkDiscovery.swift:58:17: warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery' in a '@Sendable' closure
30 | import os.log
31 |
32 | class SSDPNetworkDiscovery: SSDPDiscovery {
| `- note: class 'SSDPNetworkDiscovery' does not conform to the 'Sendable' protocol
33 | private var multicastGroup: NWMulticastGroup?
34 | private var connectionGroup: NWConnectionGroup?
:
56 | connectionGroup.setReceiveHandler(maximumMessageSize: 65535, rejectOversizedMessages: true) { (message, content, isComplete) in
57 | if let content = content {
58 | self.processData(content)
| `- warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery' in a '@Sendable' closure
59 | }
60 | }
/Users/admin/builder/spi-builder-workspace/Source/Support/IPHelper.swift:134:24: warning: static property 'subsystem' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
132 |
133 | extension Logger {
134 | private static var subsystem = Bundle.main.bundleIdentifier!
| |- warning: static property 'subsystem' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'subsystem' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'subsystem' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
135 |
136 | /// Logs the view cycles like viewDidLoad.
[98/120] Compiling SwiftUPnP UserAgentGenerator.swift
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPNetworkDiscovery.swift:50:17: warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | import os.log
31 |
32 | class SSDPNetworkDiscovery: SSDPDiscovery {
| `- note: class 'SSDPNetworkDiscovery' does not conform to the 'Sendable' protocol
33 | private var multicastGroup: NWMulticastGroup?
34 | private var connectionGroup: NWConnectionGroup?
:
48 | Logger.swiftUPnP.error("\(error.localizedDescription)")
49 | case .cancelled:
50 | self?.multicastGroup = nil
| `- warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
51 | self?.connectionGroup = nil
52 | default:
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPNetworkDiscovery.swift:58:17: warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery' in a '@Sendable' closure
30 | import os.log
31 |
32 | class SSDPNetworkDiscovery: SSDPDiscovery {
| `- note: class 'SSDPNetworkDiscovery' does not conform to the 'Sendable' protocol
33 | private var multicastGroup: NWMulticastGroup?
34 | private var connectionGroup: NWConnectionGroup?
:
56 | connectionGroup.setReceiveHandler(maximumMessageSize: 65535, rejectOversizedMessages: true) { (message, content, isComplete) in
57 | if let content = content {
58 | self.processData(content)
| `- warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery' in a '@Sendable' closure
59 | }
60 | }
/Users/admin/builder/spi-builder-workspace/Source/Support/IPHelper.swift:134:24: warning: static property 'subsystem' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
132 |
133 | extension Logger {
134 | private static var subsystem = Bundle.main.bundleIdentifier!
| |- warning: static property 'subsystem' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'subsystem' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'subsystem' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
135 |
136 | /// Logs the view cycles like viewDidLoad.
[99/120] Compiling SwiftUPnP IPHelper.swift
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPNetworkDiscovery.swift:50:17: warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
30 | import os.log
31 |
32 | class SSDPNetworkDiscovery: SSDPDiscovery {
| `- note: class 'SSDPNetworkDiscovery' does not conform to the 'Sendable' protocol
33 | private var multicastGroup: NWMulticastGroup?
34 | private var connectionGroup: NWConnectionGroup?
:
48 | Logger.swiftUPnP.error("\(error.localizedDescription)")
49 | case .cancelled:
50 | self?.multicastGroup = nil
| `- warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
51 | self?.connectionGroup = nil
52 | default:
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPNetworkDiscovery.swift:58:17: warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery' in a '@Sendable' closure
30 | import os.log
31 |
32 | class SSDPNetworkDiscovery: SSDPDiscovery {
| `- note: class 'SSDPNetworkDiscovery' does not conform to the 'Sendable' protocol
33 | private var multicastGroup: NWMulticastGroup?
34 | private var connectionGroup: NWConnectionGroup?
:
56 | connectionGroup.setReceiveHandler(maximumMessageSize: 65535, rejectOversizedMessages: true) { (message, content, isComplete) in
57 | if let content = content {
58 | self.processData(content)
| `- warning: capture of 'self' with non-sendable type 'SSDPNetworkDiscovery' in a '@Sendable' closure
59 | }
60 | }
/Users/admin/builder/spi-builder-workspace/Source/Support/IPHelper.swift:134:24: warning: static property 'subsystem' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
132 |
133 | extension Logger {
134 | private static var subsystem = Bundle.main.bundleIdentifier!
| |- warning: static property 'subsystem' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'subsystem' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'subsystem' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
135 |
136 | /// Logs the view cycles like viewDidLoad.
[100/120] Compiling SwiftUPnP OpenHomeRadio1Service.swift
[101/120] Compiling SwiftUPnP OpenHomeReceiver1Service.swift
[102/120] Compiling SwiftUPnP OpenHomeSender1Service.swift
[103/120] Emitting module SwiftUPnP
/Users/admin/builder/spi-builder-workspace/Source/Profiles/OpenHome Profile/OpenHomeTransport1Service.swift:176:117: warning: keyword 'repeat' does not need to be escaped in argument list
174 | var action: SoapAction
175 | }
176 | try await post(action: "SetRepeat", envelope: Envelope(body: Body(action: SoapAction(urn: Attribute(serviceType), `repeat`: `repeat`))), log: log)
| `- warning: keyword 'repeat' does not need to be escaped in argument list
177 | }
178 |
/Users/admin/builder/spi-builder-workspace/Source/Support/IPHelper.swift:134:24: warning: static property 'subsystem' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
132 |
133 | extension Logger {
134 | private static var subsystem = Bundle.main.bundleIdentifier!
| |- warning: static property 'subsystem' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'subsystem' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'subsystem' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
135 |
136 | /// Logs the view cycles like viewDidLoad.
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:33:23: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'UPnPRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
30 | import os.log
31 |
32 | public class UPnPRegistry {
| `- note: class 'UPnPRegistry' does not conform to the 'Sendable' protocol
33 | public static let shared = UPnPRegistry()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'UPnPRegistry' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 |
35 | // Use CocoaAsyncSocket discovery for SSDP, as the standard network framework doesn't support when
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:49:23: warning: static property 'defaultSubscriptionTimeout' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
47 | }
48 |
49 | public static var defaultSubscriptionTimeout = 120
| |- warning: static property 'defaultSubscriptionTimeout' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
| |- note: convert 'defaultSubscriptionTimeout' to a 'let' constant to make 'Sendable' shared state immutable
| |- note: add '@MainActor' to make static property 'defaultSubscriptionTimeout' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
50 |
51 | public let controlUrl: URL
[104/120] Compiling SwiftUPnP OpenHomeTime1Service.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/OpenHome Profile/OpenHomeTransport1Service.swift:176:117: warning: keyword 'repeat' does not need to be escaped in argument list
174 | var action: SoapAction
175 | }
176 | try await post(action: "SetRepeat", envelope: Envelope(body: Body(action: SoapAction(urn: Attribute(serviceType), `repeat`: `repeat`))), log: log)
| `- warning: keyword 'repeat' does not need to be escaped in argument list
177 | }
178 |
[105/120] Compiling SwiftUPnP OpenHomeTransport1Service.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/OpenHome Profile/OpenHomeTransport1Service.swift:176:117: warning: keyword 'repeat' does not need to be escaped in argument list
174 | var action: SoapAction
175 | }
176 | try await post(action: "SetRepeat", envelope: Envelope(body: Body(action: SoapAction(urn: Attribute(serviceType), `repeat`: `repeat`))), log: log)
| `- warning: keyword 'repeat' does not need to be escaped in argument list
177 | }
178 |
[106/120] Compiling SwiftUPnP OpenHomeVolume1Service.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/OpenHome Profile/OpenHomeTransport1Service.swift:176:117: warning: keyword 'repeat' does not need to be escaped in argument list
174 | var action: SoapAction
175 | }
176 | try await post(action: "SetRepeat", envelope: Envelope(body: Body(action: SoapAction(urn: Attribute(serviceType), `repeat`: `repeat`))), log: log)
| `- warning: keyword 'repeat' does not need to be escaped in argument list
177 | }
178 |
[107/120] Compiling SwiftUPnP OpenHomePins1Service.swift
[108/120] Compiling SwiftUPnP OpenHomePlaylist1Service+DIDL.swift
[109/120] Compiling SwiftUPnP OpenHomePlaylist1Service.swift
[110/120] Compiling SwiftUPnP AVTransport1Service.swift
[111/120] Compiling SwiftUPnP ConnectionManager1Service.swift
[112/120] Compiling SwiftUPnP ContentDirectory1Service+DIDL.swift
[113/120] Compiling SwiftUPnP ContentDirectory1Service.swift
[114/120] Compiling SwiftUPnP RenderingControl1Service.swift
[115/120] Compiling SwiftUPnP OpenHomeConfig1Service.swift
[116/120] Compiling SwiftUPnP OpenHomeCredentials1Service.swift
[117/120] Compiling SwiftUPnP OpenHomeInfo1Service.swift
[118/120] Compiling SwiftUPnP OpenHomePlaylistManager1Service.swift
[119/120] Compiling SwiftUPnP OpenHomeProduct1Service.swift
[120/120] Compiling SwiftUPnP OpenHomeProduct2Service.swift
Build complete! (16.03s)
Build complete.
{
"dependencies" : [
{
"identity" : "xmlcoder",
"requirement" : {
"range" : [
{
"lower_bound" : "0.13.1",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/CoreOffice/XMLCoder.git"
},
{
"identity" : "swifter",
"requirement" : {
"branch" : [
"stable"
]
},
"type" : "sourceControl",
"url" : "https://github.com/httpswift/swifter"
},
{
"identity" : "cocoaasyncsocket",
"requirement" : {
"branch" : [
"master"
]
},
"type" : "sourceControl",
"url" : "https://github.com/robbiehanson/CocoaAsyncSocket"
}
],
"manifest_display_name" : "SwiftUPnP",
"name" : "SwiftUPnP",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "12.0"
},
{
"name" : "watchos",
"version" : "10.0"
}
],
"products" : [
{
"name" : "SwiftUPnP",
"targets" : [
"SwiftUPnP"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "UPnPCodeGenerator",
"targets" : [
"UPnPCodeGenerator"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "UPnPCodeGenerator",
"module_type" : "SwiftTarget",
"name" : "UPnPCodeGenerator",
"path" : "CodeGenerator",
"product_dependencies" : [
"XMLCoder"
],
"product_memberships" : [
"UPnPCodeGenerator"
],
"sources" : [
"ServiceDefinition.swift",
"SourceGenerator.swift",
"main.swift"
],
"type" : "executable"
},
{
"c99name" : "SwiftUPnP",
"module_type" : "SwiftTarget",
"name" : "SwiftUPnP",
"path" : "Source",
"product_dependencies" : [
"XMLCoder",
"Swifter",
"CocoaAsyncSocket"
],
"product_memberships" : [
"SwiftUPnP"
],
"sources" : [
"Profiles/AV Profile/AVTransport1Service.swift",
"Profiles/AV Profile/ConnectionManager1Service.swift",
"Profiles/AV Profile/ContentDirectory1Service+DIDL.swift",
"Profiles/AV Profile/ContentDirectory1Service.swift",
"Profiles/AV Profile/RenderingControl1Service.swift",
"Profiles/OpenHome Profile/OpenHomeConfig1Service.swift",
"Profiles/OpenHome Profile/OpenHomeCredentials1Service.swift",
"Profiles/OpenHome Profile/OpenHomeInfo1Service.swift",
"Profiles/OpenHome Profile/OpenHomePins1Service.swift",
"Profiles/OpenHome Profile/OpenHomePlaylist1Service+DIDL.swift",
"Profiles/OpenHome Profile/OpenHomePlaylist1Service.swift",
"Profiles/OpenHome Profile/OpenHomePlaylistManager1Service.swift",
"Profiles/OpenHome Profile/OpenHomeProduct1Service.swift",
"Profiles/OpenHome Profile/OpenHomeProduct2Service.swift",
"Profiles/OpenHome Profile/OpenHomeRadio1Service.swift",
"Profiles/OpenHome Profile/OpenHomeReceiver1Service.swift",
"Profiles/OpenHome Profile/OpenHomeSender1Service.swift",
"Profiles/OpenHome Profile/OpenHomeTime1Service.swift",
"Profiles/OpenHome Profile/OpenHomeTransport1Service.swift",
"Profiles/OpenHome Profile/OpenHomeVolume1Service.swift",
"Profiles/OpenHome Profile/OpenHomeVolume2Service.swift",
"SSDP/SSDPCocoaAsyncSocketDiscovery.swift",
"SSDP/SSDPDiscovery.swift",
"SSDP/SSDPNetworkDiscovery.swift",
"SSDP/UserAgentGenerator.swift",
"Support/IPHelper.swift",
"Support/XMLParserSupport.swift",
"UPnP/UPnPDevice.swift",
"UPnP/UPnPDeviceDefinition.swift",
"UPnP/UPnPRegistry.swift",
"UPnP/UPnPService.swift",
"UPnP/UPnPServiceDefinition.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.