The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Failed to build kubrick, reference master (41b1ab), with Swift 6.0 for Linux on 11 Sep 2024 08:47:32 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.53.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/krad/kubrick.git
Reference: master
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
From https://github.com/krad/kubrick
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at 41b1abc Not really happy with this compromise but it will do for pre-processing on macOS.  Super frustrated with CMSampleBuffer behavior
Cloned https://github.com/krad/kubrick.git
Revision (git rev-parse @):
41b1abcb79d58c9e70379bb314187c20ebabcf0f
SUCCESS checkout https://github.com/krad/kubrick.git at master
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.0
Building package at path:  $PWD
https://github.com/krad/kubrick.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:9d7dab235f2b0b46edadd73b1fb0c3b5323df02053420324a4a2f8ca89cb54a5
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Fetching https://github.com/krad/grip.git
[1/176] Fetching grip
Fetched https://github.com/krad/grip.git from cache (0.16s)
Computing version for https://github.com/krad/grip.git
Computed https://github.com/krad/grip.git at 1.3.5 (0.43s)
Creating working copy for https://github.com/krad/grip.git
Working copy of https://github.com/krad/grip.git resolved at 1.3.5
Building for debugging...
[0/3] Write sources
[2/3] Write swift-version-24593BA9C3E375BF.txt
[4/16] Compiling grip VideoDimensionsPacket.swift
[5/16] Compiling grip VideoParamSetPacket.swift
[6/17] Compiling grip Packets.swift
[7/17] Compiling grip StreamTypePacket.swift
[8/17] Compiling grip StreamType.swift
[9/17] Compiling grip VideoSamplePacket.swift
[10/17] Compiling grip NALU.swift
[11/17] Compiling grip AudioSamplePacket.swift
[12/17] Compiling grip Writeable.swift
[13/17] Compiling grip CompressedSample.swift
[14/17] Compiling grip ByteHelpers.swift
[15/17] Emitting module grip
[16/17] Compiling grip BinaryEncodable.swift
[17/17] Compiling grip BinaryEncodableExtensions.swift
[19/47] Compiling kubrick Camera.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
  7 |
  8 |     public var frameRate: Float64 {
  9 |         didSet { self.update(frameRate: self.frameRate) }
    |                       `- error: value of type 'Camera' has no member 'update'
 10 |     }
 11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
 11 |
 12 |     public var orientation: CameraOrientation = .unknown {
 13 |         didSet { self.update(orientation: self.orientation) }
    |                       `- error: value of type 'Camera' has no member 'update'
 14 |     }
 15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
  1 | public class Camera: MediaDevice {
    |              `- error: type 'Camera' does not conform to protocol 'MediaDevice'
  2 |
  3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
 17 |         self.source     = source
 18 |         self.frameRate  = 30
 19 |         self.update(frameRate: self.frameRate)
    |              `- error: value of type 'Camera' has no member 'update'
 20 |     }
 21 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
 1 | public class Display: MediaDevice {
   |              `- error: type 'Display' does not conform to protocol 'MediaDevice'
 2 |     public var source: Source
 3 |     public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
[20/47] Compiling kubrick Clock.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
  7 |
  8 |     public var frameRate: Float64 {
  9 |         didSet { self.update(frameRate: self.frameRate) }
    |                       `- error: value of type 'Camera' has no member 'update'
 10 |     }
 11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
 11 |
 12 |     public var orientation: CameraOrientation = .unknown {
 13 |         didSet { self.update(orientation: self.orientation) }
    |                       `- error: value of type 'Camera' has no member 'update'
 14 |     }
 15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
  1 | public class Camera: MediaDevice {
    |              `- error: type 'Camera' does not conform to protocol 'MediaDevice'
  2 |
  3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
 17 |         self.source     = source
 18 |         self.frameRate  = 30
 19 |         self.update(frameRate: self.frameRate)
    |              `- error: value of type 'Camera' has no member 'update'
 20 |     }
 21 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
 1 | public class Display: MediaDevice {
   |              `- error: type 'Display' does not conform to protocol 'MediaDevice'
 2 |     public var source: Source
 3 |     public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
[21/47] Compiling kubrick Display.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
  7 |
  8 |     public var frameRate: Float64 {
  9 |         didSet { self.update(frameRate: self.frameRate) }
    |                       `- error: value of type 'Camera' has no member 'update'
 10 |     }
 11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
 11 |
 12 |     public var orientation: CameraOrientation = .unknown {
 13 |         didSet { self.update(orientation: self.orientation) }
    |                       `- error: value of type 'Camera' has no member 'update'
 14 |     }
 15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
  1 | public class Camera: MediaDevice {
    |              `- error: type 'Camera' does not conform to protocol 'MediaDevice'
  2 |
  3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
 17 |         self.source     = source
 18 |         self.frameRate  = 30
 19 |         self.update(frameRate: self.frameRate)
    |              `- error: value of type 'Camera' has no member 'update'
 20 |     }
 21 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
 1 | public class Display: MediaDevice {
   |              `- error: type 'Display' does not conform to protocol 'MediaDevice'
 2 |     public var source: Source
 3 |     public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
[22/47] Compiling kubrick MediaDevice.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
  7 |
  8 |     public var frameRate: Float64 {
  9 |         didSet { self.update(frameRate: self.frameRate) }
    |                       `- error: value of type 'Camera' has no member 'update'
 10 |     }
 11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
 11 |
 12 |     public var orientation: CameraOrientation = .unknown {
 13 |         didSet { self.update(orientation: self.orientation) }
    |                       `- error: value of type 'Camera' has no member 'update'
 14 |     }
 15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
  1 | public class Camera: MediaDevice {
    |              `- error: type 'Camera' does not conform to protocol 'MediaDevice'
  2 |
  3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
 17 |         self.source     = source
 18 |         self.frameRate  = 30
 19 |         self.update(frameRate: self.frameRate)
    |              `- error: value of type 'Camera' has no member 'update'
 20 |     }
 21 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
 1 | public class Display: MediaDevice {
   |              `- error: type 'Display' does not conform to protocol 'MediaDevice'
 2 |     public var source: Source
 3 |     public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
[23/51] Compiling kubrick SampleTransport.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:39:10: warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 37 |
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
    |          `- warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:40:10: warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
    |          `- warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:41:10: warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
    |          `- warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:42:10: warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
    |          `- warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 43 |     case inputMissingPorts(mediaType: MediaType)
 44 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:43:10: warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
    |          `- warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 44 | }
 45 |
/host/spi-builder-workspace/Sources/kubrick/Sources/Source.swift:7:13: note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 5 | }
 6 |
 7 | public enum MediaType {
   |             `- note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 8 |     case video
 9 |     case audio
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
 45 |
 46 | public class CaptureSession: Session {
 47 |     open let base = Base()
    |                     `- error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
 48 |
 49 |     public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 45 |
 46 | public class CaptureSession: Session {
 47 |     open let base = Base()
    |              `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 48 |
 49 |     public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
  4 |
  5 | public protocol Session {
  6 |     associatedtype Base: BaseSession
    |                    `- note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
  7 |     func startRunning()
  8 |     func stopRunning()
    :
 44 | }
 45 |
 46 | public class CaptureSession: Session {
    |              `- error: type 'CaptureSession' does not conform to protocol 'Session'
 47 |     open let base = Base()
 48 |
[24/51] Compiling kubrick Session.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:39:10: warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 37 |
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
    |          `- warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:40:10: warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
    |          `- warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:41:10: warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
    |          `- warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:42:10: warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
    |          `- warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 43 |     case inputMissingPorts(mediaType: MediaType)
 44 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:43:10: warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
    |          `- warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 44 | }
 45 |
/host/spi-builder-workspace/Sources/kubrick/Sources/Source.swift:7:13: note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 5 | }
 6 |
 7 | public enum MediaType {
   |             `- note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 8 |     case video
 9 |     case audio
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
 45 |
 46 | public class CaptureSession: Session {
 47 |     open let base = Base()
    |                     `- error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
 48 |
 49 |     public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 45 |
 46 | public class CaptureSession: Session {
 47 |     open let base = Base()
    |              `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 48 |
 49 |     public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
  4 |
  5 | public protocol Session {
  6 |     associatedtype Base: BaseSession
    |                    `- note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
  7 |     func startRunning()
  8 |     func stopRunning()
    :
 44 | }
 45 |
 46 | public class CaptureSession: Session {
    |              `- error: type 'CaptureSession' does not conform to protocol 'Session'
 47 |     open let base = Base()
 48 |
[25/51] Compiling kubrick AACEncoderSink.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:39:10: warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 37 |
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
    |          `- warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:40:10: warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
    |          `- warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:41:10: warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
    |          `- warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:42:10: warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
    |          `- warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 43 |     case inputMissingPorts(mediaType: MediaType)
 44 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:43:10: warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
    |          `- warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 44 | }
 45 |
/host/spi-builder-workspace/Sources/kubrick/Sources/Source.swift:7:13: note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 5 | }
 6 |
 7 | public enum MediaType {
   |             `- note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 8 |     case video
 9 |     case audio
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
 45 |
 46 | public class CaptureSession: Session {
 47 |     open let base = Base()
    |                     `- error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
 48 |
 49 |     public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 45 |
 46 | public class CaptureSession: Session {
 47 |     open let base = Base()
    |              `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 48 |
 49 |     public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
  4 |
  5 | public protocol Session {
  6 |     associatedtype Base: BaseSession
    |                    `- note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
  7 |     func startRunning()
  8 |     func stopRunning()
    :
 44 | }
 45 |
 46 | public class CaptureSession: Session {
    |              `- error: type 'CaptureSession' does not conform to protocol 'Session'
 47 |     open let base = Base()
 48 |
[26/51] Compiling kubrick EndpointSink.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:39:10: warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 37 |
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
    |          `- warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:40:10: warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
    |          `- warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:41:10: warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
    |          `- warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:42:10: warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
    |          `- warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 43 |     case inputMissingPorts(mediaType: MediaType)
 44 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:43:10: warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
    |          `- warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 44 | }
 45 |
/host/spi-builder-workspace/Sources/kubrick/Sources/Source.swift:7:13: note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 5 | }
 6 |
 7 | public enum MediaType {
   |             `- note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 8 |     case video
 9 |     case audio
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
 45 |
 46 | public class CaptureSession: Session {
 47 |     open let base = Base()
    |                     `- error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
 48 |
 49 |     public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 45 |
 46 | public class CaptureSession: Session {
 47 |     open let base = Base()
    |              `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 48 |
 49 |     public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
  4 |
  5 | public protocol Session {
  6 |     associatedtype Base: BaseSession
    |                    `- note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
  7 |     func startRunning()
  8 |     func stopRunning()
    :
 44 | }
 45 |
 46 | public class CaptureSession: Session {
    |              `- error: type 'CaptureSession' does not conform to protocol 'Session'
 47 |     open let base = Base()
 48 |
[27/51] Compiling kubrick AudioReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class AudioReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
11 |     public init(_ ident: String? = nil) {
12 |         if let i = ident { self.ident = i }
13 |         else { self.ident = UUID().uuidString }
   |                             `- error: cannot find 'UUID' in scope
14 |     }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class VideoReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
   |                                                 `- error: cannot find type 'CMSampleBuffer' in scope
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                                     `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                  `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
11 |     public init(_ ident: String? = nil) {
12 |         if let i = ident { self.ident = i }
13 |         else { self.ident = UUID().uuidString }
   |                             `- error: cannot find 'UUID' in scope
14 |     }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
   |                      `- error: cannot find type 'CFArray' in scope
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 |                                    to: CFMutableDictionary.self)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
   |                                    `- error: cannot find 'CFArrayGetValueAtIndex' in scope
38 |                                    to: CFMutableDictionary.self)
39 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 |                                    to: CFMutableDictionary.self)
   |                                        `- error: cannot find 'CFMutableDictionary' in scope
39 |
40 | //    let key   = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
   |                      `- error: generic parameter 'U' could not be inferred
38 |                                    to: CFMutableDictionary.self)
39 |
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
1 | @inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
  |                        `- note: in call to function 'unsafeBitCast(_:to:)'
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
40 | //    let key   = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
41 | //    let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
   |                                        `- error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 |     CFDictionarySetValue(dictionary, key, value)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
41 | //    let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
   |                                          `- error: cannot find 'kCFBooleanTrue' in scope
44 |     CFDictionarySetValue(dictionary, key, value)
45 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 |     CFDictionarySetValue(dictionary, key, value)
   |     `- error: cannot find 'CFDictionarySetValue' in scope
45 | }
46 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
   |                          `- error: cannot find type 'CMSampleBuffer' in scope
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
   |                      `- error: cannot find 'CMSampleTimingInfo' in scope
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
   |                                                   `- error: cannot find 'CMSampleBufferGetDuration' in scope
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
   |                                                                `- error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
   |                                                          `- error: cannot find 'kCMTimeInvalid' in scope
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
   |                  `- error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
55 |                                                        sampleBuffer,
56 |                                                        1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
   |                                                        `- error: cannot find 'kCFAllocatorDefault' in scope
55 |                                                        sampleBuffer,
56 |                                                        1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
58 |                                                        &newSampleBuffer)
59 |
60 |     if status == noErr {
   |                  `- error: cannot find 'noErr' in scope
61 |         return newSampleBuffer
62 |     }
[28/51] Compiling kubrick VideoReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class AudioReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
11 |     public init(_ ident: String? = nil) {
12 |         if let i = ident { self.ident = i }
13 |         else { self.ident = UUID().uuidString }
   |                             `- error: cannot find 'UUID' in scope
14 |     }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class VideoReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
   |                                                 `- error: cannot find type 'CMSampleBuffer' in scope
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                                     `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                  `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
11 |     public init(_ ident: String? = nil) {
12 |         if let i = ident { self.ident = i }
13 |         else { self.ident = UUID().uuidString }
   |                             `- error: cannot find 'UUID' in scope
14 |     }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
   |                      `- error: cannot find type 'CFArray' in scope
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 |                                    to: CFMutableDictionary.self)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
   |                                    `- error: cannot find 'CFArrayGetValueAtIndex' in scope
38 |                                    to: CFMutableDictionary.self)
39 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 |                                    to: CFMutableDictionary.self)
   |                                        `- error: cannot find 'CFMutableDictionary' in scope
39 |
40 | //    let key   = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
   |                      `- error: generic parameter 'U' could not be inferred
38 |                                    to: CFMutableDictionary.self)
39 |
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
1 | @inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
  |                        `- note: in call to function 'unsafeBitCast(_:to:)'
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
40 | //    let key   = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
41 | //    let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
   |                                        `- error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 |     CFDictionarySetValue(dictionary, key, value)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
41 | //    let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
   |                                          `- error: cannot find 'kCFBooleanTrue' in scope
44 |     CFDictionarySetValue(dictionary, key, value)
45 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 |     CFDictionarySetValue(dictionary, key, value)
   |     `- error: cannot find 'CFDictionarySetValue' in scope
45 | }
46 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
   |                          `- error: cannot find type 'CMSampleBuffer' in scope
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
   |                      `- error: cannot find 'CMSampleTimingInfo' in scope
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
   |                                                   `- error: cannot find 'CMSampleBufferGetDuration' in scope
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
   |                                                                `- error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
   |                                                          `- error: cannot find 'kCMTimeInvalid' in scope
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
   |                  `- error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
55 |                                                        sampleBuffer,
56 |                                                        1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
   |                                                        `- error: cannot find 'kCFAllocatorDefault' in scope
55 |                                                        sampleBuffer,
56 |                                                        1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
58 |                                                        &newSampleBuffer)
59 |
60 |     if status == noErr {
   |                  `- error: cannot find 'noErr' in scope
61 |         return newSampleBuffer
62 |     }
[29/51] Compiling kubrick MediaFormat.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class AudioReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
11 |     public init(_ ident: String? = nil) {
12 |         if let i = ident { self.ident = i }
13 |         else { self.ident = UUID().uuidString }
   |                             `- error: cannot find 'UUID' in scope
14 |     }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class VideoReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
   |                                                 `- error: cannot find type 'CMSampleBuffer' in scope
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                                     `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                  `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
11 |     public init(_ ident: String? = nil) {
12 |         if let i = ident { self.ident = i }
13 |         else { self.ident = UUID().uuidString }
   |                             `- error: cannot find 'UUID' in scope
14 |     }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
   |                      `- error: cannot find type 'CFArray' in scope
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 |                                    to: CFMutableDictionary.self)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
   |                                    `- error: cannot find 'CFArrayGetValueAtIndex' in scope
38 |                                    to: CFMutableDictionary.self)
39 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 |                                    to: CFMutableDictionary.self)
   |                                        `- error: cannot find 'CFMutableDictionary' in scope
39 |
40 | //    let key   = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
   |                      `- error: generic parameter 'U' could not be inferred
38 |                                    to: CFMutableDictionary.self)
39 |
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
1 | @inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
  |                        `- note: in call to function 'unsafeBitCast(_:to:)'
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
40 | //    let key   = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
41 | //    let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
   |                                        `- error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 |     CFDictionarySetValue(dictionary, key, value)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
41 | //    let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
   |                                          `- error: cannot find 'kCFBooleanTrue' in scope
44 |     CFDictionarySetValue(dictionary, key, value)
45 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 |     CFDictionarySetValue(dictionary, key, value)
   |     `- error: cannot find 'CFDictionarySetValue' in scope
45 | }
46 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
   |                          `- error: cannot find type 'CMSampleBuffer' in scope
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
   |                      `- error: cannot find 'CMSampleTimingInfo' in scope
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
   |                                                   `- error: cannot find 'CMSampleBufferGetDuration' in scope
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
   |                                                                `- error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
   |                                                          `- error: cannot find 'kCMTimeInvalid' in scope
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
   |                  `- error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
55 |                                                        sampleBuffer,
56 |                                                        1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
   |                                                        `- error: cannot find 'kCFAllocatorDefault' in scope
55 |                                                        sampleBuffer,
56 |                                                        1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
58 |                                                        &newSampleBuffer)
59 |
60 |     if status == noErr {
   |                  `- error: cannot find 'noErr' in scope
61 |         return newSampleBuffer
62 |     }
[30/51] Compiling kubrick Sample.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class AudioReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
11 |     public init(_ ident: String? = nil) {
12 |         if let i = ident { self.ident = i }
13 |         else { self.ident = UUID().uuidString }
   |                             `- error: cannot find 'UUID' in scope
14 |     }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class VideoReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
   |                                                 `- error: cannot find type 'CMSampleBuffer' in scope
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                                     `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                  `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
11 |     public init(_ ident: String? = nil) {
12 |         if let i = ident { self.ident = i }
13 |         else { self.ident = UUID().uuidString }
   |                             `- error: cannot find 'UUID' in scope
14 |     }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
   |                      `- error: cannot find type 'CFArray' in scope
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 |                                    to: CFMutableDictionary.self)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
   |                                    `- error: cannot find 'CFArrayGetValueAtIndex' in scope
38 |                                    to: CFMutableDictionary.self)
39 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 |                                    to: CFMutableDictionary.self)
   |                                        `- error: cannot find 'CFMutableDictionary' in scope
39 |
40 | //    let key   = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
   |                      `- error: generic parameter 'U' could not be inferred
38 |                                    to: CFMutableDictionary.self)
39 |
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
1 | @inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
  |                        `- note: in call to function 'unsafeBitCast(_:to:)'
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
40 | //    let key   = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
41 | //    let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
   |                                        `- error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 |     CFDictionarySetValue(dictionary, key, value)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
