Build Information
Successful build of SwiftUPnP, reference main (fcd298), with Swift 6.1 for macOS (SPM) on 18 Oct 2026 21:31:48 UTC.
Swift 6 data race errors: 4
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 InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 5.1.3
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/katoemba/SwiftUPnP.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/katoemba/SwiftUPnP
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at fcd298d Make SSDP discovery resilient to network changes and fix byebye handling.
Cloned https://github.com/katoemba/SwiftUPnP.git
Revision (git rev-parse @):
fcd298d753bfd9b59ffb45df684694edea2f23bd
SUCCESS checkout https://github.com/katoemba/SwiftUPnP.git at main
========================================
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" : "cocoaasyncsocket",
"requirement" : {
"branch" : [
"master"
]
},
"type" : "sourceControl",
"url" : "https://github.com/robbiehanson/CocoaAsyncSocket.git"
},
{
"identity" : "mocker",
"requirement" : {
"range" : [
{
"lower_bound" : "3.0.0",
"upper_bound" : "4.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/WeTransfer/Mocker.git"
}
],
"manifest_display_name" : "SwiftUPnP",
"name" : "SwiftUPnP",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "11.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" : "SwiftUPnPTests",
"module_type" : "SwiftTarget",
"name" : "SwiftUPnPTests",
"path" : "Tests/SwiftUPnPTests",
"product_dependencies" : [
"Mocker"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/AVTransport1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/ConnectionManager1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/ContentDirectory1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/MediaServerDevice.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeConfig1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeCredentials1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeInfo1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeOAuth1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomePins1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomePlaylist1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomePlaylistManager1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeProduct1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeProduct2Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeRadio1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeReceiver1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeRendererDevice.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeSender1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeTime1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeTransport1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeVolume1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeVolume2Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/RenderingControl1Service.xml",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"HTTPServerTests.swift",
"SSDPDiscoveryTests.swift",
"SwiftUPnPTests.swift",
"UPnPSubscriptionTests.swift"
],
"target_dependencies" : [
"SwiftUPnP"
],
"type" : "test"
},
{
"c99name" : "SwiftUPnP",
"module_type" : "SwiftTarget",
"name" : "SwiftUPnP",
"path" : "Source",
"product_dependencies" : [
"XMLCoder",
"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/OpenHomeOAuth1Service.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/HTTPServer.swift",
"Support/IPHelper.swift",
"Support/Publisher+Stream.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/10] Write sources
[0/10] Write UPnPCodeGenerator-entitlement.plist
[2/10] Write sources
[4/10] Write swift-version-2F0A5646E1D333AE.txt
[5/57] Compiling CocoaAsyncSocket GCDAsyncUdpSocket.m
[6/57] Compiling CocoaAsyncSocket GCDAsyncSocket.m
[8/57] Emitting module XMLCoder
[9/62] Compiling XMLCoder DynamicNodeEncoding.swift
[10/62] Compiling XMLCoder EncodingErrorExtension.swift
[11/62] Compiling XMLCoder SingleValueEncodingContainer.swift
[12/62] Compiling XMLCoder XMLChoiceEncodingContainer.swift
[13/62] Compiling XMLCoder XMLEncoder.swift
[14/62] Compiling XMLCoder XMLEncoderImplementation.swift
[15/62] Compiling XMLCoder XMLEncodingStorage.swift
[16/62] Compiling XMLCoder XMLKeyedEncodingContainer.swift
[17/62] Compiling XMLCoder XMLReferencingEncoder.swift
[18/62] Compiling XMLCoder XMLUnkeyedEncodingContainer.swift
[19/62] Compiling XMLCoder ISO8601DateFormatter.swift
[20/62] Compiling XMLCoder KeyedStorage.swift
[21/62] Compiling XMLCoder Metatypes.swift
[22/62] Compiling XMLCoder String+Extensions.swift
[23/62] Compiling XMLCoder Utils.swift
[24/62] Compiling XMLCoder Attribute.swift
[25/62] Compiling XMLCoder BoolBox.swift
[26/62] Compiling XMLCoder Box.swift
[27/62] Compiling XMLCoder ChoiceBox.swift
[28/62] Compiling XMLCoder DataBox.swift
[29/62] Compiling XMLCoder DateBox.swift
[30/62] Compiling XMLCoder XMLDecoder.swift
[31/62] Compiling XMLCoder XMLDecoderImplementation.swift
[32/62] Compiling XMLCoder XMLDecodingStorage.swift
[33/62] Compiling XMLCoder XMLKeyedDecodingContainer.swift
[34/62] Compiling XMLCoder XMLUnkeyedDecodingContainer.swift
[35/62] Compiling XMLCoder NullBox.swift
[36/62] Compiling XMLCoder SharedBox.swift
[37/62] Compiling XMLCoder SingleKeyedBox.swift
[38/62] Compiling XMLCoder StringBox.swift
[39/62] Compiling XMLCoder UIntBox.swift
[40/62] Compiling XMLCoder DecimalBox.swift
[41/62] Compiling XMLCoder DoubleBox.swift
[42/62] Compiling XMLCoder FloatBox.swift
[43/62] Compiling XMLCoder IntBox.swift
[44/62] Compiling XMLCoder KeyedBox.swift
[45/62] Compiling XMLCoder XMLChoiceCodingKey.swift
[46/62] Compiling XMLCoder XMLCoderElement.swift
[47/62] Compiling XMLCoder XMLDocumentType.swift
[48/62] Compiling XMLCoder XMLHeader.swift
[49/62] Compiling XMLCoder XMLKey.swift
[50/62] Compiling XMLCoder URLBox.swift
[51/62] Compiling XMLCoder UnkeyedBox.swift
[52/62] Compiling XMLCoder ValueBox.swift
[53/62] Compiling XMLCoder Element.swift
[54/62] Compiling XMLCoder ElementAndAttribute.swift
[55/62] Compiling XMLCoder XMLStackParser.swift
[56/62] Compiling XMLCoder DecodingErrorExtension.swift
[57/62] Compiling XMLCoder DynamicNodeDecoding.swift
[58/62] Compiling XMLCoder SingleValueDecodingContainer.swift
[59/62] Compiling XMLCoder XMLChoiceDecodingContainer.swift
[60/99] Compiling UPnPCodeGenerator main.swift
[61/99] Emitting module UPnPCodeGenerator
[62/99] Compiling UPnPCodeGenerator SourceGenerator.swift
[63/99] Compiling UPnPCodeGenerator ServiceDefinition.swift
[63/99] Write Objects.LinkFileList
[64/99] Linking UPnPCodeGenerator
[65/99] Applying UPnPCodeGenerator
[67/99] Compiling SwiftUPnP XMLParserSupport.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:157:46: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
155 | let service: UPnPService?
156 | if let registry {
157 | service = await registry.typedService(device: self, serviceUrn: deviceService.serviceType)
| |- 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 'typedService(device:serviceUrn:)' risks causing data races between main actor-isolated and local nonisolated uses
| `- note: access can happen concurrently
158 | }
159 | else {
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:157:46: warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
155 | let service: UPnPService?
156 | if let registry {
157 | service = await registry.typedService(device: self, serviceUrn: deviceService.serviceType)
| |- warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
| |- note: sending main actor-isolated 'registry' to main actor-isolated instance method 'typedService(device:serviceUrn:)' risks causing data races between main actor-isolated and local nonisolated uses
| `- note: access can happen concurrently
158 | }
159 | else {
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:165:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 | await service.loadScdp()
165 | await add(service)
| |- 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 'add' risks causing data races between main actor-isolated and local nonisolated uses
| `- note: access can happen concurrently
166 | }
167 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:106:25: warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
104 | let device = UPnPDevice(upnpDeviceDescription: upnpDeviceDescription)
105 |
106 | if await device.loadServices(registry: registry) {
| |- warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'registry' to nonisolated instance method 'loadServices(registry:)' risks causing data races between nonisolated and main actor-isolated uses
107 | device.servicesLoaded = true
108 |
[68/99] Compiling SwiftUPnP UPnPDevice.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:157:46: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
155 | let service: UPnPService?
156 | if let registry {
157 | service = await registry.typedService(device: self, serviceUrn: deviceService.serviceType)
| |- 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 'typedService(device:serviceUrn:)' risks causing data races between main actor-isolated and local nonisolated uses
| `- note: access can happen concurrently
158 | }
159 | else {
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:157:46: warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
155 | let service: UPnPService?
156 | if let registry {
157 | service = await registry.typedService(device: self, serviceUrn: deviceService.serviceType)
| |- warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
| |- note: sending main actor-isolated 'registry' to main actor-isolated instance method 'typedService(device:serviceUrn:)' risks causing data races between main actor-isolated and local nonisolated uses
| `- note: access can happen concurrently
158 | }
159 | else {
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:165:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 | await service.loadScdp()
165 | await add(service)
| |- 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 'add' risks causing data races between main actor-isolated and local nonisolated uses
| `- note: access can happen concurrently
166 | }
167 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:106:25: warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
104 | let device = UPnPDevice(upnpDeviceDescription: upnpDeviceDescription)
105 |
106 | if await device.loadServices(registry: registry) {
| |- warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'registry' to nonisolated instance method 'loadServices(registry:)' risks causing data races between nonisolated and main actor-isolated uses
107 | device.servicesLoaded = true
108 |
[69/99] Compiling SwiftUPnP UPnPDeviceDefinition.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:157:46: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
155 | let service: UPnPService?
156 | if let registry {
157 | service = await registry.typedService(device: self, serviceUrn: deviceService.serviceType)
| |- 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 'typedService(device:serviceUrn:)' risks causing data races between main actor-isolated and local nonisolated uses
| `- note: access can happen concurrently
158 | }
159 | else {
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:157:46: warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
155 | let service: UPnPService?
156 | if let registry {
157 | service = await registry.typedService(device: self, serviceUrn: deviceService.serviceType)
| |- warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
| |- note: sending main actor-isolated 'registry' to main actor-isolated instance method 'typedService(device:serviceUrn:)' risks causing data races between main actor-isolated and local nonisolated uses
| `- note: access can happen concurrently
158 | }
159 | else {
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:165:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
163 |
164 | await service.loadScdp()
165 | await add(service)
| |- 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 'add' risks causing data races between main actor-isolated and local nonisolated uses
| `- note: access can happen concurrently
166 | }
167 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPDevice.swift:106:25: warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
104 | let device = UPnPDevice(upnpDeviceDescription: upnpDeviceDescription)
105 |
106 | if await device.loadServices(registry: registry) {
| |- warning: sending 'registry' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'registry' to nonisolated instance method 'loadServices(registry:)' risks causing data races between nonisolated and main actor-isolated uses
107 | device.servicesLoaded = true
108 |
[70/102] Compiling SwiftUPnP UPnPRegistry.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:32: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
29 | import os.log
30 |
31 | public class UPnPRegistry {
| `- note: class 'UPnPRegistry' does not conform to the 'Sendable' protocol
32 | 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
33 |
34 | // 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:100:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
98 | // The network is usually still settling when the listener drops out.
99 | try? await Task.sleep(nanoseconds: 1_000_000_000)
100 | await self?.startHTTPServer()
| |- 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
101 | }
102 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:116:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
114 | // The discovery engine keeps its state on the main queue, like its socket callbacks.
115 | Task { @MainActor in
116 | await startHTTPServerIfNotRunning()
| |- 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
117 | try discoveryEngine.startDiscovery(forTypes: filteredTypes)
118 | discoveryEngine.searchRequest()
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:124:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
122 | public func stopDiscovery() {
123 | Task { @MainActor in
124 | discoveryEngine.stopDiscovery()
| |- 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
125 | stopHTTPServer()
126 | devices.removeAll(keepingCapacity: false)
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:184:38: warning: sending 'self.httpServer' risks causing data races; this is an error in the Swift 6 language mode
182 |
183 | do {
184 | try await httpServer.start(port: port)
| |- warning: sending 'self.httpServer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self.httpServer' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
185 |
186 | // Binding is not instant, and discovery may have been stopped while it was underway.
[71/102] Compiling SwiftUPnP UPnPService.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:32: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
29 | import os.log
30 |
31 | public class UPnPRegistry {
| `- note: class 'UPnPRegistry' does not conform to the 'Sendable' protocol
32 | 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
33 |
34 | // 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:100:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
98 | // The network is usually still settling when the listener drops out.
99 | try? await Task.sleep(nanoseconds: 1_000_000_000)
100 | await self?.startHTTPServer()
| |- 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
101 | }
102 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:116:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
114 | // The discovery engine keeps its state on the main queue, like its socket callbacks.
115 | Task { @MainActor in
116 | await startHTTPServerIfNotRunning()
| |- 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
117 | try discoveryEngine.startDiscovery(forTypes: filteredTypes)
118 | discoveryEngine.searchRequest()
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:124:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
122 | public func stopDiscovery() {
123 | Task { @MainActor in
124 | discoveryEngine.stopDiscovery()
| |- 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
125 | stopHTTPServer()
126 | devices.removeAll(keepingCapacity: false)
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:184:38: warning: sending 'self.httpServer' risks causing data races; this is an error in the Swift 6 language mode
182 |
183 | do {
184 | try await httpServer.start(port: port)
| |- warning: sending 'self.httpServer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self.httpServer' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
185 |
186 | // Binding is not instant, and discovery may have been stopped while it was underway.
[72/102] Compiling SwiftUPnP UPnPServiceDefinition.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:32: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
29 | import os.log
30 |
31 | public class UPnPRegistry {
| `- note: class 'UPnPRegistry' does not conform to the 'Sendable' protocol
32 | 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
33 |
34 | // 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:100:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
98 | // The network is usually still settling when the listener drops out.
99 | try? await Task.sleep(nanoseconds: 1_000_000_000)
100 | await self?.startHTTPServer()
| |- 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
101 | }
102 | }
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:116:19: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
114 | // The discovery engine keeps its state on the main queue, like its socket callbacks.
115 | Task { @MainActor in
116 | await startHTTPServerIfNotRunning()
| |- 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
117 | try discoveryEngine.startDiscovery(forTypes: filteredTypes)
118 | discoveryEngine.searchRequest()
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:124:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
122 | public func stopDiscovery() {
123 | Task { @MainActor in
124 | discoveryEngine.stopDiscovery()
| |- 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
125 | stopHTTPServer()
126 | devices.removeAll(keepingCapacity: false)
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPRegistry.swift:184:38: warning: sending 'self.httpServer' risks causing data races; this is an error in the Swift 6 language mode
182 |
183 | do {
184 | try await httpServer.start(port: port)
| |- warning: sending 'self.httpServer' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending main actor-isolated 'self.httpServer' to nonisolated callee risks causing data races between nonisolated and main actor-isolated uses
185 |
186 | // Binding is not instant, and discovery may have been stopped while it was underway.
[73/102] Compiling SwiftUPnP AVTransport1Service.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/AV Profile/ContentDirectory1Service+DIDL.swift:203:16: warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
201 |
202 | public let res: [DIDLRes]
203 | public let desc: [DIDLDescription]
| `- warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
204 |
205 | public let `class`: String
:
238 | }
239 |
240 | public struct DIDLDescription: Codable, DynamicNodeDecoding {
| `- note: consider making struct 'DIDLDescription' conform to the 'Sendable' protocol
241 | enum CodingKeys: String, CodingKey {
242 | case id
[74/102] Compiling SwiftUPnP ConnectionManager1Service.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/AV Profile/ContentDirectory1Service+DIDL.swift:203:16: warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
201 |
202 | public let res: [DIDLRes]
203 | public let desc: [DIDLDescription]
| `- warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
204 |
205 | public let `class`: String
:
238 | }
239 |
240 | public struct DIDLDescription: Codable, DynamicNodeDecoding {
| `- note: consider making struct 'DIDLDescription' conform to the 'Sendable' protocol
241 | enum CodingKeys: String, CodingKey {
242 | case id
[75/102] Compiling SwiftUPnP ContentDirectory1Service+DIDL.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/AV Profile/ContentDirectory1Service+DIDL.swift:203:16: warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
201 |
202 | public let res: [DIDLRes]
203 | public let desc: [DIDLDescription]
| `- warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
204 |
205 | public let `class`: String
:
238 | }
239 |
240 | public struct DIDLDescription: Codable, DynamicNodeDecoding {
| `- note: consider making struct 'DIDLDescription' conform to the 'Sendable' protocol
241 | enum CodingKeys: String, CodingKey {
242 | case id
[76/102] Compiling SwiftUPnP ContentDirectory1Service.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/AV Profile/ContentDirectory1Service+DIDL.swift:203:16: warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
201 |
202 | public let res: [DIDLRes]
203 | public let desc: [DIDLDescription]
| `- warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
204 |
205 | public let `class`: String
:
238 | }
239 |
240 | public struct DIDLDescription: Codable, DynamicNodeDecoding {
| `- note: consider making struct 'DIDLDescription' conform to the 'Sendable' protocol
241 | enum CodingKeys: String, CodingKey {
242 | case id
[77/102] Emitting module SwiftUPnP
/Users/admin/builder/spi-builder-workspace/Source/Profiles/AV Profile/ContentDirectory1Service+DIDL.swift:203:16: warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
201 |
202 | public let res: [DIDLRes]
203 | public let desc: [DIDLDescription]
| `- warning: stored property 'desc' of 'Sendable'-conforming struct 'DIDLItem' has non-sendable type '[DIDLDescription]'; this is an error in the Swift 6 language mode
204 |
205 | public let `class`: String
:
238 | }
239 |
240 | public struct DIDLDescription: Codable, DynamicNodeDecoding {
| `- note: consider making struct 'DIDLDescription' conform to the 'Sendable' protocol
241 | enum CodingKeys: String, CodingKey {
242 | case id
/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:32: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
29 | import os.log
30 |
31 | public class UPnPRegistry {
| `- note: class 'UPnPRegistry' does not conform to the 'Sendable' protocol
32 | 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
33 |
34 | // 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
[78/102] Compiling SwiftUPnP OpenHomeReceiver1Service.swift
[79/102] Compiling SwiftUPnP OpenHomeSender1Service.swift
[80/102] Compiling SwiftUPnP OpenHomeTime1Service.swift
[81/102] Compiling SwiftUPnP OpenHomeTransport1Service.swift
[82/102] Compiling SwiftUPnP OpenHomeOAuth1Service.swift
[83/102] Compiling SwiftUPnP OpenHomePins1Service.swift
[84/102] Compiling SwiftUPnP OpenHomePlaylist1Service+DIDL.swift
[85/102] Compiling SwiftUPnP OpenHomePlaylist1Service.swift
[86/102] Compiling SwiftUPnP RenderingControl1Service.swift
[87/102] Compiling SwiftUPnP OpenHomeConfig1Service.swift
[88/102] Compiling SwiftUPnP OpenHomeCredentials1Service.swift
[89/102] Compiling SwiftUPnP OpenHomeInfo1Service.swift
[90/102] Compiling SwiftUPnP SSDPDiscovery.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/SSDP/SSDPDiscovery.swift:60:18: 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
58 | guard let device = device(from: headers) else { return }
59 | if messageType == .unavailableNotification {
60 | 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
61 | await UPnPRegistry.shared.remove(device)
| `- note: closure captures 'device' which is accessible to code in the current task
62 | }
63 | }
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPDiscovery.swift:65:18: 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
63 | }
64 | else {
65 | 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
66 | await UPnPRegistry.shared.add(device)
| `- note: closure captures 'device' which is accessible to code in the current task
67 | }
68 | }
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPDiscovery.swift:61:43: warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
59 | if messageType == .unavailableNotification {
60 | Task {
61 | await UPnPRegistry.shared.remove(device)
| |- warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'device' to main actor-isolated instance method 'remove' risks causing data races between main actor-isolated and task-isolated uses
62 | }
63 | }
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPDiscovery.swift:66:43: warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
64 | else {
65 | Task {
66 | await UPnPRegistry.shared.add(device)
| |- warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'device' to main actor-isolated instance method 'add' risks causing data races between main actor-isolated and task-isolated uses
67 | }
68 | }
[91/102] 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/SSDP/SSDPDiscovery.swift:60:18: 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
58 | guard let device = device(from: headers) else { return }
59 | if messageType == .unavailableNotification {
60 | 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
61 | await UPnPRegistry.shared.remove(device)
| `- note: closure captures 'device' which is accessible to code in the current task
62 | }
63 | }
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPDiscovery.swift:65:18: 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
63 | }
64 | else {
65 | 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
66 | await UPnPRegistry.shared.add(device)
| `- note: closure captures 'device' which is accessible to code in the current task
67 | }
68 | }
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPDiscovery.swift:61:43: warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
59 | if messageType == .unavailableNotification {
60 | Task {
61 | await UPnPRegistry.shared.remove(device)
| |- warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'device' to main actor-isolated instance method 'remove' risks causing data races between main actor-isolated and task-isolated uses
62 | }
63 | }
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPDiscovery.swift:66:43: warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
64 | else {
65 | Task {
66 | await UPnPRegistry.shared.add(device)
| |- warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'device' to main actor-isolated instance method 'add' risks causing data races between main actor-isolated and task-isolated uses
67 | }
68 | }
[92/102] 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/SSDP/SSDPDiscovery.swift:60:18: 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
58 | guard let device = device(from: headers) else { return }
59 | if messageType == .unavailableNotification {
60 | 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
61 | await UPnPRegistry.shared.remove(device)
| `- note: closure captures 'device' which is accessible to code in the current task
62 | }
63 | }
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPDiscovery.swift:65:18: 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
63 | }
64 | else {
65 | 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
66 | await UPnPRegistry.shared.add(device)
| `- note: closure captures 'device' which is accessible to code in the current task
67 | }
68 | }
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPDiscovery.swift:61:43: warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
59 | if messageType == .unavailableNotification {
60 | Task {
61 | await UPnPRegistry.shared.remove(device)
| |- warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'device' to main actor-isolated instance method 'remove' risks causing data races between main actor-isolated and task-isolated uses
62 | }
63 | }
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPDiscovery.swift:66:43: warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
64 | else {
65 | Task {
66 | await UPnPRegistry.shared.add(device)
| |- warning: sending 'device' risks causing data races; this is an error in the Swift 6 language mode
| `- note: sending task-isolated 'device' to main actor-isolated instance method 'add' risks causing data races between main actor-isolated and task-isolated uses
67 | }
68 | }
[93/102] Compiling SwiftUPnP HTTPServer.swift
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:177:13: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
75 | /// Failure of a running listener is reported through ``onFailure``: without it a listener that stops
76 | /// accepting connections is invisible from the outside, and the events simply stop arriving.
77 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
78 | typealias Handler = (HTTPServerRequest) -> HTTPServerResponse
79 |
:
175 |
176 | listener.newConnectionHandler = { [weak self] connection in
177 | self?.accept(connection)
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
178 | }
179 | listener.stateUpdateHandler = { [weak self] state in
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:180:13: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
75 | /// Failure of a running listener is reported through ``onFailure``: without it a listener that stops
76 | /// accepting connections is invisible from the outside, and the events simply stop arriving.
77 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
78 | typealias Handler = (HTTPServerRequest) -> HTTPServerResponse
79 |
:
178 | }
179 | listener.stateUpdateHandler = { [weak self] state in
180 | self?.handleStateChange(state, of: listener, port: port)
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
181 | }
182 |
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:233:17: warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure; this is an error in the Swift 6 language mode
231 | listener.stateUpdateHandler = { state in
232 | if case .cancelled = state {
233 | leave.run()
| `- warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure; this is an error in the Swift 6 language mode
234 | }
235 | }
:
333 |
334 | /// Runs its work exactly once, for whichever of two things that both mean 'done' happens first.
335 | private final class Once {
| `- note: class 'Once' does not conform to the 'Sendable' protocol
336 | private let lock = NSLock()
337 | private var work: (() -> Void)?
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:240:13: warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure
238 | // A listener that never reports being cancelled may not hold up the next start forever.
239 | queue.asyncAfter(deadline: .now() + 2) {
240 | leave.run()
| `- warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure
241 | }
242 | }
:
333 |
334 | /// Runs its work exactly once, for whichever of two things that both mean 'done' happens first.
335 | private final class Once {
| `- note: class 'Once' does not conform to the 'Sendable' protocol
336 | private let lock = NSLock()
337 | private var work: (() -> Void)?
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:384:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
382 | switch state {
383 | case .failed, .cancelled:
384 | self?.close()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
385 | default:
386 | break
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:395:20: warning: capture of 'self' with non-sendable type 'HTTPConnection' in a '@Sendable' closure
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
393 | func close() {
394 | queue.async { [self] in
395 | guard !closed else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection' in a '@Sendable' closure
396 | closed = true
397 |
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:408:23: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
406 | private func receive() {
407 | connection.receive(minimumIncompleteLength: 1, maximumLength: 64 * 1024) { [weak self] data, _, isComplete, error in
408 | guard let self, !self.closed else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
409 |
410 | if let data, data.isEmpty == false {
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:474:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
472 | connection.send(content: data, completion: .contentProcessed { [weak self] error in
473 | if error != nil || keepAlive == false {
474 | self?.close()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
475 | }
476 | })
/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/Support/Publisher+Stream.swift:40:17: warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
38 | }
39 | continuation.onTermination = { continuation in
40 | cancellable.cancel()
| `- warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
41 | }
42 | }
Combine.AnyCancellable:2:20: note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class AnyCancellable : Cancellable, Hashable {
| `- note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
3 | public init(_ cancel: @escaping () -> Void)
4 | public init<C>(_ canceller: C) where C : Cancellable
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:29:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
27 |
28 | import Foundation
29 | import Combine
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
30 |
31 | internal extension Publisher where Failure == Never {
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:60:17: warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
58 | }
59 | continuation.onTermination = { continuation in
60 | cancellable.cancel()
| `- warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
61 | }
62 | }
Combine.AnyCancellable:2:20: note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class AnyCancellable : Cancellable, Hashable {
| `- note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
3 | public init(_ cancel: @escaping () -> Void)
4 | public init<C>(_ canceller: C) where C : Cancellable
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:37:31: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
35 | continuation.finish()
36 | } receiveValue: { value in
37 | continuation.yield(value)
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
38 | }
39 | continuation.onTermination = { continuation in
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:57:31: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
55 | }
56 | } receiveValue: { value in
57 | continuation.yield(value)
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
58 | }
59 | continuation.onTermination = { continuation in
[94/102] Compiling SwiftUPnP IPHelper.swift
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:177:13: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
75 | /// Failure of a running listener is reported through ``onFailure``: without it a listener that stops
76 | /// accepting connections is invisible from the outside, and the events simply stop arriving.
77 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
78 | typealias Handler = (HTTPServerRequest) -> HTTPServerResponse
79 |
:
175 |
176 | listener.newConnectionHandler = { [weak self] connection in
177 | self?.accept(connection)
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
178 | }
179 | listener.stateUpdateHandler = { [weak self] state in
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:180:13: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
75 | /// Failure of a running listener is reported through ``onFailure``: without it a listener that stops
76 | /// accepting connections is invisible from the outside, and the events simply stop arriving.
77 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
78 | typealias Handler = (HTTPServerRequest) -> HTTPServerResponse
79 |
:
178 | }
179 | listener.stateUpdateHandler = { [weak self] state in
180 | self?.handleStateChange(state, of: listener, port: port)
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
181 | }
182 |
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:233:17: warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure; this is an error in the Swift 6 language mode
231 | listener.stateUpdateHandler = { state in
232 | if case .cancelled = state {
233 | leave.run()
| `- warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure; this is an error in the Swift 6 language mode
234 | }
235 | }
:
333 |
334 | /// Runs its work exactly once, for whichever of two things that both mean 'done' happens first.
335 | private final class Once {
| `- note: class 'Once' does not conform to the 'Sendable' protocol
336 | private let lock = NSLock()
337 | private var work: (() -> Void)?
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:240:13: warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure
238 | // A listener that never reports being cancelled may not hold up the next start forever.
239 | queue.asyncAfter(deadline: .now() + 2) {
240 | leave.run()
| `- warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure
241 | }
242 | }
:
333 |
334 | /// Runs its work exactly once, for whichever of two things that both mean 'done' happens first.
335 | private final class Once {
| `- note: class 'Once' does not conform to the 'Sendable' protocol
336 | private let lock = NSLock()
337 | private var work: (() -> Void)?
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:384:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
382 | switch state {
383 | case .failed, .cancelled:
384 | self?.close()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
385 | default:
386 | break
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:395:20: warning: capture of 'self' with non-sendable type 'HTTPConnection' in a '@Sendable' closure
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
393 | func close() {
394 | queue.async { [self] in
395 | guard !closed else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection' in a '@Sendable' closure
396 | closed = true
397 |
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:408:23: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
406 | private func receive() {
407 | connection.receive(minimumIncompleteLength: 1, maximumLength: 64 * 1024) { [weak self] data, _, isComplete, error in
408 | guard let self, !self.closed else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
409 |
410 | if let data, data.isEmpty == false {
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:474:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
472 | connection.send(content: data, completion: .contentProcessed { [weak self] error in
473 | if error != nil || keepAlive == false {
474 | self?.close()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
475 | }
476 | })
/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/Support/Publisher+Stream.swift:40:17: warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
38 | }
39 | continuation.onTermination = { continuation in
40 | cancellable.cancel()
| `- warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
41 | }
42 | }
Combine.AnyCancellable:2:20: note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class AnyCancellable : Cancellable, Hashable {
| `- note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
3 | public init(_ cancel: @escaping () -> Void)
4 | public init<C>(_ canceller: C) where C : Cancellable
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:29:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
27 |
28 | import Foundation
29 | import Combine
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
30 |
31 | internal extension Publisher where Failure == Never {
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:60:17: warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
58 | }
59 | continuation.onTermination = { continuation in
60 | cancellable.cancel()
| `- warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
61 | }
62 | }
Combine.AnyCancellable:2:20: note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class AnyCancellable : Cancellable, Hashable {
| `- note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
3 | public init(_ cancel: @escaping () -> Void)
4 | public init<C>(_ canceller: C) where C : Cancellable
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:37:31: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
35 | continuation.finish()
36 | } receiveValue: { value in
37 | continuation.yield(value)
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
38 | }
39 | continuation.onTermination = { continuation in
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:57:31: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
55 | }
56 | } receiveValue: { value in
57 | continuation.yield(value)
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
58 | }
59 | continuation.onTermination = { continuation in
[95/102] Compiling SwiftUPnP Publisher+Stream.swift
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:177:13: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
75 | /// Failure of a running listener is reported through ``onFailure``: without it a listener that stops
76 | /// accepting connections is invisible from the outside, and the events simply stop arriving.
77 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
78 | typealias Handler = (HTTPServerRequest) -> HTTPServerResponse
79 |
:
175 |
176 | listener.newConnectionHandler = { [weak self] connection in
177 | self?.accept(connection)
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
178 | }
179 | listener.stateUpdateHandler = { [weak self] state in
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:180:13: warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
75 | /// Failure of a running listener is reported through ``onFailure``: without it a listener that stops
76 | /// accepting connections is invisible from the outside, and the events simply stop arriving.
77 | final class HTTPServer {
| `- note: class 'HTTPServer' does not conform to the 'Sendable' protocol
78 | typealias Handler = (HTTPServerRequest) -> HTTPServerResponse
79 |
:
178 | }
179 | listener.stateUpdateHandler = { [weak self] state in
180 | self?.handleStateChange(state, of: listener, port: port)
| `- warning: capture of 'self' with non-sendable type 'HTTPServer?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
181 | }
182 |
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:233:17: warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure; this is an error in the Swift 6 language mode
231 | listener.stateUpdateHandler = { state in
232 | if case .cancelled = state {
233 | leave.run()
| `- warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure; this is an error in the Swift 6 language mode
234 | }
235 | }
:
333 |
334 | /// Runs its work exactly once, for whichever of two things that both mean 'done' happens first.
335 | private final class Once {
| `- note: class 'Once' does not conform to the 'Sendable' protocol
336 | private let lock = NSLock()
337 | private var work: (() -> Void)?
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:240:13: warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure
238 | // A listener that never reports being cancelled may not hold up the next start forever.
239 | queue.asyncAfter(deadline: .now() + 2) {
240 | leave.run()
| `- warning: capture of 'leave' with non-sendable type 'Once' in a '@Sendable' closure
241 | }
242 | }
:
333 |
334 | /// Runs its work exactly once, for whichever of two things that both mean 'done' happens first.
335 | private final class Once {
| `- note: class 'Once' does not conform to the 'Sendable' protocol
336 | private let lock = NSLock()
337 | private var work: (() -> Void)?
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:384:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
382 | switch state {
383 | case .failed, .cancelled:
384 | self?.close()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
385 | default:
386 | break
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:395:20: warning: capture of 'self' with non-sendable type 'HTTPConnection' in a '@Sendable' closure
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
393 | func close() {
394 | queue.async { [self] in
395 | guard !closed else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection' in a '@Sendable' closure
396 | closed = true
397 |
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:408:23: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
406 | private func receive() {
407 | connection.receive(minimumIncompleteLength: 1, maximumLength: 64 * 1024) { [weak self] data, _, isComplete, error in
408 | guard let self, !self.closed else { return }
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
409 |
410 | if let data, data.isEmpty == false {
/Users/admin/builder/spi-builder-workspace/Source/Support/HTTPServer.swift:474:17: warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
353 | /// One connection from a device, which may carry more than one request: devices keep the connection
354 | /// open between notifications.
355 | private final class HTTPConnection {
| `- note: class 'HTTPConnection' does not conform to the 'Sendable' protocol
356 | private static let maximumHeaderSize = 64 * 1024
357 | private static let maximumBodySize = 8 * 1024 * 1024
:
472 | connection.send(content: data, completion: .contentProcessed { [weak self] error in
473 | if error != nil || keepAlive == false {
474 | self?.close()
| `- warning: capture of 'self' with non-sendable type 'HTTPConnection?' in a '@Sendable' closure
475 | }
476 | })
/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/Support/Publisher+Stream.swift:40:17: warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
38 | }
39 | continuation.onTermination = { continuation in
40 | cancellable.cancel()
| `- warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
41 | }
42 | }
Combine.AnyCancellable:2:20: note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class AnyCancellable : Cancellable, Hashable {
| `- note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
3 | public init(_ cancel: @escaping () -> Void)
4 | public init<C>(_ canceller: C) where C : Cancellable
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:29:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
27 |
28 | import Foundation
29 | import Combine
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Combine'
30 |
31 | internal extension Publisher where Failure == Never {
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:60:17: warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
58 | }
59 | continuation.onTermination = { continuation in
60 | cancellable.cancel()
| `- warning: capture of 'cancellable' with non-sendable type 'AnyCancellable' in a '@Sendable' closure; this is an error in the Swift 6 language mode
61 | }
62 | }
Combine.AnyCancellable:2:20: note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
1 | @available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 6.0, *)
2 | final public class AnyCancellable : Cancellable, Hashable {
| `- note: class 'AnyCancellable' does not conform to the 'Sendable' protocol
3 | public init(_ cancel: @escaping () -> Void)
4 | public init<C>(_ canceller: C) where C : Cancellable
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:37:31: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
35 | continuation.finish()
36 | } receiveValue: { value in
37 | continuation.yield(value)
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
38 | }
39 | continuation.onTermination = { continuation in
/Users/admin/builder/spi-builder-workspace/Source/Support/Publisher+Stream.swift:57:31: warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
55 | }
56 | } receiveValue: { value in
57 | continuation.yield(value)
| |- warning: sending 'value' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'value' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
58 | }
59 | continuation.onTermination = { continuation in
[96/102] Compiling SwiftUPnP OpenHomePlaylistManager1Service.swift
[97/102] Compiling SwiftUPnP OpenHomeProduct1Service.swift
[98/102] Compiling SwiftUPnP OpenHomeProduct2Service.swift
[99/102] Compiling SwiftUPnP OpenHomeRadio1Service.swift
[100/102] Compiling SwiftUPnP OpenHomeVolume1Service.swift
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPCocoaAsyncSocketDiscovery.swift:158:13: warning: capture of 'self' with non-sendable type 'SSDPCocoaAsyncSocketDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
31 | import os.log
32 |
33 | class SSDPCocoaAsyncSocketDiscovery: SSDPDiscovery {
| `- note: class 'SSDPCocoaAsyncSocketDiscovery' does not conform to the 'Sendable' protocol
34 | private var multicastSocket: GCDAsyncUdpSocket?
35 | /// Bumped on every start and stop, so work scheduled for an earlier session (repeated searches, reopening the
:
156 | }
157 | guard path.status == .satisfied else { return }
158 | self?.reopenSocket(after: 1)
| `- warning: capture of 'self' with non-sendable type 'SSDPCocoaAsyncSocketDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
159 | }
160 | monitor.start(queue: DispatchQueue.main)
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPCocoaAsyncSocketDiscovery.swift:153:20: warning: reference to captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
151 | monitor.pathUpdateHandler = { [weak self] path in
152 | // The first update only reports the current situation.
153 | guard !isFirstUpdate else {
| `- warning: reference to captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
154 | isFirstUpdate = false
155 | return
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPCocoaAsyncSocketDiscovery.swift:154:17: warning: mutation of captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
152 | // The first update only reports the current situation.
153 | guard !isFirstUpdate else {
154 | isFirstUpdate = false
| `- warning: mutation of captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
155 | return
156 | }
[101/102] Compiling SwiftUPnP OpenHomeVolume2Service.swift
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPCocoaAsyncSocketDiscovery.swift:158:13: warning: capture of 'self' with non-sendable type 'SSDPCocoaAsyncSocketDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
31 | import os.log
32 |
33 | class SSDPCocoaAsyncSocketDiscovery: SSDPDiscovery {
| `- note: class 'SSDPCocoaAsyncSocketDiscovery' does not conform to the 'Sendable' protocol
34 | private var multicastSocket: GCDAsyncUdpSocket?
35 | /// Bumped on every start and stop, so work scheduled for an earlier session (repeated searches, reopening the
:
156 | }
157 | guard path.status == .satisfied else { return }
158 | self?.reopenSocket(after: 1)
| `- warning: capture of 'self' with non-sendable type 'SSDPCocoaAsyncSocketDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
159 | }
160 | monitor.start(queue: DispatchQueue.main)
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPCocoaAsyncSocketDiscovery.swift:153:20: warning: reference to captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
151 | monitor.pathUpdateHandler = { [weak self] path in
152 | // The first update only reports the current situation.
153 | guard !isFirstUpdate else {
| `- warning: reference to captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
154 | isFirstUpdate = false
155 | return
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPCocoaAsyncSocketDiscovery.swift:154:17: warning: mutation of captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
152 | // The first update only reports the current situation.
153 | guard !isFirstUpdate else {
154 | isFirstUpdate = false
| `- warning: mutation of captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
155 | return
156 | }
[102/102] Compiling SwiftUPnP SSDPCocoaAsyncSocketDiscovery.swift
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPCocoaAsyncSocketDiscovery.swift:158:13: warning: capture of 'self' with non-sendable type 'SSDPCocoaAsyncSocketDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
31 | import os.log
32 |
33 | class SSDPCocoaAsyncSocketDiscovery: SSDPDiscovery {
| `- note: class 'SSDPCocoaAsyncSocketDiscovery' does not conform to the 'Sendable' protocol
34 | private var multicastSocket: GCDAsyncUdpSocket?
35 | /// Bumped on every start and stop, so work scheduled for an earlier session (repeated searches, reopening the
:
156 | }
157 | guard path.status == .satisfied else { return }
158 | self?.reopenSocket(after: 1)
| `- warning: capture of 'self' with non-sendable type 'SSDPCocoaAsyncSocketDiscovery?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
159 | }
160 | monitor.start(queue: DispatchQueue.main)
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPCocoaAsyncSocketDiscovery.swift:153:20: warning: reference to captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
151 | monitor.pathUpdateHandler = { [weak self] path in
152 | // The first update only reports the current situation.
153 | guard !isFirstUpdate else {
| `- warning: reference to captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
154 | isFirstUpdate = false
155 | return
/Users/admin/builder/spi-builder-workspace/Source/SSDP/SSDPCocoaAsyncSocketDiscovery.swift:154:17: warning: mutation of captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
152 | // The first update only reports the current situation.
153 | guard !isFirstUpdate else {
154 | isFirstUpdate = false
| `- warning: mutation of captured var 'isFirstUpdate' in concurrently-executing code; this is an error in the Swift 6 language mode
155 | return
156 | }
Build complete! (28.31s)
Fetching https://github.com/robbiehanson/CocoaAsyncSocket.git
[1/6440] Fetching cocoaasyncsocket
Fetched https://github.com/robbiehanson/CocoaAsyncSocket.git from cache (1.57s)
Fetching https://github.com/WeTransfer/Mocker.git
Fetching https://github.com/CoreOffice/XMLCoder.git
[1/1906] Fetching mocker
[2/12035] Fetching mocker, xmlcoder
Fetched https://github.com/WeTransfer/Mocker.git from cache (1.10s)
[1419/10129] Fetching xmlcoder
Fetched https://github.com/CoreOffice/XMLCoder.git from cache (2.16s)
Computing version for https://github.com/WeTransfer/Mocker.git
Computed https://github.com/WeTransfer/Mocker.git at 3.0.2 (2.77s)
Computing version for https://github.com/CoreOffice/XMLCoder.git
Computed https://github.com/CoreOffice/XMLCoder.git at 0.18.2 (0.60s)
Creating working copy for https://github.com/WeTransfer/Mocker.git
Working copy of https://github.com/WeTransfer/Mocker.git resolved at 3.0.2
Creating working copy for https://github.com/CoreOffice/XMLCoder.git
Working copy of https://github.com/CoreOffice/XMLCoder.git resolved at 0.18.2
Creating working copy for https://github.com/robbiehanson/CocoaAsyncSocket.git
Working copy of https://github.com/robbiehanson/CocoaAsyncSocket.git resolved at master (5ddba5e)
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" : "cocoaasyncsocket",
"requirement" : {
"branch" : [
"master"
]
},
"type" : "sourceControl",
"url" : "https://github.com/robbiehanson/CocoaAsyncSocket.git"
},
{
"identity" : "mocker",
"requirement" : {
"range" : [
{
"lower_bound" : "3.0.0",
"upper_bound" : "4.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/WeTransfer/Mocker.git"
}
],
"manifest_display_name" : "SwiftUPnP",
"name" : "SwiftUPnP",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "14.0"
},
{
"name" : "macos",
"version" : "11.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" : "SwiftUPnPTests",
"module_type" : "SwiftTarget",
"name" : "SwiftUPnPTests",
"path" : "Tests/SwiftUPnPTests",
"product_dependencies" : [
"Mocker"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/AVTransport1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/ConnectionManager1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/ContentDirectory1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/MediaServerDevice.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeConfig1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeCredentials1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeInfo1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeOAuth1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomePins1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomePlaylist1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomePlaylistManager1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeProduct1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeProduct2Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeRadio1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeReceiver1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeRendererDevice.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeSender1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeTime1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeTransport1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeVolume1Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/OpenHomeVolume2Service.xml",
"rule" : {
"process" : {
}
}
},
{
"path" : "/Users/admin/builder/spi-builder-workspace/Tests/SwiftUPnPTests/Resources/RenderingControl1Service.xml",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"HTTPServerTests.swift",
"SSDPDiscoveryTests.swift",
"SwiftUPnPTests.swift",
"UPnPSubscriptionTests.swift"
],
"target_dependencies" : [
"SwiftUPnP"
],
"type" : "test"
},
{
"c99name" : "SwiftUPnP",
"module_type" : "SwiftTarget",
"name" : "SwiftUPnP",
"path" : "Source",
"product_dependencies" : [
"XMLCoder",
"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/OpenHomeOAuth1Service.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/HTTPServer.swift",
"Support/IPHelper.swift",
"Support/Publisher+Stream.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.