The Swift Package Index logo.Swift Package Index

Build Information

Failed to build kubrick with Swift 5.10 for Linux.

Build Command

bash -c docker run --rm -v "checkouts-4606859-0":/host -w "$workDir" registry.gitlab.com/finestructure/spi-images:basic-5.10-latest swift build 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.29.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:             5.10
Building package at path:  $workDir
https://github.com/krad/kubrick.git
Running build ...
bash -c docker run --rm -v "checkouts-4606859-0":/host -w "$workDir" registry.gitlab.com/finestructure/spi-images:basic-5.10-latest swift build 2>&1
Fetching https://github.com/krad/grip.git
[1/176] Fetching grip
Fetched https://github.com/krad/grip.git from cache (0.21s)
Computing version for https://github.com/krad/grip.git
Computed https://github.com/krad/grip.git at 1.3.5 (0.37s)
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 StreamType.swift
[5/17] Compiling grip NALU.swift
[6/17] Compiling grip AudioSamplePacket.swift
[7/17] Compiling grip VideoSamplePacket.swift
[8/17] Compiling grip Packets.swift
[9/17] Compiling grip StreamTypePacket.swift
[10/17] Compiling grip VideoDimensionsPacket.swift
[11/17] Compiling grip VideoParamSetPacket.swift
[12/17] Compiling grip Writeable.swift
[13/17] Compiling grip BinaryEncodable.swift
[14/17] Compiling grip BinaryEncodableExtensions.swift
[15/17] Compiling grip CompressedSample.swift
[16/17] Compiling grip ByteHelpers.swift
[17/17] Emitting module grip
[19/47] Compiling kubrick MediaDeviceInput.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
public class Microphone: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[20/47] Compiling kubrick MediaDeviceOutput.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
public class Microphone: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[21/47] Compiling kubrick MediaDeviceReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
public class Microphone: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[22/47] Compiling kubrick Microphone.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
public class Microphone: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[23/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'
        didSet { self.update(frameRate: self.frameRate) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(orientation: self.orientation) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
public class Camera: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
        self.update(frameRate: self.frameRate)
        ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
public class Display: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[24/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'
        didSet { self.update(frameRate: self.frameRate) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(orientation: self.orientation) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
public class Camera: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
        self.update(frameRate: self.frameRate)
        ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
public class Display: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[25/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'
        didSet { self.update(frameRate: self.frameRate) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(orientation: self.orientation) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
public class Camera: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
        self.update(frameRate: self.frameRate)
        ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
public class Display: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[26/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'
        didSet { self.update(frameRate: self.frameRate) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(orientation: self.orientation) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
public class Camera: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
        self.update(frameRate: self.frameRate)
        ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
public class Display: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[27/51] Compiling kubrick SampleTransport.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
    open let base = Base()
                    ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
    open let base = Base()
    ~~~~     ^
    public
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
public class CaptureSession: Session {
             ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:6:20: note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
    associatedtype Base: BaseSession
                   ^
[28/51] Compiling kubrick Session.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
    open let base = Base()
                    ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
    open let base = Base()
    ~~~~     ^
    public
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
public class CaptureSession: Session {
             ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:6:20: note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
    associatedtype Base: BaseSession
                   ^
[29/51] Compiling kubrick AACEncoderSink.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
    open let base = Base()
                    ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
    open let base = Base()
    ~~~~     ^
    public
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
public class CaptureSession: Session {
             ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:6:20: note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
    associatedtype Base: BaseSession
                   ^
[30/51] Compiling kubrick EndpointSink.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
    open let base = Base()
                    ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
    open let base = Base()
    ~~~~     ^
    public
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
public class CaptureSession: Session {
             ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:6:20: note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
    associatedtype Base: BaseSession
                   ^
[31/51] Compiling kubrick AudioReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class AudioReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class VideoReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
                                                ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                                    ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                 ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
    let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
                     ^~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                                   ^~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
                                   to: CFMutableDictionary.self)
                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                     ^
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
@inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
                       ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
    let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
    let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
    CFDictionarySetValue(dictionary, key, value)
    ^~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
    var newSampleBuffer: CMSampleBuffer?
                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                     ^~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
                                        presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
                                        decodeTimeStamp: kCMTimeInvalid)
                                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
    if status == noErr {
                 ^~~~~
[32/51] Compiling kubrick VideoReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class AudioReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class VideoReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
                                                ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                                    ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                 ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
    let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
                     ^~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                                   ^~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
                                   to: CFMutableDictionary.self)
                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                     ^
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
@inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
                       ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
    let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
    let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
    CFDictionarySetValue(dictionary, key, value)
    ^~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
    var newSampleBuffer: CMSampleBuffer?
                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                     ^~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
                                        presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
                                        decodeTimeStamp: kCMTimeInvalid)
                                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
    if status == noErr {
                 ^~~~~
[33/51] Compiling kubrick MediaFormat.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class AudioReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class VideoReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
                                                ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                                    ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                 ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
    let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
                     ^~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                                   ^~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
                                   to: CFMutableDictionary.self)
                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                     ^
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
@inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
                       ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
    let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
    let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
    CFDictionarySetValue(dictionary, key, value)
    ^~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
    var newSampleBuffer: CMSampleBuffer?
                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                     ^~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
                                        presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
                                        decodeTimeStamp: kCMTimeInvalid)
                                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
    if status == noErr {
                 ^~~~~
[34/51] Compiling kubrick Sample.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class AudioReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class VideoReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
                                                ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                                    ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                 ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
    let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
                     ^~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                                   ^~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
                                   to: CFMutableDictionary.self)
                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                     ^
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
@inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
                       ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
    let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
    let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
    CFDictionarySetValue(dictionary, key, value)
    ^~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
    var newSampleBuffer: CMSampleBuffer?
                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                     ^~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
                                        presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
                                        decodeTimeStamp: kCMTimeInvalid)
                                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
    if status == noErr {
                 ^~~~~
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
extension Data {
          ^~~~
/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
    public var hashValue: Int {
               ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(frameRate: self.frameRate) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(orientation: self.orientation) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
public class Camera: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
public class Display: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
public class Microphone: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class AudioReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class VideoReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
                                                ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                                    ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                 ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
    open let base = Base()
    ~~~~     ^
    public
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
public class CaptureSession: Session {
             ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:6:20: note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
    associatedtype Base: BaseSession
                   ^
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
    public init(_ mediaSource: MediaSource = SystemMediaSource()) {
                                             ^~~~~~~~~~~~~~~~~~~
                                                                 as! MediaSource
[36/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
        try self.configure()
        ^
[37/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
        try self.configure()
        ^
[38/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
        try self.configure()
        ^
[39/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
        try self.configure()
        ^
[40/51] Compiling kubrick VideoEncoder.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
extension Data {
          ^~~~
/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
    public var hashValue: Int {
               ^
[41/51] Compiling kubrick Bytes.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
extension Data {
          ^~~~
/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
    public var hashValue: Int {
               ^
[42/51] Compiling kubrick Rational.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
extension Data {
          ^~~~
/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
    public var hashValue: Int {
               ^
[43/51] Compiling kubrick ThreadSafeArray.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
extension Data {
          ^~~~
/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
    public var hashValue: Int {
               ^
[44/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'
            self.session.addInput(camera)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(mic)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
                self.session.addInput(nextDevice)
                ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
    public init(_ mediaSource: MediaSource = SystemMediaSource()) {
                                             ^~~~~~~~~~~~~~~~~~~
                                                                 as! MediaSource
[45/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'
            self.session.addInput(camera)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(mic)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
                self.session.addInput(nextDevice)
                ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
    public init(_ mediaSource: MediaSource = SystemMediaSource()) {
                                             ^~~~~~~~~~~~~~~~~~~
                                                                 as! MediaSource
[46/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'
            self.session.addInput(camera)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(mic)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
                self.session.addInput(nextDevice)
                ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
    public init(_ mediaSource: MediaSource = SystemMediaSource()) {
                                             ^~~~~~~~~~~~~~~~~~~
                                                                 as! MediaSource
[47/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'
            self.session.addInput(camera)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(mic)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
                self.session.addInput(nextDevice)
                ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
    public init(_ mediaSource: MediaSource = SystemMediaSource()) {
                                             ^~~~~~~~~~~~~~~~~~~
                                                                 as! MediaSource
[48/51] Compiling kubrick FileEndpoint.swift
[49/51] Compiling kubrick H264EncoderSink.swift
[50/51] Compiling kubrick MuxerSink.swift
[51/51] Compiling kubrick PrettyPortraitSink.swift
error: fatalError
[0/1] Planning build
Building for debugging...
[0/1] Write swift-version-24593BA9C3E375BF.txt
[2/23] Compiling kubrick MediaDeviceOutput.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
public class Microphone: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[3/23] Compiling kubrick MediaDeviceReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
public class Microphone: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[4/23] Compiling kubrick Microphone.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
public class Microphone: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
error: emit-module command failed with exit code 1 (use -v to see invocation)
[5/26] Emitting module kubrick
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
extension Data {
          ^~~~
/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
    public var hashValue: Int {
               ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(frameRate: self.frameRate) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(orientation: self.orientation) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
public class Camera: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
public class Display: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
public class Microphone: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class AudioReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class VideoReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
                                                ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                                    ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                 ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
    open let base = Base()
    ~~~~     ^
    public
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
public class CaptureSession: Session {
             ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:6:20: note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
    associatedtype Base: BaseSession
                   ^
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
    public init(_ mediaSource: MediaSource = SystemMediaSource()) {
                                             ^~~~~~~~~~~~~~~~~~~
                                                                 as! MediaSource
[6/26] Compiling kubrick ThreadSafeArray.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(frameRate: self.frameRate) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(orientation: self.orientation) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
public class Camera: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
        self.update(frameRate: self.frameRate)
        ~~~~ ^~~~~~
[7/26] Compiling kubrick Camera.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(frameRate: self.frameRate) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(orientation: self.orientation) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
public class Camera: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
        self.update(frameRate: self.frameRate)
        ~~~~ ^~~~~~
[8/26] Compiling kubrick Clock.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(frameRate: self.frameRate) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
        didSet { self.update(orientation: self.orientation) }
                 ~~~~ ^~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
public class Camera: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
        self.update(frameRate: self.frameRate)
        ~~~~ ^~~~~~
[9/26] Compiling kubrick AudioReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class AudioReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class VideoReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
                                                ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                                    ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                 ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
    let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
                     ^~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                                   ^~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
                                   to: CFMutableDictionary.self)
                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                     ^
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
@inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
                       ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
    let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
    let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
    CFDictionarySetValue(dictionary, key, value)
    ^~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
    var newSampleBuffer: CMSampleBuffer?
                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                     ^~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
                                        presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
                                        decodeTimeStamp: kCMTimeInvalid)
                                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
    if status == noErr {
                 ^~~~~
[10/26] Compiling kubrick VideoReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class AudioReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class VideoReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
                                                ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                                    ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                 ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
    let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
                     ^~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                                   ^~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
                                   to: CFMutableDictionary.self)
                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                     ^
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
@inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
                       ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
    let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
    let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
    CFDictionarySetValue(dictionary, key, value)
    ^~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
    var newSampleBuffer: CMSampleBuffer?
                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                     ^~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
                                        presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
                                        decodeTimeStamp: kCMTimeInvalid)
                                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
    if status == noErr {
                 ^~~~~
[11/26] Compiling kubrick MediaFormat.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class AudioReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
public class VideoReader: NSObject, MediaDeviceReader {
                          ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
                                                ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                                    ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
                                 ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
        else { self.ident = UUID().uuidString }
                            ^~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
    let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
                     ^~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                                   ^~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
                                   to: CFMutableDictionary.self)
                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
    let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
                     ^
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
@inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
                       ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
    let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
    let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
    CFDictionarySetValue(dictionary, key, value)
    ^~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
    var newSampleBuffer: CMSampleBuffer?
                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                     ^~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
    var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
                                                  ^~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
                                        presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
                                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
                                        decodeTimeStamp: kCMTimeInvalid)
                                                         ^~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
    let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
                                                       ^~~~~~~~~~~~~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
    if status == noErr {
                 ^~~~~
[12/26] Compiling kubrick Display.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
public class Display: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[13/26] Compiling kubrick MediaDevice.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
public class Display: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[14/26] Compiling kubrick MediaDeviceInput.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
public class Display: MediaDevice {
             ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
    mutating func createInput(onCreate: MediaDeviceInputClosure)
                  ^
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:11:19: note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
    mutating func createOutput(onCreate: MediaDeviceOutputClosure)
                  ^
[15/26] Compiling kubrick VideoEncoder.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
extension Data {
          ^~~~
/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
    public var hashValue: Int {
               ^
[16/26] Compiling kubrick Bytes.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
extension Data {
          ^~~~
/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
    public var hashValue: Int {
               ^
[17/26] Compiling kubrick Rational.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
extension Data {
          ^~~~
/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
    public var hashValue: Int {
               ^
[18/26] Compiling kubrick AACEncoderSink.swift
[19/26] Compiling kubrick EndpointSink.swift
[20/26] Compiling kubrick Sink.swift
[21/26] Compiling kubrick Sample.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
    open let base = Base()
                    ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
    open let base = Base()
    ~~~~     ^
    public
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
public class CaptureSession: Session {
             ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:6:20: note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
    associatedtype Base: BaseSession
                   ^
[22/26] Compiling kubrick SampleTransport.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
    open let base = Base()
                    ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
    open let base = Base()
    ~~~~     ^
    public
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
public class CaptureSession: Session {
             ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:6:20: note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
    associatedtype Base: BaseSession
                   ^
[23/26] Compiling kubrick Session.swift
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:21: error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
    open let base = Base()
                    ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
    open let base = Base()
    ~~~~     ^
    public
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
public class CaptureSession: Session {
             ^
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:6:20: note: protocol requires nested type 'Base'; add nested type 'Base' for conformance
    associatedtype Base: BaseSession
                   ^
[24/28] Compiling kubrick AVStream.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(camera)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(mic)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
                self.session.addInput(nextDevice)
                ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
    public init(_ mediaSource: MediaSource = SystemMediaSource()) {
                                             ^~~~~~~~~~~~~~~~~~~
                                                                 as! MediaSource
[25/28] Compiling kubrick Source.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(camera)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(mic)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
                self.session.addInput(nextDevice)
                ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
    public init(_ mediaSource: MediaSource = SystemMediaSource()) {
                                             ^~~~~~~~~~~~~~~~~~~
                                                                 as! MediaSource
[26/28] Compiling kubrick SourceDiscoverer.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(camera)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
            self.session.addInput(mic)
            ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
                self.session.addInput(nextDevice)
                ~~~~~~~~~~~~ ^~~~~~~~
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
    public init(_ mediaSource: MediaSource = SystemMediaSource()) {
                                             ^~~~~~~~~~~~~~~~~~~
                                                                 as! MediaSource
[27/28] Compiling kubrick H264EncoderSink.swift
[28/28] Compiling kubrick MuxerSink.swift
error: fatalError
BUILD FAILURE 5.10 linux

Build Machine: Linux 1