41 | //    let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
   |                                          `- error: cannot find 'kCFBooleanTrue' in scope
44 |     CFDictionarySetValue(dictionary, key, value)
45 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
42 |     let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 |     let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 |     CFDictionarySetValue(dictionary, key, value)
   |     `- error: cannot find 'CFDictionarySetValue' in scope
45 | }
46 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
   |                          `- error: cannot find type 'CMSampleBuffer' in scope
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
   |                      `- error: cannot find 'CMSampleTimingInfo' in scope
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
   |                                                   `- error: cannot find 'CMSampleBufferGetDuration' in scope
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
   |                                                                `- error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 |                                         presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 |                                         decodeTimeStamp: kCMTimeInvalid)
   |                                                          `- error: cannot find 'kCMTimeInvalid' in scope
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
   |                  `- error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
55 |                                                        sampleBuffer,
56 |                                                        1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
52 |                                         decodeTimeStamp: kCMTimeInvalid)
53 |
54 |     let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
   |                                                        `- error: cannot find 'kCFAllocatorDefault' in scope
55 |                                                        sampleBuffer,
56 |                                                        1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
58 |                                                        &newSampleBuffer)
59 |
60 |     if status == noErr {
   |                  `- error: cannot find 'noErr' in scope
61 |         return newSampleBuffer
62 |     }
[31/51] Compiling kubrick AACEncoder.swift
/host/spi-builder-workspace/Sources/kubrick/Encoders/H264Encoder.swift:14:9: warning: no calls to throwing functions occur within 'try' expression
 12 |     init(_ settings: H264Settings) throws {
 13 |         self.settings = settings
 14 |         try self.configure()
    |         `- warning: no calls to throwing functions occur within 'try' expression
 15 |     }
 16 |
[32/51] Compiling kubrick AudioEncoder.swift
/host/spi-builder-workspace/Sources/kubrick/Encoders/H264Encoder.swift:14:9: warning: no calls to throwing functions occur within 'try' expression
 12 |     init(_ settings: H264Settings) throws {
 13 |         self.settings = settings
 14 |         try self.configure()
    |         `- warning: no calls to throwing functions occur within 'try' expression
 15 |     }
 16 |
