Build Information
Failed to build kubrick, reference master (41b1ab
), with Swift 6.2 (beta) for Linux on 18 Jun 2025 00:02:51 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4606859-3":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.2-latest swift build --triple x86_64-unknown-linux-gnu 2>&1
Build Log
========================================
RunAll
========================================
Builder version: 4.64.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/krad/kubrick.git
Reference: master
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
From https://github.com/krad/kubrick
* branch master -> FETCH_HEAD
* [new branch] master -> origin/master
HEAD is now at 41b1abc Not really happy with this compromise but it will do for pre-processing on macOS. Super frustrated with CMSampleBuffer behavior
Cloned https://github.com/krad/kubrick.git
Revision (git rev-parse @):
41b1abcb79d58c9e70379bb314187c20ebabcf0f
SUCCESS checkout https://github.com/krad/kubrick.git at master
========================================
Build
========================================
Selected platform: linux
Swift version: 6.2
Building package at path: $PWD
https://github.com/krad/kubrick.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-3":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.2-latest swift build --triple x86_64-unknown-linux-gnu 2>&1
basic-6.2-latest: Pulling from finestructure/spi-images
Digest: sha256:f81a7bd7aa87a0f81848d48c5bcc03f5f78deebd37fa5f9be9913077205d3687
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.2-latest
Fetching https://github.com/krad/grip.git
[1/176] Fetching grip
Fetched https://github.com/krad/grip.git from cache (0.86s)
Computing version for https://github.com/krad/grip.git
Computed https://github.com/krad/grip.git at 1.3.5 (1.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 VideoSamplePacket.swift
[5/16] Compiling grip StreamType.swift
[6/16] Compiling grip VideoDimensionsPacket.swift
[7/16] Compiling grip VideoParamSetPacket.swift
[8/17] Compiling grip Writeable.swift
[9/17] Compiling grip NALU.swift
[10/17] Compiling grip AudioSamplePacket.swift
[11/17] Compiling grip Packets.swift
[12/17] Compiling grip StreamTypePacket.swift
[13/17] Emitting module grip
[14/17] Compiling grip CompressedSample.swift
[15/17] Compiling grip ByteHelpers.swift
[16/17] Compiling grip BinaryEncodable.swift
[17/17] Compiling grip BinaryEncodableExtensions.swift
[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'
1 | public class Microphone: MediaDevice {
| |- error: type 'Microphone' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
[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'
1 | public class Microphone: MediaDevice {
| |- error: type 'Microphone' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
[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'
1 | public class Microphone: MediaDevice {
| |- error: type 'Microphone' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
[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'
1 | public class Microphone: MediaDevice {
| |- error: type 'Microphone' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
[23/47] Compiling kubrick AudioReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class AudioReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
11 | public init(_ ident: String? = nil) {
12 | if let i = ident { self.ident = i }
13 | else { self.ident = UUID().uuidString }
| `- error: cannot find 'UUID' in scope
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class VideoReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
| `- error: cannot find type 'CMSampleBuffer' in scope
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
11 | public init(_ ident: String? = nil) {
12 | if let i = ident { self.ident = i }
13 | else { self.ident = UUID().uuidString }
| `- error: cannot find 'UUID' in scope
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
| `- error: cannot find type 'CFArray' in scope
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 | to: CFMutableDictionary.self)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
| `- error: cannot find 'CFArrayGetValueAtIndex' in scope
38 | to: CFMutableDictionary.self)
39 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 | to: CFMutableDictionary.self)
| `- error: cannot find 'CFMutableDictionary' in scope
39 |
40 | // let key = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
| `- error: generic parameter 'U' could not be inferred
38 | to: CFMutableDictionary.self)
39 |
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
1 | @inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
| `- note: in call to function 'unsafeBitCast(_:to:)'
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
40 | // let key = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
41 | // let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
| `- error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 | CFDictionarySetValue(dictionary, key, value)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
41 | // let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
| `- error: cannot find 'kCFBooleanTrue' in scope
44 | CFDictionarySetValue(dictionary, key, value)
45 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 | CFDictionarySetValue(dictionary, key, value)
| `- error: cannot find 'CFDictionarySetValue' in scope
45 | }
46 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
| `- error: cannot find type 'CMSampleBuffer' in scope
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
| `- error: cannot find 'CMSampleTimingInfo' in scope
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
| `- error: cannot find 'CMSampleBufferGetDuration' in scope
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
| `- error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
| `- error: cannot find 'kCMTimeInvalid' in scope
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
| `- error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
55 | sampleBuffer,
56 | 1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
| `- error: cannot find 'kCFAllocatorDefault' in scope
55 | sampleBuffer,
56 | 1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
58 | &newSampleBuffer)
59 |
60 | if status == noErr {
| `- error: cannot find 'noErr' in scope
61 | return newSampleBuffer
62 | }
[24/47] Compiling kubrick VideoReader.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class AudioReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
11 | public init(_ ident: String? = nil) {
12 | if let i = ident { self.ident = i }
13 | else { self.ident = UUID().uuidString }
| `- error: cannot find 'UUID' in scope
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class VideoReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
| `- error: cannot find type 'CMSampleBuffer' in scope
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
11 | public init(_ ident: String? = nil) {
12 | if let i = ident { self.ident = i }
13 | else { self.ident = UUID().uuidString }
| `- error: cannot find 'UUID' in scope
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
| `- error: cannot find type 'CFArray' in scope
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 | to: CFMutableDictionary.self)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
| `- error: cannot find 'CFArrayGetValueAtIndex' in scope
38 | to: CFMutableDictionary.self)
39 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 | to: CFMutableDictionary.self)
| `- error: cannot find 'CFMutableDictionary' in scope
39 |
40 | // let key = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
| `- error: generic parameter 'U' could not be inferred
38 | to: CFMutableDictionary.self)
39 |
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
1 | @inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
| `- note: in call to function 'unsafeBitCast(_:to:)'
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
40 | // let key = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
41 | // let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
| `- error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 | CFDictionarySetValue(dictionary, key, value)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
41 | // let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
| `- error: cannot find 'kCFBooleanTrue' in scope
44 | CFDictionarySetValue(dictionary, key, value)
45 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 | CFDictionarySetValue(dictionary, key, value)
| `- error: cannot find 'CFDictionarySetValue' in scope
45 | }
46 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
| `- error: cannot find type 'CMSampleBuffer' in scope
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
| `- error: cannot find 'CMSampleTimingInfo' in scope
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
| `- error: cannot find 'CMSampleBufferGetDuration' in scope
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
| `- error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
| `- error: cannot find 'kCMTimeInvalid' in scope
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
| `- error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
55 | sampleBuffer,
56 | 1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
| `- error: cannot find 'kCFAllocatorDefault' in scope
55 | sampleBuffer,
56 | 1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
58 | &newSampleBuffer)
59 |
60 | if status == noErr {
| `- error: cannot find 'noErr' in scope
61 | return newSampleBuffer
62 | }
[25/47] Compiling kubrick MediaFormat.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class AudioReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
11 | public init(_ ident: String? = nil) {
12 | if let i = ident { self.ident = i }
13 | else { self.ident = UUID().uuidString }
| `- error: cannot find 'UUID' in scope
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class VideoReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
| `- error: cannot find type 'CMSampleBuffer' in scope
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
11 | public init(_ ident: String? = nil) {
12 | if let i = ident { self.ident = i }
13 | else { self.ident = UUID().uuidString }
| `- error: cannot find 'UUID' in scope
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
| `- error: cannot find type 'CFArray' in scope
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 | to: CFMutableDictionary.self)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
| `- error: cannot find 'CFArrayGetValueAtIndex' in scope
38 | to: CFMutableDictionary.self)
39 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 | to: CFMutableDictionary.self)
| `- error: cannot find 'CFMutableDictionary' in scope
39 |
40 | // let key = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
| `- error: generic parameter 'U' could not be inferred
38 | to: CFMutableDictionary.self)
39 |
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
1 | @inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
| `- note: in call to function 'unsafeBitCast(_:to:)'
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
40 | // let key = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
41 | // let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
| `- error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 | CFDictionarySetValue(dictionary, key, value)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
41 | // let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
| `- error: cannot find 'kCFBooleanTrue' in scope
44 | CFDictionarySetValue(dictionary, key, value)
45 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 | CFDictionarySetValue(dictionary, key, value)
| `- error: cannot find 'CFDictionarySetValue' in scope
45 | }
46 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
| `- error: cannot find type 'CMSampleBuffer' in scope
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
| `- error: cannot find 'CMSampleTimingInfo' in scope
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
| `- error: cannot find 'CMSampleBufferGetDuration' in scope
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
| `- error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
| `- error: cannot find 'kCMTimeInvalid' in scope
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
| `- error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
55 | sampleBuffer,
56 | 1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
| `- error: cannot find 'kCFAllocatorDefault' in scope
55 | sampleBuffer,
56 | 1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
58 | &newSampleBuffer)
59 |
60 | if status == noErr {
| `- error: cannot find 'noErr' in scope
61 | return newSampleBuffer
62 | }
[26/47] Compiling kubrick Sample.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class AudioReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:13:29: error: cannot find 'UUID' in scope
11 | public init(_ ident: String? = nil) {
12 | if let i = ident { self.ident = i }
13 | else { self.ident = UUID().uuidString }
| `- error: cannot find 'UUID' in scope
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class VideoReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
| `- error: cannot find type 'CMSampleBuffer' in scope
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:13:29: error: cannot find 'UUID' in scope
11 | public init(_ ident: String? = nil) {
12 | if let i = ident { self.ident = i }
13 | else { self.ident = UUID().uuidString }
| `- error: cannot find 'UUID' in scope
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:36:22: error: cannot find type 'CFArray' in scope
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
| `- error: cannot find type 'CFArray' in scope
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 | to: CFMutableDictionary.self)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:36: error: cannot find 'CFArrayGetValueAtIndex' in scope
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
| `- error: cannot find 'CFArrayGetValueAtIndex' in scope
38 | to: CFMutableDictionary.self)
39 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:38:40: error: cannot find 'CFMutableDictionary' in scope
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
38 | to: CFMutableDictionary.self)
| `- error: cannot find 'CFMutableDictionary' in scope
39 |
40 | // let key = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:37:22: error: generic parameter 'U' could not be inferred
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
| `- error: generic parameter 'U' could not be inferred
38 | to: CFMutableDictionary.self)
39 |
Swift.unsafeBitCast:1:24: note: in call to function 'unsafeBitCast(_:to:)'
1 | @inlinable public func unsafeBitCast<T, U>(_ x: T, to type: U.Type) -> U
| `- note: in call to function 'unsafeBitCast(_:to:)'
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:42:40: error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
40 | // let key = Unmanaged.passUnretained("MediaDeviceReader.ident" as CFString).toOpaque()
41 | // let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
| `- error: cannot find 'kCMSampleAttachmentKey_DisplayImmediately' in scope
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 | CFDictionarySetValue(dictionary, key, value)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:43:42: error: cannot find 'kCFBooleanTrue' in scope
41 | // let value = Unmanaged.passUnretained(identifier as CFString).toOpaque()
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
| `- error: cannot find 'kCFBooleanTrue' in scope
44 | CFDictionarySetValue(dictionary, key, value)
45 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:44:5: error: cannot find 'CFDictionarySetValue' in scope
42 | let key = Unmanaged.passUnretained(kCMSampleAttachmentKey_DisplayImmediately).toOpaque()
43 | let value = Unmanaged.passUnretained(kCFBooleanTrue).toOpaque()
44 | CFDictionarySetValue(dictionary, key, value)
| `- error: cannot find 'CFDictionarySetValue' in scope
45 | }
46 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:49:26: error: cannot find type 'CMSampleBuffer' in scope
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
| `- error: cannot find type 'CMSampleBuffer' in scope
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:22: error: cannot find 'CMSampleTimingInfo' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
| `- error: cannot find 'CMSampleTimingInfo' in scope
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:50:51: error: cannot find 'CMSampleBufferGetDuration' in scope
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
| `- error: cannot find 'CMSampleBufferGetDuration' in scope
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:51:64: error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
| `- error: cannot find 'CMSampleBufferGetPresentationTimeStamp' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:52:58: error: cannot find 'kCMTimeInvalid' in scope
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
51 | presentationTimeStamp: CMSampleBufferGetPresentationTimeStamp(sampleBuffer),
52 | decodeTimeStamp: kCMTimeInvalid)
| `- error: cannot find 'kCMTimeInvalid' in scope
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:18: error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
| `- error: cannot find 'CMSampleBufferCreateCopyWithNewTiming' in scope
55 | sampleBuffer,
56 | 1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:54:56: error: cannot find 'kCFAllocatorDefault' in scope
52 | decodeTimeStamp: kCMTimeInvalid)
53 |
54 | let status = CMSampleBufferCreateCopyWithNewTiming(kCFAllocatorDefault,
| `- error: cannot find 'kCFAllocatorDefault' in scope
55 | sampleBuffer,
56 | 1,
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:60:18: error: cannot find 'noErr' in scope
58 | &newSampleBuffer)
59 |
60 | if status == noErr {
| `- error: cannot find 'noErr' in scope
61 | return newSampleBuffer
62 | }
error: emit-module command failed with exit code 1 (use -v to see invocation)
[27/51] Emitting module kubrick
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
| `- error: cannot find type 'Data' in scope
105 |
106 | var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
5 |
6 | extension Rational: Hashable {
7 | public var hashValue: Int {
| `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
8 | return Int(self.numerator ^ Int64(self.denominator))
9 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
7 |
8 | public var frameRate: Float64 {
9 | didSet { self.update(frameRate: self.frameRate) }
| `- error: value of type 'Camera' has no member 'update'
10 | }
11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
11 |
12 | public var orientation: CameraOrientation = .unknown {
13 | didSet { self.update(orientation: self.orientation) }
| `- error: value of type 'Camera' has no member 'update'
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
1 | public class Camera: MediaDevice {
| |- error: type 'Camera' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
1 | public class Display: MediaDevice {
| |- error: type 'Display' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 | public var source: Source
3 | public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Microphone.swift:1:14: error: type 'Microphone' does not conform to protocol 'MediaDevice'
1 | public class Microphone: MediaDevice {
| |- error: type 'Microphone' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/AudioReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class AudioReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:3:27: error: cannot find type 'NSObject' in scope
1 | import Dispatch
2 |
3 | public class VideoReader: NSObject, MediaDeviceReader {
| `- error: cannot find type 'NSObject' in scope
4 |
5 | public var ident: MediaSourceIdentifier
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:35:49: error: cannot find type 'CMSampleBuffer' in scope
33 |
34 |
35 | func setSampleBufferAttachments(_ sampleBuffer: CMSampleBuffer, identifier: String) {
| `- error: cannot find type 'CMSampleBuffer' in scope
36 | let attachments: CFArray! = CMSampleBufferGetSampleAttachmentsArray(sampleBuffer, true)
37 | let dictionary = unsafeBitCast(CFArrayGetValueAtIndex(attachments, 0),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:53: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Readers/VideoReader.swift:48:34: error: cannot find type 'CMSampleBuffer' in scope
46 |
47 |
48 | func stripDecode(_ sampleBuffer: CMSampleBuffer) -> CMSampleBuffer? {
| `- error: cannot find type 'CMSampleBuffer' in scope
49 | var newSampleBuffer: CMSampleBuffer?
50 | var timingInfo = CMSampleTimingInfo(duration: CMSampleBufferGetDuration(sampleBuffer),
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
45 |
46 | public class CaptureSession: Session {
47 | open let base = Base()
| `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
48 |
49 | public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
4 |
5 | public protocol Session {
6 | associatedtype Base: BaseSession
| `- note: protocol requires nested type 'Base'
7 | func startRunning()
8 | func stopRunning()
:
44 | }
45 |
46 | public class CaptureSession: Session {
| |- error: type 'CaptureSession' does not conform to protocol 'Session'
| `- note: add stubs for conformance
47 | open let base = Base()
48 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
33 | public private(set) var mediaSource: MediaSource
34 |
35 | public init(_ mediaSource: MediaSource = SystemMediaSource()) {
| `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
36 | self.mediaSource = mediaSource
37 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[28/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'
45 |
46 | public class CaptureSession: Session {
47 | open let base = Base()
| `- error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
48 |
49 | public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
45 |
46 | public class CaptureSession: Session {
47 | open let base = Base()
| `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
48 |
49 | public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
4 |
5 | public protocol Session {
6 | associatedtype Base: BaseSession
| `- note: protocol requires nested type 'Base'
7 | func startRunning()
8 | func stopRunning()
:
44 | }
45 |
46 | public class CaptureSession: Session {
| |- error: type 'CaptureSession' does not conform to protocol 'Session'
| `- note: add stubs for conformance
47 | open let base = Base()
48 |
[29/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'
45 |
46 | public class CaptureSession: Session {
47 | open let base = Base()
| `- error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
48 |
49 | public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
45 |
46 | public class CaptureSession: Session {
47 | open let base = Base()
| `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
48 |
49 | public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
4 |
5 | public protocol Session {
6 | associatedtype Base: BaseSession
| `- note: protocol requires nested type 'Base'
7 | func startRunning()
8 | func stopRunning()
:
44 | }
45 |
46 | public class CaptureSession: Session {
| |- error: type 'CaptureSession' does not conform to protocol 'Session'
| `- note: add stubs for conformance
47 | open let base = Base()
48 |
[30/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'
45 |
46 | public class CaptureSession: Session {
47 | open let base = Base()
| `- error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
48 |
49 | public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
45 |
46 | public class CaptureSession: Session {
47 | open let base = Base()
| `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
48 |
49 | public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
4 |
5 | public protocol Session {
6 | associatedtype Base: BaseSession
| `- note: protocol requires nested type 'Base'
7 | func startRunning()
8 | func stopRunning()
:
44 | }
45 |
46 | public class CaptureSession: Session {
| |- error: type 'CaptureSession' does not conform to protocol 'Session'
| `- note: add stubs for conformance
47 | open let base = Base()
48 |
[31/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'
45 |
46 | public class CaptureSession: Session {
47 | open let base = Base()
| `- error: unsupported recursion for reference to type alias 'Base' of type 'CaptureSession'
48 |
49 | public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:47:14: warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
45 |
46 | public class CaptureSession: Session {
47 | open let base = Base()
| `- warning: 'let' properties are implicitly 'final'; use 'public' instead of 'open'
48 |
49 | public private(set) var inputs: [MediaDeviceInput] = []
/host/spi-builder-workspace/Sources/kubrick/Samples/Session.swift:46:14: error: type 'CaptureSession' does not conform to protocol 'Session'
4 |
5 | public protocol Session {
6 | associatedtype Base: BaseSession
| `- note: protocol requires nested type 'Base'
7 | func startRunning()
8 | func stopRunning()
:
44 | }
45 |
46 | public class CaptureSession: Session {
| |- error: type 'CaptureSession' does not conform to protocol 'Session'
| `- note: add stubs for conformance
47 | open let base = Base()
48 |
[32/51] Compiling kubrick Camera.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
7 |
8 | public var frameRate: Float64 {
9 | didSet { self.update(frameRate: self.frameRate) }
| `- error: value of type 'Camera' has no member 'update'
10 | }
11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
11 |
12 | public var orientation: CameraOrientation = .unknown {
13 | didSet { self.update(orientation: self.orientation) }
| `- error: value of type 'Camera' has no member 'update'
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
1 | public class Camera: MediaDevice {
| |- error: type 'Camera' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
17 | self.source = source
18 | self.frameRate = 30
19 | self.update(frameRate: self.frameRate)
| `- error: value of type 'Camera' has no member 'update'
20 | }
21 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
1 | public class Display: MediaDevice {
| |- error: type 'Display' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 | public var source: Source
3 | public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
[33/51] Compiling kubrick Clock.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
7 |
8 | public var frameRate: Float64 {
9 | didSet { self.update(frameRate: self.frameRate) }
| `- error: value of type 'Camera' has no member 'update'
10 | }
11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
11 |
12 | public var orientation: CameraOrientation = .unknown {
13 | didSet { self.update(orientation: self.orientation) }
| `- error: value of type 'Camera' has no member 'update'
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
1 | public class Camera: MediaDevice {
| |- error: type 'Camera' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
17 | self.source = source
18 | self.frameRate = 30
19 | self.update(frameRate: self.frameRate)
| `- error: value of type 'Camera' has no member 'update'
20 | }
21 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
1 | public class Display: MediaDevice {
| |- error: type 'Display' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 | public var source: Source
3 | public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
[34/51] Compiling kubrick Display.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
7 |
8 | public var frameRate: Float64 {
9 | didSet { self.update(frameRate: self.frameRate) }
| `- error: value of type 'Camera' has no member 'update'
10 | }
11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
11 |
12 | public var orientation: CameraOrientation = .unknown {
13 | didSet { self.update(orientation: self.orientation) }
| `- error: value of type 'Camera' has no member 'update'
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
1 | public class Camera: MediaDevice {
| |- error: type 'Camera' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
17 | self.source = source
18 | self.frameRate = 30
19 | self.update(frameRate: self.frameRate)
| `- error: value of type 'Camera' has no member 'update'
20 | }
21 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
1 | public class Display: MediaDevice {
| |- error: type 'Display' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 | public var source: Source
3 | public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
[35/51] Compiling kubrick MediaDevice.swift
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:9:23: error: value of type 'Camera' has no member 'update'
7 |
8 | public var frameRate: Float64 {
9 | didSet { self.update(frameRate: self.frameRate) }
| `- error: value of type 'Camera' has no member 'update'
10 | }
11 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:13:23: error: value of type 'Camera' has no member 'update'
11 |
12 | public var orientation: CameraOrientation = .unknown {
13 | didSet { self.update(orientation: self.orientation) }
| `- error: value of type 'Camera' has no member 'update'
14 | }
15 |
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:1:14: error: type 'Camera' does not conform to protocol 'MediaDevice'
1 | public class Camera: MediaDevice {
| |- error: type 'Camera' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 |
3 | public var source: Source
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Camera.swift:19:14: error: value of type 'Camera' has no member 'update'
17 | self.source = source
18 | self.frameRate = 30
19 | self.update(frameRate: self.frameRate)
| `- error: value of type 'Camera' has no member 'update'
20 | }
21 | }
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/Display.swift:1:14: error: type 'Display' does not conform to protocol 'MediaDevice'
1 | public class Display: MediaDevice {
| |- error: type 'Display' does not conform to protocol 'MediaDevice'
| `- note: add stubs for conformance
2 | public var source: Source
3 | public var input: MediaDeviceInput?
/host/spi-builder-workspace/Sources/kubrick/MediaDevices/MediaDevice.swift:10:19: note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
8 | var reader: MediaDeviceReader? { get set }
9 |
10 | mutating func createInput(onCreate: MediaDeviceInputClosure)
| `- note: protocol requires function 'createInput(onCreate:)' with type '((any MediaDeviceInput) -> Void) -> ()'
11 | mutating func createOutput(onCreate: MediaDeviceOutputClosure)
| `- note: protocol requires function 'createOutput(onCreate:)' with type '((any MediaDeviceOutput) -> Void) -> ()'
12 | mutating func set(reader: MediaDeviceReader) throws
13 | }
[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
12 | init(_ settings: H264Settings) throws {
13 | self.settings = settings
14 | try self.configure()
| `- warning: no calls to throwing functions occur within 'try' expression
15 | }
16 |
[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
12 | init(_ settings: H264Settings) throws {
13 | self.settings = settings
14 | try self.configure()
| `- warning: no calls to throwing functions occur within 'try' expression
15 | }
16 |
[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
12 | init(_ settings: H264Settings) throws {
13 | self.settings = settings
14 | try self.configure()
| `- warning: no calls to throwing functions occur within 'try' expression
15 | }
16 |
[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
12 | init(_ settings: H264Settings) throws {
13 | self.settings = settings
14 | try self.configure()
| `- warning: no calls to throwing functions occur within 'try' expression
15 | }
16 |
[40/51] Compiling kubrick Sink.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
71 |
72 | if let camera = videoDevices.first {
73 | self.session.addInput(camera)
| `- error: value of type 'CaptureSession' has no member 'addInput'
74 | self.currentVideoDevice = camera
75 | _ = self.cycleDevice(with: .video) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
77 |
78 | if let mic = audioDevices.first {
79 | self.session.addInput(mic)
| `- error: value of type 'CaptureSession' has no member 'addInput'
80 | self.currentAudioDevice = mic
81 | _ = self.cycleDevice(with: .audio) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
189 | self.session.beginConfiguration()
190 | self.session.removeInput(oldDevice)
191 | self.session.addInput(nextDevice)
| `- error: value of type 'CaptureSession' has no member 'addInput'
192 | self.session.commitConfiguration()
193 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
33 | public private(set) var mediaSource: MediaSource
34 |
35 | public init(_ mediaSource: MediaSource = SystemMediaSource()) {
| `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
36 | self.mediaSource = mediaSource
37 | }
[41/51] Compiling kubrick AVStream.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
71 |
72 | if let camera = videoDevices.first {
73 | self.session.addInput(camera)
| `- error: value of type 'CaptureSession' has no member 'addInput'
74 | self.currentVideoDevice = camera
75 | _ = self.cycleDevice(with: .video) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
77 |
78 | if let mic = audioDevices.first {
79 | self.session.addInput(mic)
| `- error: value of type 'CaptureSession' has no member 'addInput'
80 | self.currentAudioDevice = mic
81 | _ = self.cycleDevice(with: .audio) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
189 | self.session.beginConfiguration()
190 | self.session.removeInput(oldDevice)
191 | self.session.addInput(nextDevice)
| `- error: value of type 'CaptureSession' has no member 'addInput'
192 | self.session.commitConfiguration()
193 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
33 | public private(set) var mediaSource: MediaSource
34 |
35 | public init(_ mediaSource: MediaSource = SystemMediaSource()) {
| `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
36 | self.mediaSource = mediaSource
37 | }
[42/51] Compiling kubrick Source.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
71 |
72 | if let camera = videoDevices.first {
73 | self.session.addInput(camera)
| `- error: value of type 'CaptureSession' has no member 'addInput'
74 | self.currentVideoDevice = camera
75 | _ = self.cycleDevice(with: .video) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
77 |
78 | if let mic = audioDevices.first {
79 | self.session.addInput(mic)
| `- error: value of type 'CaptureSession' has no member 'addInput'
80 | self.currentAudioDevice = mic
81 | _ = self.cycleDevice(with: .audio) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
189 | self.session.beginConfiguration()
190 | self.session.removeInput(oldDevice)
191 | self.session.addInput(nextDevice)
| `- error: value of type 'CaptureSession' has no member 'addInput'
192 | self.session.commitConfiguration()
193 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
33 | public private(set) var mediaSource: MediaSource
34 |
35 | public init(_ mediaSource: MediaSource = SystemMediaSource()) {
| `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
36 | self.mediaSource = mediaSource
37 | }
[43/51] Compiling kubrick SourceDiscoverer.swift
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:73:26: error: value of type 'CaptureSession' has no member 'addInput'
71 |
72 | if let camera = videoDevices.first {
73 | self.session.addInput(camera)
| `- error: value of type 'CaptureSession' has no member 'addInput'
74 | self.currentVideoDevice = camera
75 | _ = self.cycleDevice(with: .video) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:79:26: error: value of type 'CaptureSession' has no member 'addInput'
77 |
78 | if let mic = audioDevices.first {
79 | self.session.addInput(mic)
| `- error: value of type 'CaptureSession' has no member 'addInput'
80 | self.currentAudioDevice = mic
81 | _ = self.cycleDevice(with: .audio) // FIXME: Priming the initial state
/host/spi-builder-workspace/Sources/kubrick/Sources/AVStream.swift:191:30: error: value of type 'CaptureSession' has no member 'addInput'
189 | self.session.beginConfiguration()
190 | self.session.removeInput(oldDevice)
191 | self.session.addInput(nextDevice)
| `- error: value of type 'CaptureSession' has no member 'addInput'
192 | self.session.commitConfiguration()
193 |
/host/spi-builder-workspace/Sources/kubrick/Sources/SourceDiscoverer.swift:35:46: error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
33 | public private(set) var mediaSource: MediaSource
34 |
35 | public init(_ mediaSource: MediaSource = SystemMediaSource()) {
| `- error: default argument value of type 'SystemMediaSource' does not conform to 'MediaSource'
36 | self.mediaSource = mediaSource
37 | }
[44/51] Compiling kubrick FileEndpoint.swift
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:15:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#no-usage]
13 | public init(fileURL: URL, onEnd: EndedCallback?) throws {
14 | if !FileManager.default.fileExists(atPath: fileURL.path) {
15 | FileManager.default.createFile(atPath: fileURL.path, contents: nil, attributes: nil)
| `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#no-usage]
16 | }
17 |
[45/51] Compiling kubrick H264EncoderSink.swift
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:15:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#no-usage]
13 | public init(fileURL: URL, onEnd: EndedCallback?) throws {
14 | if !FileManager.default.fileExists(atPath: fileURL.path) {
15 | FileManager.default.createFile(atPath: fileURL.path, contents: nil, attributes: nil)
| `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#no-usage]
16 | }
17 |
[46/51] Compiling kubrick MuxerSink.swift
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:15:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#no-usage]
13 | public init(fileURL: URL, onEnd: EndedCallback?) throws {
14 | if !FileManager.default.fileExists(atPath: fileURL.path) {
15 | FileManager.default.createFile(atPath: fileURL.path, contents: nil, attributes: nil)
| `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#no-usage]
16 | }
17 |
[47/51] Compiling kubrick PrettyPortraitSink.swift
/host/spi-builder-workspace/Sources/kubrick/Sinks/FileEndpoint.swift:15:33: warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#no-usage]
13 | public init(fileURL: URL, onEnd: EndedCallback?) throws {
14 | if !FileManager.default.fileExists(atPath: fileURL.path) {
15 | FileManager.default.createFile(atPath: fileURL.path, contents: nil, attributes: nil)
| `- warning: result of call to 'createFile(atPath:contents:attributes:)' is unused [#no-usage]
16 | }
17 |
[48/51] Compiling kubrick VideoEncoder.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
| `- error: cannot find type 'Data' in scope
105 |
106 | var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
5 |
6 | extension Rational: Hashable {
7 | public var hashValue: Int {
| `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
8 | return Int(self.numerator ^ Int64(self.denominator))
9 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[49/51] Compiling kubrick Bytes.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
| `- error: cannot find type 'Data' in scope
105 |
106 | var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
5 |
6 | extension Rational: Hashable {
7 | public var hashValue: Int {
| `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
8 | return Int(self.numerator ^ Int64(self.denominator))
9 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[50/51] Compiling kubrick Rational.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
| `- error: cannot find type 'Data' in scope
105 |
106 | var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
5 |
6 | extension Rational: Hashable {
7 | public var hashValue: Int {
| `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
8 | return Int(self.numerator ^ Int64(self.denominator))
9 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[51/51] Compiling kubrick ThreadSafeArray.swift
/host/spi-builder-workspace/Sources/kubrick/Helpers/Bytes.swift:104:11: error: cannot find type 'Data' in scope
102 | }
103 |
104 | extension Data {
| `- error: cannot find type 'Data' in scope
105 |
106 | var bytes: [UInt8] {
/host/spi-builder-workspace/Sources/kubrick/Helpers/Rational.swift:7:16: warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
5 |
6 | extension Rational: Hashable {
7 | public var hashValue: Int {
| `- warning: 'Hashable.hashValue' is deprecated as a protocol requirement; conform type 'Rational' to 'Hashable' by implementing 'hash(into:)' instead [#DeprecatedDeclaration]
8 | return Int(self.numerator ^ Int64(self.denominator))
9 | }
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
BUILD FAILURE 6.2 linux