The Swift Package Index logo.Swift Package Index

Has it really been five years since Swift Package Index launched? Read our anniversary blog post!

Build Information

Successful build of SwiftUPnP, reference main (9ec953), with Swift 6.0 for macOS (SPM) on 1 Jun 2025 21:44:02 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64

Build Log

========================================
RunAll
========================================
Builder version: 4.63.1
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 9ec953f Add support for dc:creator in the DIDL type.
Cloned https://github.com/katoemba/SwiftUPnP.git
Revision (git rev-parse @):
9ec953f333d86ba7d0f3284946dd5cc43864a942
SUCCESS checkout https://github.com/katoemba/SwiftUPnP.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $PWD
https://github.com/katoemba/SwiftUPnP.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.2.0.app xcrun swift build --arch arm64
Building for debugging...
[0/11] Write sources
[2/11] Write UPnPCodeGenerator-entitlement.plist
[2/11] Write sources
[5/11] Write swift-version-5BDAB9E9C0126B9D.txt
[6/76] Compiling CocoaAsyncSocket GCDAsyncUdpSocket.m
[7/76] Compiling CocoaAsyncSocket GCDAsyncSocket.m
[9/76] Emitting module XMLCoder
[10/81] Compiling XMLCoder NullBox.swift
[11/81] Compiling XMLCoder SharedBox.swift
[12/83] Compiling XMLCoder XMLEncoderImplementation.swift
[13/83] Compiling XMLCoder XMLEncodingStorage.swift
[14/83] Compiling XMLCoder XMLKeyedEncodingContainer.swift
[15/83] Compiling XMLCoder XMLReferencingEncoder.swift
[16/83] Compiling XMLCoder XMLUnkeyedEncodingContainer.swift
[17/83] Compiling XMLCoder XMLDecoder.swift
[18/83] Compiling XMLCoder XMLDecoderImplementation.swift
[19/83] Compiling XMLCoder XMLDecodingStorage.swift
[20/83] Compiling XMLCoder XMLKeyedDecodingContainer.swift
[21/83] Compiling XMLCoder XMLUnkeyedDecodingContainer.swift
[22/83] Compiling XMLCoder DynamicNodeEncoding.swift
[23/83] Compiling XMLCoder EncodingErrorExtension.swift
[24/83] Compiling XMLCoder SingleValueEncodingContainer.swift
[25/83] Compiling XMLCoder XMLChoiceEncodingContainer.swift
[26/83] Compiling XMLCoder XMLEncoder.swift
[27/83] Compiling XMLCoder FloatBox.swift
[28/83] Compiling XMLCoder IntBox.swift
[29/83] Compiling XMLCoder Element.swift
[30/83] Compiling XMLCoder KeyedBox.swift
[31/83] Compiling XMLCoder UIntBox.swift
[32/83] Compiling XMLCoder URLBox.swift
[33/83] Compiling XMLCoder UnkeyedBox.swift
[34/83] Compiling XMLCoder ValueBox.swift
[38/83] Compiling Swifter String+SHA1.swift
[39/83] Compiling Swifter WebSockets.swift
[42/83] Compiling XMLCoder Box.swift
[43/83] Compiling XMLCoder ChoiceBox.swift
[47/83] Compiling XMLCoder Attribute.swift
[48/83] Compiling XMLCoder BoolBox.swift
[49/83] Emitting module Swifter
[50/83] Compiling XMLCoder DecimalBox.swift
[52/83] Compiling XMLCoder DoubleBox.swift
[56/83] Compiling XMLCoder DataBox.swift
[58/83] Compiling XMLCoder DateBox.swift
[64/83] Compiling XMLCoder ElementAndAttribute.swift
[65/83] Compiling XMLCoder ISO8601DateFormatter.swift
[66/83] Compiling XMLCoder KeyedStorage.swift
[67/83] Compiling XMLCoder Metatypes.swift
[68/83] Compiling XMLCoder String+Extensions.swift
[69/83] Compiling XMLCoder XMLChoiceCodingKey.swift
[70/83] Compiling XMLCoder XMLCoderElement.swift
[71/83] Compiling XMLCoder XMLDocumentType.swift
[72/83] Compiling XMLCoder XMLHeader.swift
[73/83] Compiling XMLCoder XMLKey.swift
[74/83] Compiling XMLCoder XMLStackParser.swift
[75/83] Compiling XMLCoder DecodingErrorExtension.swift
[76/83] Compiling XMLCoder DynamicNodeDecoding.swift
[77/83] Compiling XMLCoder SingleValueDecodingContainer.swift
[78/83] Compiling XMLCoder XMLChoiceDecodingContainer.swift
[81/119] Compiling UPnPCodeGenerator main.swift
[82/119] Compiling UPnPCodeGenerator ServiceDefinition.swift
[83/119] Compiling UPnPCodeGenerator SourceGenerator.swift
[84/119] Emitting module UPnPCodeGenerator
[84/119] Write Objects.LinkFileList
[85/119] Linking UPnPCodeGenerator
[86/119] Applying UPnPCodeGenerator
[88/119] Compiling SwiftUPnP XMLParserSupport.swift
[89/119] Compiling SwiftUPnP UPnPDevice.swift
[90/119] Compiling SwiftUPnP UPnPDeviceDefinition.swift
[91/122] Compiling SwiftUPnP UserAgentGenerator.swift
[92/122] Compiling SwiftUPnP IPHelper.swift
[93/122] Compiling SwiftUPnP Publisher+Stream.swift
[94/122] Compiling SwiftUPnP UPnPRegistry.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:262:31: warning: capture of 'self' with non-sendable type 'UPnPService?' in a `@Sendable` closure
 30 | import os.log
 31 |
 32 | public class UPnPService: Equatable, Identifiable, Hashable {
    |              `- note: class 'UPnPService' does not conform to the 'Sendable' protocol
 33 |     public enum SubscriptionStatus {
 34 |         case unsubscribed
    :
260 |                 Logger.swiftUPnP.debug("Will renew sid: \(subscriptionId) at: \(Date(timeIntervalSinceNow: Double(timeout - 10)))")
261 |                 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now().advanced(by: .seconds(timeout - 10))) { [weak self] in
262 |                     guard let self else { return }
    |                               `- warning: capture of 'self' with non-sendable type 'UPnPService?' in a `@Sendable` closure
263 |                     Task {
264 |                         await self.renewSubscriptionToEvents()
[95/122] Compiling SwiftUPnP UPnPService.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:262:31: warning: capture of 'self' with non-sendable type 'UPnPService?' in a `@Sendable` closure
 30 | import os.log
 31 |
 32 | public class UPnPService: Equatable, Identifiable, Hashable {
    |              `- note: class 'UPnPService' does not conform to the 'Sendable' protocol
 33 |     public enum SubscriptionStatus {
 34 |         case unsubscribed
    :
260 |                 Logger.swiftUPnP.debug("Will renew sid: \(subscriptionId) at: \(Date(timeIntervalSinceNow: Double(timeout - 10)))")
261 |                 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now().advanced(by: .seconds(timeout - 10))) { [weak self] in
262 |                     guard let self else { return }
    |                               `- warning: capture of 'self' with non-sendable type 'UPnPService?' in a `@Sendable` closure
263 |                     Task {
264 |                         await self.renewSubscriptionToEvents()
[96/122] Compiling SwiftUPnP UPnPServiceDefinition.swift
/Users/admin/builder/spi-builder-workspace/Source/UPnP/UPnPService.swift:262:31: warning: capture of 'self' with non-sendable type 'UPnPService?' in a `@Sendable` closure
 30 | import os.log
 31 |
 32 | public class UPnPService: Equatable, Identifiable, Hashable {
    |              `- note: class 'UPnPService' does not conform to the 'Sendable' protocol
 33 |     public enum SubscriptionStatus {
 34 |         case unsubscribed
    :
260 |                 Logger.swiftUPnP.debug("Will renew sid: \(subscriptionId) at: \(Date(timeIntervalSinceNow: Double(timeout - 10)))")
261 |                 DispatchQueue.main.asyncAfter(deadline: DispatchTime.now().advanced(by: .seconds(timeout - 10))) { [weak self] in
262 |                     guard let self else { return }
    |                               `- warning: capture of 'self' with non-sendable type 'UPnPService?' in a `@Sendable` closure
263 |                     Task {
264 |                         await self.renewSubscriptionToEvents()
[97/122] Emitting module SwiftUPnP
/Users/admin/builder/spi-builder-workspace/Source/Profiles/OpenHome Profile/OpenHomeTransport1Service.swift:176:117: warning: keyword 'repeat' does not need to be escaped in argument list
174 | 			var action: SoapAction
175 | 		}
176 | 		try await post(action: "SetRepeat", envelope: Envelope(body: Body(action: SoapAction(urn: Attribute(serviceType), `repeat`: `repeat`))), log: log)
    |                                                                                                                     `- warning: keyword 'repeat' does not need to be escaped in argument list
177 | 	}
178 |
[98/122] Compiling SwiftUPnP AVTransport1Service.swift
[99/122] Compiling SwiftUPnP ConnectionManager1Service.swift
[100/122] Compiling SwiftUPnP ContentDirectory1Service+DIDL.swift
[101/122] Compiling SwiftUPnP ContentDirectory1Service.swift
[102/122] Compiling SwiftUPnP OpenHomeOAuth1Service.swift
[103/122] Compiling SwiftUPnP OpenHomePins1Service.swift
[104/122] Compiling SwiftUPnP OpenHomePlaylist1Service+DIDL.swift
[105/122] Compiling SwiftUPnP OpenHomePlaylist1Service.swift
[106/122] Compiling SwiftUPnP RenderingControl1Service.swift
[107/122] Compiling SwiftUPnP OpenHomeConfig1Service.swift
[108/122] Compiling SwiftUPnP OpenHomeCredentials1Service.swift
[109/122] Compiling SwiftUPnP OpenHomeInfo1Service.swift
[110/122] Compiling SwiftUPnP SSDPCocoaAsyncSocketDiscovery.swift
[111/122] Compiling SwiftUPnP SSDPDiscovery.swift
[112/122] Compiling SwiftUPnP SSDPNetworkDiscovery.swift
[113/122] Compiling SwiftUPnP OpenHomeReceiver1Service.swift
[114/122] Compiling SwiftUPnP OpenHomeSender1Service.swift
[115/122] Compiling SwiftUPnP OpenHomeTime1Service.swift
[116/122] Compiling SwiftUPnP OpenHomeTransport1Service.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/OpenHome Profile/OpenHomeTransport1Service.swift:176:117: warning: keyword 'repeat' does not need to be escaped in argument list
174 | 			var action: SoapAction
175 | 		}
176 | 		try await post(action: "SetRepeat", envelope: Envelope(body: Body(action: SoapAction(urn: Attribute(serviceType), `repeat`: `repeat`))), log: log)
    |                                                                                                                     `- warning: keyword 'repeat' does not need to be escaped in argument list
177 | 	}
178 |
[117/122] Compiling SwiftUPnP OpenHomeVolume1Service.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/OpenHome Profile/OpenHomeTransport1Service.swift:176:117: warning: keyword 'repeat' does not need to be escaped in argument list
174 | 			var action: SoapAction
175 | 		}
176 | 		try await post(action: "SetRepeat", envelope: Envelope(body: Body(action: SoapAction(urn: Attribute(serviceType), `repeat`: `repeat`))), log: log)
    |                                                                                                                     `- warning: keyword 'repeat' does not need to be escaped in argument list
177 | 	}
178 |
[118/122] Compiling SwiftUPnP OpenHomeVolume2Service.swift
/Users/admin/builder/spi-builder-workspace/Source/Profiles/OpenHome Profile/OpenHomeTransport1Service.swift:176:117: warning: keyword 'repeat' does not need to be escaped in argument list
174 | 			var action: SoapAction
175 | 		}
176 | 		try await post(action: "SetRepeat", envelope: Envelope(body: Body(action: SoapAction(urn: Attribute(serviceType), `repeat`: `repeat`))), log: log)
    |                                                                                                                     `- warning: keyword 'repeat' does not need to be escaped in argument list
177 | 	}
178 |
[119/122] Compiling SwiftUPnP OpenHomePlaylistManager1Service.swift
[120/122] Compiling SwiftUPnP OpenHomeProduct1Service.swift
[121/122] Compiling SwiftUPnP OpenHomeProduct2Service.swift
[122/122] Compiling SwiftUPnP OpenHomeRadio1Service.swift
Build complete! (27.55s)
Fetching https://github.com/httpswift/swifter.git
[1/6050] Fetching swifter
Fetched https://github.com/httpswift/swifter.git from cache (1.33s)
Fetching https://github.com/robbiehanson/CocoaAsyncSocket.git
[1/6425] Fetching cocoaasyncsocket
Fetched https://github.com/robbiehanson/CocoaAsyncSocket.git from cache (1.32s)
Fetching https://github.com/CoreOffice/XMLCoder.git
Fetching https://github.com/WeTransfer/Mocker.git
[1/10011] Fetching xmlcoder
[2/11902] Fetching xmlcoder, mocker
Fetched https://github.com/WeTransfer/Mocker.git from cache (1.12s)
Fetched https://github.com/CoreOffice/XMLCoder.git from cache (1.12s)
Computing version for https://github.com/WeTransfer/Mocker.git
Computed https://github.com/WeTransfer/Mocker.git at 3.0.2 (0.57s)
Computing version for https://github.com/CoreOffice/XMLCoder.git
Computed https://github.com/CoreOffice/XMLCoder.git at 0.17.1 (0.57s)
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/httpswift/swifter.git
Working copy of https://github.com/httpswift/swifter.git resolved at stable (1e4f51c)
Creating working copy for https://github.com/CoreOffice/XMLCoder.git
Working copy of https://github.com/CoreOffice/XMLCoder.git resolved at 0.17.1
Creating working copy for https://github.com/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" : "swifter",
      "requirement" : {
        "branch" : [
          "stable"
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/httpswift/swifter.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" : [
        "SwiftUPnPTests.swift"
      ],
      "target_dependencies" : [
        "SwiftUPnP"
      ],
      "type" : "test"
    },
    {
      "c99name" : "SwiftUPnP",
      "module_type" : "SwiftTarget",
      "name" : "SwiftUPnP",
      "path" : "Source",
      "product_dependencies" : [
        "XMLCoder",
        "Swifter",
        "CocoaAsyncSocket"
      ],
      "product_memberships" : [
        "SwiftUPnP"
      ],
      "sources" : [
        "Profiles/AV Profile/AVTransport1Service.swift",
        "Profiles/AV Profile/ConnectionManager1Service.swift",
        "Profiles/AV Profile/ContentDirectory1Service+DIDL.swift",
        "Profiles/AV Profile/ContentDirectory1Service.swift",
        "Profiles/AV Profile/RenderingControl1Service.swift",
        "Profiles/OpenHome Profile/OpenHomeConfig1Service.swift",
        "Profiles/OpenHome Profile/OpenHomeCredentials1Service.swift",
        "Profiles/OpenHome Profile/OpenHomeInfo1Service.swift",
        "Profiles/OpenHome Profile/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/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.