Build Information
Successful build of CAAudioHardware, reference main (47fff8), with Swift 6.4 for macOS (SPM) on 2 Nov 2026 07:29:42 UTC.
Swift 6 data race errors: 0
Build Command
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64Build Log
========================================
RunAll
========================================
Builder version: 5.1.4
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/sbooth/CAAudioHardware.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/sbooth/CAAudioHardware
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at 47fff8f Add .editorconfig (#107)
Cloned https://github.com/sbooth/CAAudioHardware.git
Revision (git rev-parse @):
47fff8fd2f97a3f31afff3abc90b8455234e6c43
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/sbooth/CAAudioHardware.git at main
Fetching https://github.com/sbooth/CoreAudioExtensions
[1/374] Fetching coreaudioextensions
Fetched https://github.com/sbooth/CoreAudioExtensions (0.87s)
Computing version for https://github.com/sbooth/CoreAudioExtensions
Computed https://github.com/sbooth/CoreAudioExtensions at 0.3.0 (10.73s)
Creating working copy for https://github.com/sbooth/CoreAudioExtensions
Working copy of https://github.com/sbooth/CoreAudioExtensions resolved at 0.3.0
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
"identity": ".resolve-product-dependencies",
"name": "resolve-dependencies",
"url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
"traits": [
"default"
],
"dependencies": [
{
"identity": "caaudiohardware",
"name": "CAAudioHardware",
"url": "https://github.com/sbooth/CAAudioHardware.git",
"version": "unspecified",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/CAAudioHardware",
"traits": [
"default"
],
"dependencies": [
{
"identity": "coreaudioextensions",
"name": "CoreAudioExtensions",
"url": "https://github.com/sbooth/CoreAudioExtensions",
"version": "0.4.0",
"path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/CoreAudioExtensions",
"traits": [
"default"
],
"dependencies": [
]
}
]
}
]
}
Fetching https://github.com/sbooth/CAAudioHardware.git
[1/2216] Fetching caaudiohardware
Fetched https://github.com/sbooth/CAAudioHardware.git (0.98s)
Fetching https://github.com/sbooth/CoreAudioExtensions from cache
Fetched https://github.com/sbooth/CoreAudioExtensions from cache (0.50s)
Computing version for https://github.com/sbooth/CoreAudioExtensions
Computed https://github.com/sbooth/CoreAudioExtensions at 0.4.0 (0.56s)
Creating working copy for https://github.com/sbooth/CoreAudioExtensions
Working copy of https://github.com/sbooth/CoreAudioExtensions resolved at 0.4.0
Creating working copy for https://github.com/sbooth/CAAudioHardware.git
Working copy of https://github.com/sbooth/CAAudioHardware.git resolved at main (47fff8f)
warning: '.resolve-product-dependencies': dependency 'caaudiohardware' is not used by any target
Found 1 product dependencies
- CoreAudioExtensions
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.4
Building package at path: $PWD
https://github.com/sbooth/CAAudioHardware.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-27.0.0.app xcrun swift build --arch arm64
Building for debugging...
[Pre-planning 1 / 96]
[Planning deferred tasks]
[25 / 42]
[26 / 43] CoreAudioExtensions
[36 / 92]
[41 / 92]
[44 / 92]
[45 / 92]
[50 / 92]
[53 / 92]
[55 / 92]
[60 / 92]
[63 / 92]
[65 / 92]
[66 / 92]
[69 / 92]
[70 / 92]
[71 / 92]
[75 / 92] CoreAudioExtensions
[82 / 93] CAAudioHardware
[90 / 160]
[94 / 160]
[102 / 160]
[103 / 160]
[104 / 160]
[105 / 160]
[110 / 160]
[111 / 160]
[113 / 160]
[118 / 160]
[123 / 160]
[126 / 160]
[128 / 160]
[129 / 160]
[135 / 160]
[136 / 160]
[139 / 160]
[140 / 160]
[151 / 160] CAAudioHardware
[152 / 160] CAAudioHardware
[157 / 160] CAAudioHardware
Build complete! (10.58 sec)
Build complete.
{
"dependencies" : [
{
"identity" : "coreaudioextensions",
"requirement" : {
"range" : [
{
"lower_bound" : "0.3.0",
"upper_bound" : "1.0.0"
}
]
},
"type" : "sourceControl",
"url" : "https://github.com/sbooth/CoreAudioExtensions"
}
],
"manifest_display_name" : "CAAudioHardware",
"name" : "CAAudioHardware",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "10.15"
}
],
"products" : [
{
"name" : "CAAudioHardware",
"targets" : [
"CAAudioHardware"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "CAAudioHardwareTests",
"module_type" : "SwiftTarget",
"name" : "CAAudioHardwareTests",
"path" : "Tests/CAAudioHardwareTests",
"sources" : [
"CAAudioHardwareTests.swift"
],
"target_dependencies" : [
"CAAudioHardware"
],
"type" : "test"
},
{
"c99name" : "CAAudioHardware",
"module_type" : "SwiftTarget",
"name" : "CAAudioHardware",
"path" : "Sources/CAAudioHardware",
"product_dependencies" : [
"CoreAudioExtensions"
],
"product_memberships" : [
"CAAudioHardware"
],
"sources" : [
"AudioAggregateDevice.swift",
"AudioBox.swift",
"AudioBufferListWrapper.swift",
"AudioChannelLayoutWrapper.swift",
"AudioClockDevice.swift",
"AudioControl.swift",
"AudioDevice+ChannelNominalLineLevel.swift",
"AudioDevice+ClockSource.swift",
"AudioDevice+DataSource.swift",
"AudioDevice+HighPassFilterSetting.swift",
"AudioDevice+PlayThroughDestination.swift",
"AudioDevice+TransportType.swift",
"AudioDevice.swift",
"AudioEndpoint.swift",
"AudioEndpointDevice.swift",
"AudioHardwareIOProcStreamUsageWrapper.swift",
"AudioObject.swift",
"AudioObjectPropertyData.swift",
"AudioPlugIn.swift",
"AudioProcess.swift",
"AudioStream+TerminalType.swift",
"AudioStream.swift",
"AudioSubdevice+DriftCompensationQuality.swift",
"AudioSubdevice.swift",
"AudioSubtap.swift",
"AudioSystem.swift",
"AudioTap.swift",
"AudioTransportManager.swift",
"BooleanControl.swift",
"LevelControl.swift",
"PropertyAddress.swift",
"PropertyElement.swift",
"PropertyQualifier.swift",
"PropertyScope.swift",
"PropertySelector.swift",
"SelectorControl+Item.swift",
"SelectorControl.swift",
"SliderControl.swift",
"StereoPanControl.swift",
"String+fourCC.swift",
"UInt32+fourCC.swift",
"UInt32+hexString.swift",
"UnfairLock.swift"
],
"type" : "library"
}
],
"tools_version" : "6.0"
}
✅ Doc result (pending) reported
========================================
GenerateDocs
========================================
Generating docs at path: $PWD/.docs/sbooth/caaudiohardware/main
Repository: sbooth/CAAudioHardware
Swift version used: 6.4
Target: CAAudioHardware
Extracting symbol information for 'CAAudioHardware'...
Finished extracting symbol information for 'CAAudioHardware'. (2.05s)
Building documentation for 'CAAudioHardware'...
warning: Parameter 'scope' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:579:44-579:44
577 | /// Returns IOProc stream usage
578 | /// - note: This corresponds to the property `kAudioDevicePropertyIOProcStreamUsage`
579 + /// - parameter ioProc: The desired IOProc
| ╰─suggestion: Document 'scope' parameter
580 | public func ioProcStreamUsage(_ ioProc: UnsafeMutableRawPointer, inScope scope: PropertyScope) throws -> AudioHardwareIOProcStreamUsageWrapper {
581 | let property = PropertyAddress(PropertySelector(kAudioDevicePropertyIOProcStreamUsage), scope: scope)
warning: Parameter 'channel' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:683:46-683:46
681 | /// Converts volume `scalar` to decibels and returns the converted value
682 | /// - remark: This corresponds to the property `kAudioDevicePropertyVolumeScalarToDecibels`
683 + /// - parameter scalar: The value to convert
| ╰─suggestion: Document 'channel' parameter
684 | public func convertVolumeToDecibels(fromScalar scalar: Float, forChannel channel: PropertyElement = .main, inScope scope: PropertyScope = .global) throws -> Float {
685 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertyVolumeScalarToDecibels), scope: scope, element: channel), initialValue: scalar)
warning: Parameter 'scope' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:683:46-683:46
681 | /// Converts volume `scalar` to decibels and returns the converted value
682 | /// - remark: This corresponds to the property `kAudioDevicePropertyVolumeScalarToDecibels`
683 + /// - parameter scalar: The value to convert
| ╰─suggestion: Document 'scope' parameter
684 | public func convertVolumeToDecibels(fromScalar scalar: Float, forChannel channel: PropertyElement = .main, inScope scope: PropertyScope = .global) throws -> Float {
685 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertyVolumeScalarToDecibels), scope: scope, element: channel), initialValue: scalar)
warning: Parameter 'channel' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:690:48-690:48
688 | /// Converts volume `decibels` to scalar and returns the converted value
689 | /// - remark: This corresponds to the property `kAudioDevicePropertyVolumeDecibelsToScalar`
690 + /// - parameter decibels: The value to convert
| ╰─suggestion: Document 'channel' parameter
691 | public func convertVolumeToScalar(fromDecibels decibels: Float, forChannel channel: PropertyElement = .main, inScope scope: PropertyScope = .global) throws -> Float {
692 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertyVolumeDecibelsToScalar), scope: scope, element: channel), initialValue: decibels)
warning: Parameter 'scope' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:690:48-690:48
688 | /// Converts volume `decibels` to scalar and returns the converted value
689 | /// - remark: This corresponds to the property `kAudioDevicePropertyVolumeDecibelsToScalar`
690 + /// - parameter decibels: The value to convert
| ╰─suggestion: Document 'scope' parameter
691 | public func convertVolumeToScalar(fromDecibels decibels: Float, forChannel channel: PropertyElement = .main, inScope scope: PropertyScope = .global) throws -> Float {
692 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertyVolumeDecibelsToScalar), scope: scope, element: channel), initialValue: decibels)
warning: Parameter 'channel' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:933:46-933:46
931 | /// Converts play-through volume `scalar` to decibels and returns the converted value
932 | /// - remark: This corresponds to the property `kAudioDevicePropertyPlayThruVolumeScalarToDecibels`
933 + /// - parameter scalar: The value to convert
| ╰─suggestion: Document 'channel' parameter
934 | public func convertPlayThroughVolumeToDecibels(fromScalar scalar: Float, forChannel channel: PropertyElement = .main) throws -> Float {
935 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertyPlayThruVolumeScalarToDecibels), scope: .playThrough, element: channel), initialValue: scalar)
warning: Parameter 'channel' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:940:48-940:48
938 | /// Converts play-through volume `decibels` to scalar and returns the converted value
939 | /// - remark: This corresponds to the property `kAudioDevicePropertyPlayThruVolumeDecibelsToScalar`
940 + /// - parameter decibels: The value to convert
| ╰─suggestion: Document 'channel' parameter
941 | public func convertPlayThroughVolumeToScalar(fromDecibels decibels: Float, forChannel channel: PropertyElement = .main) throws -> Float {
942 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertyPlayThruVolumeDecibelsToScalar), scope: .playThrough, element: channel), initialValue: decibels)
warning: Parameter 'channel' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:1123:46-1123:46
1121 | /// Converts LFE volume `scalar` to decibels and returns the converted value
1122 | /// - remark: This corresponds to the property `kAudioDevicePropertySubVolumeScalarToDecibels`
1123 + /// - parameter scalar: The value to convert
| ╰─suggestion: Document 'channel' parameter
1124 | public func convertSubVolumeToDecibels(fromScalar scalar: Float, forChannel channel: PropertyElement = .main, inScope scope: PropertyScope = .global) throws -> Float {
1125 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertySubVolumeScalarToDecibels), scope: scope, element: channel), initialValue: scalar)
warning: Parameter 'scope' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:1123:46-1123:46
1121 | /// Converts LFE volume `scalar` to decibels and returns the converted value
1122 | /// - remark: This corresponds to the property `kAudioDevicePropertySubVolumeScalarToDecibels`
1123 + /// - parameter scalar: The value to convert
| ╰─suggestion: Document 'scope' parameter
1124 | public func convertSubVolumeToDecibels(fromScalar scalar: Float, forChannel channel: PropertyElement = .main, inScope scope: PropertyScope = .global) throws -> Float {
1125 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertySubVolumeScalarToDecibels), scope: scope, element: channel), initialValue: scalar)
warning: Parameter 'channel' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:1130:48-1130:48
1128 | /// Converts LFE volume `decibels` to scalar and returns the converted value
1129 | /// - remark: This corresponds to the property `kAudioDevicePropertySubVolumeDecibelsToScalar`
1130 + /// - parameter decibels: The value to convert
| ╰─suggestion: Document 'channel' parameter
1131 | public func convertSubVolumeToScalar(fromDecibels decibels: Float, forChannel channel: PropertyElement = .main, inScope scope: PropertyScope = .global) throws -> Float {
1132 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertySubVolumeDecibelsToScalar), scope: scope, element: channel), initialValue: decibels)
warning: Parameter 'scope' is missing documentation
--> Sources/CAAudioHardware/AudioDevice.swift:1130:48-1130:48
1128 | /// Converts LFE volume `decibels` to scalar and returns the converted value
1129 | /// - remark: This corresponds to the property `kAudioDevicePropertySubVolumeDecibelsToScalar`
1130 + /// - parameter decibels: The value to convert
| ╰─suggestion: Document 'scope' parameter
1131 | public func convertSubVolumeToScalar(fromDecibels decibels: Float, forChannel channel: PropertyElement = .main, inScope scope: PropertyScope = .global) throws -> Float {
1132 | return try getProperty(PropertyAddress(PropertySelector(kAudioDevicePropertySubVolumeDecibelsToScalar), scope: scope, element: channel), initialValue: decibels)
warning: Parameter 'value' not found in initializer declaration
--> Sources/CAAudioHardware/AudioStream+TerminalType.swift:18:19-18:24
16 |
17 | /// Creates a new instance with the specified value
18 + /// - parameter value: The value to use for the new instance
| ╰─suggestion: Replace 'value' with 'rawValue'
19 | public init(_ rawValue: UInt32) {
20 | self.rawValue = rawValue
warning: Parameter 'rawValue' is missing documentation
--> Sources/CAAudioHardware/AudioStream+TerminalType.swift:18:63-18:63
16 |
17 | /// Creates a new instance with the specified value
18 + /// - parameter value: The value to use for the new instance
| ╰─suggestion: Document 'rawValue' parameter
19 | public init(_ rawValue: UInt32) {
20 | self.rawValue = rawValue
warning: Parameter 'value' not found in initializer declaration
--> Sources/CAAudioHardware/AudioSubdevice+DriftCompensationQuality.swift:18:19-18:24
16 |
17 | /// Creates a new instance with the specified value
18 + /// - parameter value: The value to use for the new instance
| ╰─suggestion: Replace 'value' with 'rawValue'
19 | public init(_ rawValue: UInt32) {
20 | self.rawValue = rawValue
warning: Parameter 'rawValue' is missing documentation
--> Sources/CAAudioHardware/AudioSubdevice+DriftCompensationQuality.swift:18:63-18:63
16 |
17 | /// Creates a new instance with the specified value
18 + /// - parameter value: The value to use for the new instance
| ╰─suggestion: Document 'rawValue' parameter
19 | public init(_ rawValue: UInt32) {
20 | self.rawValue = rawValue
warning: Parameter 'value' is missing documentation
--> Sources/CAAudioHardware/AudioSubtap.swift:23:42-23:42
21 | /// Sets the extra latency
22 | /// - remark: This corresponds to the property `kAudioSubTapPropertyExtraLatency`
23 + /// - parameter scope: The desired scope
| ╰─suggestion: Document 'value' parameter
24 | public func setExtraLatency(_ value: Double, inScope scope: PropertyScope) throws {
25 | try setProperty(PropertyAddress(PropertySelector(kAudioSubTapPropertyExtraLatency), scope: scope), to: value)
warning: Parameter 'uid' not found in instance method declaration
--> Sources/CAAudioHardware/AudioSystem.swift:62:6-62:59
60 | /// Returns the `AudioObjectID` for the audio plug-in for `bundleID` or `nil` if unknown
61 | /// - remark: This corresponds to the property `kAudioHardwarePropertyTranslateBundleIDToPlugIn`
62 + /// - parameter uid: The bundle ID of the desired plug-in
| ╰─suggestion: Remove 'uid' parameter documentation
63 | public func plugInID(forBundleID bundleID: String) throws -> AudioObjectID? {
64 | var qualifier = bundleID as CFString
warning: Parameter 'bundleID' is missing documentation
--> Sources/CAAudioHardware/AudioSystem.swift:62:59-62:59
60 | /// Returns the `AudioObjectID` for the audio plug-in for `bundleID` or `nil` if unknown
61 | /// - remark: This corresponds to the property `kAudioHardwarePropertyTranslateBundleIDToPlugIn`
62 + /// - parameter uid: The bundle ID of the desired plug-in
| ╰─suggestion: Document 'bundleID' parameter
63 | public func plugInID(forBundleID bundleID: String) throws -> AudioObjectID? {
64 | var qualifier = bundleID as CFString
warning: Parameter 'uid' not found in instance method declaration
--> Sources/CAAudioHardware/AudioSystem.swift:74:6-74:69
72 | /// Returns the `AudioObjectID` for the audio transport manager for `bundleID` or `nil` if unknown
73 | /// - remark: This corresponds to the property `kAudioHardwarePropertyTranslateBundleIDToTransportManager`
74 + /// - parameter uid: The bundle ID of the desired transport manager
| ╰─suggestion: Remove 'uid' parameter documentation
75 | public func transportManagerID(forBundleID bundleID: String) throws -> AudioObjectID? {
76 | var qualifier = bundleID as CFString
warning: Parameter 'bundleID' is missing documentation
--> Sources/CAAudioHardware/AudioSystem.swift:74:69-74:69
72 | /// Returns the `AudioObjectID` for the audio transport manager for `bundleID` or `nil` if unknown
73 | /// - remark: This corresponds to the property `kAudioHardwarePropertyTranslateBundleIDToTransportManager`
74 + /// - parameter uid: The bundle ID of the desired transport manager
| ╰─suggestion: Document 'bundleID' parameter
75 | public func transportManagerID(forBundleID bundleID: String) throws -> AudioObjectID? {
76 | var qualifier = bundleID as CFString
Finished building documentation for 'CAAudioHardware' (0.53s)
Generated documentation archive at:
/Users/admin/builder/spi-builder-workspace/.docs/sbooth/caaudiohardware/main
Fetching https://github.com/swiftlang/swift-docc-plugin
Updating https://github.com/sbooth/CoreAudioExtensions
[1/2345] Fetching swift-docc-plugin
Updated https://github.com/sbooth/CoreAudioExtensions (1.56s)
Fetched https://github.com/swiftlang/swift-docc-plugin (1.56s)
Computing version for https://github.com/sbooth/CoreAudioExtensions
Computed https://github.com/sbooth/CoreAudioExtensions at 0.3.0 (2.10s)
Computing version for https://github.com/swiftlang/swift-docc-plugin
Computed https://github.com/swiftlang/swift-docc-plugin at 1.5.0 (0.62s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3850] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit (1.26s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (1.96s)
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
Creating working copy for https://github.com/swiftlang/swift-docc-plugin
Working copy of https://github.com/swiftlang/swift-docc-plugin resolved at 1.5.0
Building for debugging...
[Planning deferred tasks]
[18 / 41]
[20 / 43] Snippets
[31 / 58] SymbolKit
[40 / 58] SymbolKit
[52 / 59] SymbolKit
[52 / 59] snippet-extract-product
[56 / 63] snippet-extract-product
[59 / 63] snippet-extract-product
[61 / 63] snippet-extract-product
Build complete! (2.36 sec)
Building for debugging...
[Planning deferred tasks]
[2 / 19]
[3 / 20] CoreAudioExtensions
[7 / 24] CoreAudioExtensions
[11 / 21] CoreAudioExtensions
[22 / 32] CoreAudioExtensions
[23 / 31] CAAudioHardware
[25 / 27] CAAudioHardware
[26 / 27] CAAudioHardware
Build complete! (1.85 sec)
1848
13 /Users/admin/builder/spi-builder-workspace/.docs/sbooth/caaudiohardware/main
✅ Doc result (uploading) reported
========================================
SyncDocs
========================================
Doc archive source directory: $PWD/.docs/sbooth/caaudiohardware/main
File count: 1848
Doc size: 13.0MB
Preparing doc bundle ...
Using presigned URL upload - AWS credentials not required
Uploading -sbooth-caaudiohardware-main-ecd78107.zip to presigned URL
Starting upload of 2585256 bytes...
Upload completed successfully
Done.