[33/51] Compiling kubrick H264Encoder.swift
/host/spi-builder-workspace/Sources/kubrick/Encoders/H264Encoder.swift:14:9: warning: no calls to throwing functions occur within 'try' expression
 12 |     init(_ settings: H264Settings) throws {
 13 |         self.settings = settings
 14 |         try self.configure()
    |         `- warning: no calls to throwing functions occur within 'try' expression
 15 |     }
 16 |
[34/51] Compiling kubrick H264Settings.swift
/host/spi-builder-workspace/Sources/kubrick/Encoders/H264Encoder.swift:14:9: warning: no calls to throwing functions occur within 'try' expression
 12 |     init(_ settings: H264Settings) throws {
 13 |         self.settings = settings
 14 |         try self.configure()
    |         `- warning: no calls to throwing functions occur within 'try' expression
 15 |     }
 16 |
error: emit-module command failed with exit code 1 (use -v to see invocation)
[35/51] Emitting module kubrick
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
    |           `- error: cannot find type 'Data' in scope
105 |
106 |     var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 5 |
 6 | extension Rational: Hashable {
 7 |     public var hashValue: Int {
   |                `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 8 |         return Int(self.numerator ^ Int64(self.denominator))
 9 |     }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
  7 |
  8 |     public var frameRate: Float64 {
  9 |         didSet { self.update(frameRate: self.frameRate) }
    |                       `- error: value of type 'Camera' has no member 'update'
 10 |     }
 11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
 11 |
 12 |     public var orientation: CameraOrientation = .unknown {
 13 |         didSet { self.update(orientation: self.orientation) }
    |                       `- error: value of type 'Camera' has no member 'update'
 14 |     }
 15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
  1 | public class Camera: MediaDevice {
    |              `- error: type 'Camera' does not conform to protocol 'MediaDevice'
  2 |
  3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
 1 | public class Display: MediaDevice {
   |              `- error: type 'Display' does not conform to protocol 'MediaDevice'
 2 |     public var source: Source
 3 |     public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
 1 | public class Microphone: MediaDevice {
   |              `- error: type 'Microphone' does not conform to protocol 'MediaDevice'
 2 |
 3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class AudioReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
 1 | import Dispatch
 2 |
 3 | public class VideoReader: NSObject, MediaDeviceReader {
   |                           `- error: cannot find type 'NSObject' in scope
 4 |
 5 |     public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
   |                                                 `- error: cannot find type 'CMSampleBuffer' in scope
36 |     let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 |     let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                                     `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
   |                                  `- error: cannot find type 'CMSampleBuffer' in scope
49 |     var newSampleBuffer: CMSampleBuffer?
50 |     var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:39:10: warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 37 |
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
    |          `- warning: associated value 'couldNotMakeConnection(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:40:10: warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 38 | public enum CaptureSessionError: Error {
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
    |          `- warning: associated value 'missingInput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:41:10: warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 39 |     case couldNotMakeConnection(device: MediaDevice)
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
    |          `- warning: associated value 'missingOutput(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:42:10: warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 40 |     case missingInput(device: MediaDevice)
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
    |          `- warning: associated value 'missingMediaType(device:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'any MediaDevice'; this is an error in the Swift 6 language mode
 43 |     case inputMissingPorts(mediaType: MediaType)
 44 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:4:17: note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 2 | public typealias MediaDeviceOutputClosure   = (MediaDeviceOutput) -> Void
 3 |
 4 | public protocol MediaDevice {
   |                 `- note: protocol 'MediaDevice' does not conform to the 'Sendable' protocol
 5 |     var source: Source { get }
 6 |     var input: MediaDeviceInput? { get set }
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:43:10: warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 41 |     case missingOutput(device: MediaDevice)
 42 |     case missingMediaType(device: MediaDevice)
 43 |     case inputMissingPorts(mediaType: MediaType)
    |          `- warning: associated value 'inputMissingPorts(mediaType:)' of 'Sendable'-conforming enum 'CaptureSessionError' has non-sendable type 'MediaType'; this is an error in the Swift 6 language mode
 44 | }
 45 |
/host/spi-builder-workspace/Sources/kubrick/Sources/Source.swift:7:13: note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 5 | }
 6 |
 7 | public enum MediaType {
   |             `- note: consider making enum 'MediaType' conform to the 'Sendable' protocol
 8 |     case video
 9 |     case audio
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 45 |
 46 | public class CaptureSession: Session {
 47 |     open let base = Base()
    |              `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
 48 |
 49 |     public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
  4 |
  5 | public protocol Session {
  6 |     associatedtype Base: BaseSession
    |                    `- note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
  7 |     func startRunning()
  8 |     func stopRunning()
    :
 44 | }
 45 |
 46 | public class CaptureSession: Session {
    |              `- error: type 'CaptureSession' does not conform to protocol 'Session'
 47 |     open let base = Base()
 48 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 33 |     public private(set) var mediaSource: MediaSource
 34 |
 35 |     public init(_ mediaSource: MediaSource = SystemMediaSource()) {
    |                                              `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 36 |         self.mediaSource = mediaSource
 37 |     }
[36/51] Compiling kubrick Sink.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
 71 |
 72 |         if let camera = videoDevices.first {
 73 |             self.session.addInput(camera)
    |                          `- error: value of type 'CaptureSession' has no member 'addInput'
 74 |             self.currentVideoDevice = camera
 75 |             _ = self.cycleDevice(with: .video) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
 77 |
 78 |         if let mic = audioDevices.first {
 79 |             self.session.addInput(mic)
    |                          `- error: value of type 'CaptureSession' has no member 'addInput'
 80 |             self.currentAudioDevice = mic
 81 |             _ = self.cycleDevice(with: .audio) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:147:34: warning: capture of 'self' with non-sendable type 'AVStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 23 | }
 24 |
 25 | public class AVStream: AVStreamProtocol {
    |              `- note: class 'AVStream' does not conform to the 'Sendable' protocol
 26 |
 27 |     public var session: CaptureSession
    :
145 |         DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
146 |             // If we have a video format, build the config packets and send them
147 |             if let videoFormat = self.muxSink.videoFormat {
    |                                  `- warning: capture of 'self' with non-sendable type 'AVStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
148 |                 do {
149 |                     let paramsPacket     = try VideoParamSetPacket(params: videoFormat.params)
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:162:43: warning: capture of 'sink' with non-sendable type 'EndpointSink' in a `@Sendable` closure; this is an error in the Swift 6 language mode
160 |             // Append the endpoint sink to the mux sink
161 |             // Audio / Video data should start streaming over the network from here
162 |             self.muxSink.nextSinks.append(sink)
    |                                           `- warning: capture of 'sink' with non-sendable type 'EndpointSink' in a `@Sendable` closure; this is an error in the Swift 6 language mode
163 |         }
164 |     }
/host/spi-builder-workspace/Sources/kubrick/Sinks/EndpointSink.swift:4:14: note: class 'EndpointSink' does not conform to the 'Sendable' protocol
 2 | import Foundation
 3 |
 4 | public class EndpointSink: Sink<BinaryEncodable> {
   |              `- note: class 'EndpointSink' does not conform to the 'Sendable' protocol
 5 |
 6 |     var endpoint: Writeable
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
189 |                 self.session.beginConfiguration()
190 |                 self.session.removeInput(oldDevice)
191 |                 self.session.addInput(nextDevice)
    |                              `- error: value of type 'CaptureSession' has no member 'addInput'
192 |                 self.session.commitConfiguration()
193 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 33 |     public private(set) var mediaSource: MediaSource
 34 |
 35 |     public init(_ mediaSource: MediaSource = SystemMediaSource()) {
    |                                              `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 36 |         self.mediaSource = mediaSource
 37 |     }
[37/51] Compiling kubrick AVStream.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
 71 |
 72 |         if let camera = videoDevices.first {
 73 |             self.session.addInput(camera)
    |                          `- error: value of type 'CaptureSession' has no member 'addInput'
 74 |             self.currentVideoDevice = camera
 75 |             _ = self.cycleDevice(with: .video) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
 77 |
 78 |         if let mic = audioDevices.first {
 79 |             self.session.addInput(mic)
    |                          `- error: value of type 'CaptureSession' has no member 'addInput'
 80 |             self.currentAudioDevice = mic
 81 |             _ = self.cycleDevice(with: .audio) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:147:34: warning: capture of 'self' with non-sendable type 'AVStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 23 | }
 24 |
 25 | public class AVStream: AVStreamProtocol {
    |              `- note: class 'AVStream' does not conform to the 'Sendable' protocol
 26 |
 27 |     public var session: CaptureSession
    :
145 |         DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
146 |             // If we have a video format, build the config packets and send them
147 |             if let videoFormat = self.muxSink.videoFormat {
    |                                  `- warning: capture of 'self' with non-sendable type 'AVStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
148 |                 do {
149 |                     let paramsPacket     = try VideoParamSetPacket(params: videoFormat.params)
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:162:43: warning: capture of 'sink' with non-sendable type 'EndpointSink' in a `@Sendable` closure; this is an error in the Swift 6 language mode
160 |             // Append the endpoint sink to the mux sink
161 |             // Audio / Video data should start streaming over the network from here
162 |             self.muxSink.nextSinks.append(sink)
    |                                           `- warning: capture of 'sink' with non-sendable type 'EndpointSink' in a `@Sendable` closure; this is an error in the Swift 6 language mode
163 |         }
164 |     }
/host/spi-builder-workspace/Sources/kubrick/Sinks/EndpointSink.swift:4:14: note: class 'EndpointSink' does not conform to the 'Sendable' protocol
 2 | import Foundation
 3 |
 4 | public class EndpointSink: Sink<BinaryEncodable> {
   |              `- note: class 'EndpointSink' does not conform to the 'Sendable' protocol
 5 |
 6 |     var endpoint: Writeable
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
189 |                 self.session.beginConfiguration()
190 |                 self.session.removeInput(oldDevice)
191 |                 self.session.addInput(nextDevice)
    |                              `- error: value of type 'CaptureSession' has no member 'addInput'
192 |                 self.session.commitConfiguration()
193 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 33 |     public private(set) var mediaSource: MediaSource
 34 |
 35 |     public init(_ mediaSource: MediaSource = SystemMediaSource()) {
    |                                              `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 36 |         self.mediaSource = mediaSource
 37 |     }
[38/51] Compiling kubrick Source.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
 71 |
 72 |         if let camera = videoDevices.first {
 73 |             self.session.addInput(camera)
    |                          `- error: value of type 'CaptureSession' has no member 'addInput'
 74 |             self.currentVideoDevice = camera
 75 |             _ = self.cycleDevice(with: .video) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
 77 |
 78 |         if let mic = audioDevices.first {
 79 |             self.session.addInput(mic)
    |                          `- error: value of type 'CaptureSession' has no member 'addInput'
 80 |             self.currentAudioDevice = mic
 81 |             _ = self.cycleDevice(with: .audio) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:147:34: warning: capture of 'self' with non-sendable type 'AVStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 23 | }
 24 |
 25 | public class AVStream: AVStreamProtocol {
    |              `- note: class 'AVStream' does not conform to the 'Sendable' protocol
 26 |
 27 |     public var session: CaptureSession
    :
145 |         DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
146 |             // If we have a video format, build the config packets and send them
147 |             if let videoFormat = self.muxSink.videoFormat {
    |                                  `- warning: capture of 'self' with non-sendable type 'AVStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
148 |                 do {
149 |                     let paramsPacket     = try VideoParamSetPacket(params: videoFormat.params)
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:162:43: warning: capture of 'sink' with non-sendable type 'EndpointSink' in a `@Sendable` closure; this is an error in the Swift 6 language mode
160 |             // Append the endpoint sink to the mux sink
161 |             // Audio / Video data should start streaming over the network from here
162 |             self.muxSink.nextSinks.append(sink)
    |                                           `- warning: capture of 'sink' with non-sendable type 'EndpointSink' in a `@Sendable` closure; this is an error in the Swift 6 language mode
163 |         }
164 |     }
/host/spi-builder-workspace/Sources/kubrick/Sinks/EndpointSink.swift:4:14: note: class 'EndpointSink' does not conform to the 'Sendable' protocol
 2 | import Foundation
 3 |
 4 | public class EndpointSink: Sink<BinaryEncodable> {
   |              `- note: class 'EndpointSink' does not conform to the 'Sendable' protocol
 5 |
 6 |     var endpoint: Writeable
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
189 |                 self.session.beginConfiguration()
190 |                 self.session.removeInput(oldDevice)
191 |                 self.session.addInput(nextDevice)
    |                              `- error: value of type 'CaptureSession' has no member 'addInput'
192 |                 self.session.commitConfiguration()
193 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 33 |     public private(set) var mediaSource: MediaSource
 34 |
 35 |     public init(_ mediaSource: MediaSource = SystemMediaSource()) {
    |                                              `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 36 |         self.mediaSource = mediaSource
 37 |     }
[39/51] Compiling kubrick SourceDiscoverer.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
 71 |
 72 |         if let camera = videoDevices.first {
 73 |             self.session.addInput(camera)
    |                          `- error: value of type 'CaptureSession' has no member 'addInput'
 74 |             self.currentVideoDevice = camera
 75 |             _ = self.cycleDevice(with: .video) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
 77 |
 78 |         if let mic = audioDevices.first {
 79 |             self.session.addInput(mic)
    |                          `- error: value of type 'CaptureSession' has no member 'addInput'
 80 |             self.currentAudioDevice = mic
 81 |             _ = self.cycleDevice(with: .audio) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:147:34: warning: capture of 'self' with non-sendable type 'AVStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 23 | }
 24 |
 25 | public class AVStream: AVStreamProtocol {
    |              `- note: class 'AVStream' does not conform to the 'Sendable' protocol
 26 |
 27 |     public var session: CaptureSession
    :
145 |         DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
146 |             // If we have a video format, build the config packets and send them
147 |             if let videoFormat = self.muxSink.videoFormat {
    |                                  `- warning: capture of 'self' with non-sendable type 'AVStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
148 |                 do {
149 |                     let paramsPacket     = try VideoParamSetPacket(params: videoFormat.params)
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:162:43: warning: capture of 'sink' with non-sendable type 'EndpointSink' in a `@Sendable` closure; this is an error in the Swift 6 language mode
160 |             // Append the endpoint sink to the mux sink
161 |             // Audio / Video data should start streaming over the network from here
162 |             self.muxSink.nextSinks.append(sink)
    |                                           `- warning: capture of 'sink' with non-sendable type 'EndpointSink' in a `@Sendable` closure; this is an error in the Swift 6 language mode
163 |         }
164 |     }
/host/spi-builder-workspace/Sources/kubrick/Sinks/EndpointSink.swift:4:14: note: class 'EndpointSink' does not conform to the 'Sendable' protocol
 2 | import Foundation
 3 |
 4 | public class EndpointSink: Sink<BinaryEncodable> {
   |              `- note: class 'EndpointSink' does not conform to the 'Sendable' protocol
 5 |
 6 |     var endpoint: Writeable
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
189 |                 self.session.beginConfiguration()
190 |                 self.session.removeInput(oldDevice)
191 |                 self.session.addInput(nextDevice)
    |                              `- error: value of type 'CaptureSession' has no member 'addInput'
192 |                 self.session.commitConfiguration()
193 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 33 |     public private(set) var mediaSource: MediaSource
 34 |
 35 |     public init(_ mediaSource: MediaSource = SystemMediaSource()) {
    |                                              `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
 36 |         self.mediaSource = mediaSource
 37 |     }
[40/51] Compiling kubrick FileEndpoint.swift
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:15:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused
13 |     public init(fileURL: URL, onEnd: EndedCallback?) throws {
14 |         if !FileManager.default.fileExists(atPath: fileURL.path) {
15 |             FileManager.default.createFile(atPath: fileURL.path, contents: nil, attributes: nil)
   |                                 `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused
16 |         }
17 |
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:25:16: warning: capture of 'self' with non-sendable type 'FileEndpoint' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 4 |
 5 | /// Endpoint that can be set on an AVStream object that will stream a/v sample data into a file
 6 | public final class FileEndpoint: Writeable, Endable {
   |                    `- note: class 'FileEndpoint' does not conform to the 'Sendable' protocol
 7 |
 8 |     public var onEnd: EndedCallback?
   :
23 |     public func write(_ data: Data) {
24 |         self.writeQ.async {
25 |             if self.continueWriting {
   |                `- warning: capture of 'self' with non-sendable type 'FileEndpoint' in a `@Sendable` closure; this is an error in the Swift 6 language mode
26 |                 self.fileHandle.write(data)
27 |             }
[41/51] Compiling kubrick H264EncoderSink.swift
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:15:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused
13 |     public init(fileURL: URL, onEnd: EndedCallback?) throws {
14 |         if !FileManager.default.fileExists(atPath: fileURL.path) {
15 |             FileManager.default.createFile(atPath: fileURL.path, contents: nil, attributes: nil)
   |                                 `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused
16 |         }
17 |
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:25:16: warning: capture of 'self' with non-sendable type 'FileEndpoint' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 4 |
 5 | /// Endpoint that can be set on an AVStream object that will stream a/v sample data into a file
 6 | public final class FileEndpoint: Writeable, Endable {
   |                    `- note: class 'FileEndpoint' does not conform to the 'Sendable' protocol
 7 |
 8 |     public var onEnd: EndedCallback?
   :
23 |     public func write(_ data: Data) {
24 |         self.writeQ.async {
25 |             if self.continueWriting {
   |                `- warning: capture of 'self' with non-sendable type 'FileEndpoint' in a `@Sendable` closure; this is an error in the Swift 6 language mode
26 |                 self.fileHandle.write(data)
27 |             }
[42/51] Compiling kubrick MuxerSink.swift
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:15:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused
13 |     public init(fileURL: URL, onEnd: EndedCallback?) throws {
14 |         if !FileManager.default.fileExists(atPath: fileURL.path) {
15 |             FileManager.default.createFile(atPath: fileURL.path, contents: nil, attributes: nil)
   |                                 `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused
16 |         }
17 |
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:25:16: warning: capture of 'self' with non-sendable type 'FileEndpoint' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 4 |
 5 | /// Endpoint that can be set on an AVStream object that will stream a/v sample data into a file
 6 | public final class FileEndpoint: Writeable, Endable {
   |                    `- note: class 'FileEndpoint' does not conform to the 'Sendable' protocol
 7 |
 8 |     public var onEnd: EndedCallback?
   :
23 |     public func write(_ data: Data) {
24 |         self.writeQ.async {
25 |             if self.continueWriting {
   |                `- warning: capture of 'self' with non-sendable type 'FileEndpoint' in a `@Sendable` closure; this is an error in the Swift 6 language mode
26 |                 self.fileHandle.write(data)
27 |             }
[43/51] Compiling kubrick PrettyPortraitSink.swift
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:15:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused
13 |     public init(fileURL: URL, onEnd: EndedCallback?) throws {
14 |         if !FileManager.default.fileExists(atPath: fileURL.path) {
15 |             FileManager.default.createFile(atPath: fileURL.path, contents: nil, attributes: nil)
   |                                 `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused
16 |         }
17 |
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:25:16: warning: capture of 'self' with non-sendable type 'FileEndpoint' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 4 |
 5 | /// Endpoint that can be set on an AVStream object that will stream a/v sample data into a file
 6 | public final class FileEndpoint: Writeable, Endable {
   |                    `- note: class 'FileEndpoint' does not conform to the 'Sendable' protocol
 7 |
 8 |     public var onEnd: EndedCallback?
   :
23 |     public func write(_ data: Data) {
24 |         self.writeQ.async {
25 |             if self.continueWriting {
   |                `- warning: capture of 'self' with non-sendable type 'FileEndpoint' in a `@Sendable` closure; this is an error in the Swift 6 language mode
26 |                 self.fileHandle.write(data)
27 |             }
[44/51] Compiling kubrick VideoEncoder.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
    |           `- error: cannot find type 'Data' in scope
105 |
106 |     var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 5 |
 6 | extension Rational: Hashable {
 7 |     public var hashValue: Int {
   |                `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 8 |         return Int(self.numerator ^ Int64(self.denominator))
 9 |     }
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:18:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
16 |
17 |     public func append(_ newElement: T) {
18 |         q.async(flags: .barrier) { self.array.append(newElement) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
19 |     }
20 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:18:54: warning: capture of 'newElement' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
16 |
17 |     public func append(_ newElement: T) {
18 |         q.async(flags: .barrier) { self.array.append(newElement) }
   |                                                      `- warning: capture of 'newElement' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
19 |     }
20 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:22:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
20 |
21 |     public func append(contentsOf: [T]) {
22 |         q.async(flags: .barrier) { self.array.append(contentsOf: contentsOf) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 |     }
24 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:22:66: warning: capture of 'contentsOf' with non-sendable type '[T]' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
20 |
21 |     public func append(contentsOf: [T]) {
22 |         q.async(flags: .barrier) { self.array.append(contentsOf: contentsOf) }
   |                                                                  `- warning: capture of 'contentsOf' with non-sendable type '[T]' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 |     }
24 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:26:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
24 |
25 |     public func remove(at index: Int) {
26 |         q.async(flags: .barrier) { self.array.remove(at: index) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
27 |     }
28 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:30:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
28 |
29 |     public func removeFirst(n: Int) {
30 |         q.async(flags: .barrier) { self.array.removeFirst(n) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
31 |     }
32 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:34:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
32 |
33 |     public func removeLast() {
34 |         q.async(flags: .barrier) { self.array.removeLast() }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
35 |     }
36 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:38:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
36 |
37 |     public func removeLast(n: Int) {
38 |         q.async(flags: .barrier) { self.array.removeLast(n) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
39 |     }
40 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:75:40: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
73 |     public subscript(index: Int) -> T {
74 |         set {
75 |             q.async(flags: .barrier) { self.array[index] = newValue }
   |                                        `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
76 |         }
77 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:75:60: warning: capture of 'newValue' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
73 |     public subscript(index: Int) -> T {
74 |         set {
75 |             q.async(flags: .barrier) { self.array[index] = newValue }
   |                                                            `- warning: capture of 'newValue' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
76 |         }
77 |
[45/51] Compiling kubrick Bytes.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
    |           `- error: cannot find type 'Data' in scope
105 |
106 |     var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 5 |
 6 | extension Rational: Hashable {
 7 |     public var hashValue: Int {
   |                `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 8 |         return Int(self.numerator ^ Int64(self.denominator))
 9 |     }
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:18:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
16 |
17 |     public func append(_ newElement: T) {
18 |         q.async(flags: .barrier) { self.array.append(newElement) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
19 |     }
20 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:18:54: warning: capture of 'newElement' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
16 |
17 |     public func append(_ newElement: T) {
18 |         q.async(flags: .barrier) { self.array.append(newElement) }
   |                                                      `- warning: capture of 'newElement' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
19 |     }
20 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:22:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
20 |
21 |     public func append(contentsOf: [T]) {
22 |         q.async(flags: .barrier) { self.array.append(contentsOf: contentsOf) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 |     }
24 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:22:66: warning: capture of 'contentsOf' with non-sendable type '[T]' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
20 |
21 |     public func append(contentsOf: [T]) {
22 |         q.async(flags: .barrier) { self.array.append(contentsOf: contentsOf) }
   |                                                                  `- warning: capture of 'contentsOf' with non-sendable type '[T]' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 |     }
24 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:26:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
24 |
25 |     public func remove(at index: Int) {
26 |         q.async(flags: .barrier) { self.array.remove(at: index) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
27 |     }
28 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:30:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
28 |
29 |     public func removeFirst(n: Int) {
30 |         q.async(flags: .barrier) { self.array.removeFirst(n) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
31 |     }
32 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:34:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
32 |
33 |     public func removeLast() {
34 |         q.async(flags: .barrier) { self.array.removeLast() }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
35 |     }
36 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:38:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
36 |
37 |     public func removeLast(n: Int) {
38 |         q.async(flags: .barrier) { self.array.removeLast(n) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
39 |     }
40 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:75:40: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
73 |     public subscript(index: Int) -> T {
74 |         set {
75 |             q.async(flags: .barrier) { self.array[index] = newValue }
   |                                        `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
76 |         }
77 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:75:60: warning: capture of 'newValue' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
73 |     public subscript(index: Int) -> T {
74 |         set {
75 |             q.async(flags: .barrier) { self.array[index] = newValue }
   |                                                            `- warning: capture of 'newValue' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
76 |         }
77 |
[46/51] Compiling kubrick Rational.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
    |           `- error: cannot find type 'Data' in scope
105 |
106 |     var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 5 |
 6 | extension Rational: Hashable {
 7 |     public var hashValue: Int {
   |                `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 8 |         return Int(self.numerator ^ Int64(self.denominator))
 9 |     }
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:18:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
16 |
17 |     public func append(_ newElement: T) {
18 |         q.async(flags: .barrier) { self.array.append(newElement) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
19 |     }
20 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:18:54: warning: capture of 'newElement' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
16 |
17 |     public func append(_ newElement: T) {
18 |         q.async(flags: .barrier) { self.array.append(newElement) }
   |                                                      `- warning: capture of 'newElement' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
19 |     }
20 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:22:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
20 |
21 |     public func append(contentsOf: [T]) {
22 |         q.async(flags: .barrier) { self.array.append(contentsOf: contentsOf) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 |     }
24 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:22:66: warning: capture of 'contentsOf' with non-sendable type '[T]' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
20 |
21 |     public func append(contentsOf: [T]) {
22 |         q.async(flags: .barrier) { self.array.append(contentsOf: contentsOf) }
   |                                                                  `- warning: capture of 'contentsOf' with non-sendable type '[T]' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 |     }
24 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:26:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
24 |
25 |     public func remove(at index: Int) {
26 |         q.async(flags: .barrier) { self.array.remove(at: index) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
27 |     }
28 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:30:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
28 |
29 |     public func removeFirst(n: Int) {
30 |         q.async(flags: .barrier) { self.array.removeFirst(n) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
31 |     }
32 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:34:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
32 |
33 |     public func removeLast() {
34 |         q.async(flags: .barrier) { self.array.removeLast() }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
35 |     }
36 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:38:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
36 |
37 |     public func removeLast(n: Int) {
38 |         q.async(flags: .barrier) { self.array.removeLast(n) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
39 |     }
40 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:75:40: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
73 |     public subscript(index: Int) -> T {
74 |         set {
75 |             q.async(flags: .barrier) { self.array[index] = newValue }
   |                                        `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
76 |         }
77 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:75:60: warning: capture of 'newValue' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
73 |     public subscript(index: Int) -> T {
74 |         set {
75 |             q.async(flags: .barrier) { self.array[index] = newValue }
   |                                                            `- warning: capture of 'newValue' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
76 |         }
77 |
[47/51] Compiling kubrick ThreadSafeArray.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
    |           `- error: cannot find type 'Data' in scope
105 |
106 |     var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 5 |
 6 | extension Rational: Hashable {
 7 |     public var hashValue: Int {
   |                `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead
 8 |         return Int(self.numerator ^ Int64(self.denominator))
 9 |     }
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:18:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
16 |
17 |     public func append(_ newElement: T) {
18 |         q.async(flags: .barrier) { self.array.append(newElement) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
19 |     }
20 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:18:54: warning: capture of 'newElement' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
16 |
17 |     public func append(_ newElement: T) {
18 |         q.async(flags: .barrier) { self.array.append(newElement) }
   |                                                      `- warning: capture of 'newElement' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
19 |     }
20 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:22:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
20 |
21 |     public func append(contentsOf: [T]) {
22 |         q.async(flags: .barrier) { self.array.append(contentsOf: contentsOf) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 |     }
24 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:22:66: warning: capture of 'contentsOf' with non-sendable type '[T]' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
20 |
21 |     public func append(contentsOf: [T]) {
22 |         q.async(flags: .barrier) { self.array.append(contentsOf: contentsOf) }
   |                                                                  `- warning: capture of 'contentsOf' with non-sendable type '[T]' in a `@Sendable` closure; this is an error in the Swift 6 language mode
23 |     }
24 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:26:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
24 |
25 |     public func remove(at index: Int) {
26 |         q.async(flags: .barrier) { self.array.remove(at: index) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
27 |     }
28 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:30:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
28 |
29 |     public func removeFirst(n: Int) {
30 |         q.async(flags: .barrier) { self.array.removeFirst(n) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
31 |     }
32 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:34:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
32 |
33 |     public func removeLast() {
34 |         q.async(flags: .barrier) { self.array.removeLast() }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
35 |     }
36 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:38:36: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
36 |
37 |     public func removeLast(n: Int) {
38 |         q.async(flags: .barrier) { self.array.removeLast(n) }
   |                                    `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
39 |     }
40 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:75:40: warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |              `- note: generic class 'ThreadSafeArray' does not conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
73 |     public subscript(index: Int) -> T {
74 |         set {
75 |             q.async(flags: .barrier) { self.array[index] = newValue }
   |                                        `- warning: capture of 'self' with non-sendable type 'ThreadSafeArray<T>' in a `@Sendable` closure; this is an error in the Swift 6 language mode
76 |         }
77 |
/host/spi-builder-workspace/Sources/kubrick/Helpers/ThreadSafeArray.swift:75:60: warning: capture of 'newValue' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 1 | import Foundation
 2 |
 3 | public class ThreadSafeArray<T>: Collection {
   |                              `- note: consider making generic parameter 'T' conform to the 'Sendable' protocol
 4 |
 5 |     public var startIndex: Int = 0
   :
73 |     public subscript(index: Int) -> T {
74 |         set {
75 |             q.async(flags: .barrier) { self.array[index] = newValue }
   |                                                            `- warning: capture of 'newValue' with non-sendable type 'T' in a `@Sendable` closure; this is an error in the Swift 6 language mode
76 |         }
77 |
[48/51] Compiling kubrick MediaDeviceInput.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
 1 | public class Microphone: MediaDevice {
   |              `- error: type 'Microphone' does not conform to protocol 'MediaDevice'
 2 |
 3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
[49/51] Compiling kubrick MediaDeviceOutput.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
 1 | public class Microphone: MediaDevice {
   |              `- error: type 'Microphone' does not conform to protocol 'MediaDevice'
 2 |
 3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
[50/51] Compiling kubrick MediaDeviceReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
 1 | public class Microphone: MediaDevice {
   |              `- error: type 'Microphone' does not conform to protocol 'MediaDevice'
 2 |
 3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
[51/51] Compiling kubrick Microphone.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
 1 | public class Microphone: MediaDevice {
   |              `- error: type 'Microphone' does not conform to protocol 'MediaDevice'
 2 |
 3 |     public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
 8 |     var reader: MediaDeviceReader? { get set }
 9 |
10 |     mutating func createInput(onCreate: MediaDeviceInputClosure)
   |                   `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 |     mutating func createOutput(onCreate: MediaDeviceOutputClosure)
   |                   `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 |     mutating func set(reader: MediaDeviceReader) throws
13 | }
BUILD FAILURE 6.0 linux