The Swift Package Index logo.Swift Package Index

Build Information

Failed to build MosaicKit, reference main (cd1cf3), with Swift 6.2 for macOS (SPM) on 3 Oct 2026 16:22:56 UTC.

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 5.1.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/fdenis75/MosaicKit.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/fdenis75/MosaicKit
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at cd1cf36 Merge pull request #49 from fdenis75/claude/f2-ffmpeg-args-i2-i3
Cloned https://github.com/fdenis75/MosaicKit.git
Revision (git rev-parse @):
cd1cf36776d9af71d33f2578a6ba1e42ba6463c8
SPI manifest file found: $PWD/.spi.yml
SUCCESS checkout https://github.com/fdenis75/MosaicKit.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.2
Building package at path:  $PWD
https://github.com/fdenis75/MosaicKit.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-26.3.0.app xcrun swift build --arch arm64
Building for debugging...
[0/14] Write sources
[4/14] Copying libwebp.a
[5/14] Copying MetalShaders.metal
[5/14] Copying libwebpmux.a
[5/14] Copying libsharpyuv.a
[9/14] Copying libwebpdemux.a
[10/14] Write swift-version--3CB7CFEC50E0D141.txt
[11/54] Compiling webpbridge WebpIncrementalDecoder.mm
[12/54] Compiling webpbridge WebpIncrementalDecoderResult.mm
[13/54] Compiling webpbridge WebpRGBAMultiplier.mm
[15/66] Emitting module DominantColors
[16/69] Compiling DominantColors ColorShade.swift
[17/69] Compiling DominantColors HSL.swift
[18/69] Compiling DominantColors Hex.swift
[19/69] Compiling DominantColors Lab.swift
[20/69] Compiling DominantColors UIImageExtension.swift
[21/69] Compiling DominantColors GradientColors.swift
[22/69] Compiling DominantColors ImageColorError.swift
[23/69] Compiling webp CGImage+Util.swift
[24/69] Compiling webp InternalRawRepresentable.swift
[25/69] Compiling webp WebPAnimatedEncoder.swift
[26/69] Compiling webp WebPDecoder+Platform.swift
[27/69] Compiling DominantColors RGB.swift
[28/69] Compiling DominantColors RGB255.swift
[29/69] Compiling DominantColors XYZ.swift
[30/69] Compiling DominantColors ComplementaryColor.swift
[31/69] Compiling DominantColors ContrastRatio.swift
[32/69] Compiling DominantColors DeltaEFormula.swift
[33/69] Compiling DominantColors Difference.swift
[34/69] Compiling DominantColors DominantColorAlgorithm.swift
[35/69] Compiling webp WebPError.swift
[36/70] Compiling SJSAssetExportSession ExportSession.swift
[37/70] Compiling SJSAssetExportSession SampleWriter.swift
[38/70] Compiling SJSAssetExportSession AudioOutputSettings.swift
[39/70] Emitting module SJSAssetExportSession
[40/70] Compiling SJSAssetExportSession ExportSession+Error.swift
[41/70] Compiling SJSAssetExportSession Array+Extensions.swift
[42/70] Compiling SJSAssetExportSession VideoOutputSettings.swift
[43/70] Compiling SJSAssetExportSession CMTime+seconds.swift
[44/70] Compiling DominantColors DominantColors+UIColor.swift
[45/70] Compiling DominantColors DominantColors.swift
[46/70] Compiling DominantColors CGFloatExtensions.swift
[47/70] Compiling DominantColors CGImageExtensions.swift
[48/70] Compiling DominantColors CGSizeExtensions.swift
[49/70] Compiling DominantColors NSImageExtension.swift
[50/70] Compiling DominantColors ImageFIlter.swift
[51/70] Compiling DominantColors ImageTrimAlpha.swift
[52/70] Compiling DominantColors RelativeLuminance.swift
[53/70] Compiling DominantColors DominantColorQuality.swift
[54/70] Compiling DominantColors DominantColors+CIAreaAverage.swift
[55/70] Compiling DominantColors DominantColors+CIE.swift
[56/70] Compiling DominantColors DominantColors+CIKMeans.swift
[57/70] Compiling DominantColors DominantColors+ColorResolved.swift
[58/70] Compiling DominantColors DominantColors+NSColor.swift
[59/103] Compiling webp WebPImageInspector.swift
[60/103] Compiling webp WebPEncoder+CGImage.swift
[61/103] Compiling webp WebPEncoder+Platform.swift
[62/103] Compiling webp WebPEncoder.swift
[63/103] Compiling webp WebPDecoder.swift
[64/103] Compiling webp WebPEncoderConfig.swift
[65/103] Compiling webp WebPDecoderConfig.swift
[66/103] Compiling MosaicKit ConfigurationValidation.swift
[67/103] Compiling MosaicKit DensityConfig.swift
[68/103] Emitting module webp
[69/103] Compiling MosaicKit FFmpegEncodingOptions.swift
[70/103] Compiling MosaicKit LayoutConfiguration.swift
[71/103] Compiling MosaicKit ExportWatchdog.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/FFmpegEncoder.swift:288:9: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Process', consider removing it
286 |         // Reference types so they can be safely captured across concurrency boundaries
287 |         // without triggering Swift 6 Sendable errors (Process and Pipe are not Sendable).
288 |         nonisolated(unsafe) let processRef = process
    |         `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Process', consider removing it
289 |         nonisolated(unsafe) let pipeRef = stderrPipe
290 |
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/FFmpegEncoder.swift:289:9: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Pipe', consider removing it
287 |         // without triggering Swift 6 Sendable errors (Process and Pipe are not Sendable).
288 |         nonisolated(unsafe) let processRef = process
289 |         nonisolated(unsafe) let pipeRef = stderrPipe
    |         `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Pipe', consider removing it
290 |
291 |         // Mutable stderr state: only accessed from Foundation's serial readability queue.
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/FFmpegEncoder.swift:240:28: error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
238 |         var exportError: Error?
239 |         do {
240 |             try await Task.detached(priority: .userInitiated) {
    |                            `- error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
241 |                 try await sessionRef.export(to: outputURL, as: .mov)
    |                                      `- note: closure captures 'sessionRef' which is accessible to main actor-isolated code
242 |             }.value
243 |         } catch {
[72/103] Compiling MosaicKit FFmpegEncoder.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/FFmpegEncoder.swift:288:9: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Process', consider removing it
286 |         // Reference types so they can be safely captured across concurrency boundaries
287 |         // without triggering Swift 6 Sendable errors (Process and Pipe are not Sendable).
288 |         nonisolated(unsafe) let processRef = process
    |         `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Process', consider removing it
289 |         nonisolated(unsafe) let pipeRef = stderrPipe
290 |
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/FFmpegEncoder.swift:289:9: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Pipe', consider removing it
287 |         // without triggering Swift 6 Sendable errors (Process and Pipe are not Sendable).
288 |         nonisolated(unsafe) let processRef = process
289 |         nonisolated(unsafe) let pipeRef = stderrPipe
    |         `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Pipe', consider removing it
290 |
291 |         // Mutable stderr state: only accessed from Foundation's serial readability queue.
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/FFmpegEncoder.swift:240:28: error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
238 |         var exportError: Error?
239 |         do {
240 |             try await Task.detached(priority: .userInitiated) {
    |                            `- error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
241 |                 try await sessionRef.export(to: outputURL, as: .mov)
    |                                      `- note: closure captures 'sessionRef' which is accessible to main actor-isolated code
242 |             }.value
243 |         } catch {
[73/103] Compiling MosaicKit PreviewError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/FFmpegEncoder.swift:288:9: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Process', consider removing it
286 |         // Reference types so they can be safely captured across concurrency boundaries
287 |         // without triggering Swift 6 Sendable errors (Process and Pipe are not Sendable).
288 |         nonisolated(unsafe) let processRef = process
    |         `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Process', consider removing it
289 |         nonisolated(unsafe) let pipeRef = stderrPipe
290 |
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/FFmpegEncoder.swift:289:9: warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Pipe', consider removing it
287 |         // without triggering Swift 6 Sendable errors (Process and Pipe are not Sendable).
288 |         nonisolated(unsafe) let processRef = process
289 |         nonisolated(unsafe) let pipeRef = stderrPipe
    |         `- warning: 'nonisolated(unsafe)' is unnecessary for a constant with 'Sendable' type 'Pipe', consider removing it
290 |
291 |         // Mutable stderr state: only accessed from Foundation's serial readability queue.
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/FFmpegEncoder.swift:240:28: error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
238 |         var exportError: Error?
239 |         do {
240 |             try await Task.detached(priority: .userInitiated) {
    |                            `- error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
241 |                 try await sessionRef.export(to: outputURL, as: .mov)
    |                                      `- note: closure captures 'sessionRef' which is accessible to main actor-isolated code
242 |             }.value
243 |         } catch {
[74/106] Emitting module MosaicKit
[75/106] Compiling MosaicKit WebPSupport.swift
[76/106] Compiling MosaicKit VideoInputScanner.swift
[77/106] Compiling MosaicKit resource_bundle_accessor.swift
[82/106] Compiling MosaicKit MosaicConfiguration.swift
[83/106] Compiling MosaicKit MosaicLayout.swift
[84/106] Compiling MosaicKit OverlayConfiguration.swift
[85/106] Compiling MosaicKit PreviewConfiguration.swift
[86/106] Compiling MosaicKit PreviewGeneratorCoordinator.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:874:27: warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 872 |         nominalFrameRate: Float
 873 |     ) -> AVVideoComposition {
 874 |         let instruction = AVMutableVideoCompositionInstruction()
     |                           `- warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 875 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 876 |
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:877:32: warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 875 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 876 |
 877 |         let layerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: compositionVideoTrack)
     |                                `- warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 878 |         layerInstruction.setTransform(finalTransform, at: .zero)
 879 |         instruction.layerInstructions = [layerInstruction]
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:881:32: warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 879 |         instruction.layerInstructions = [layerInstruction]
 880 |
 881 |         let videoComposition = AVMutableVideoComposition()
     |                                `- warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 882 |         videoComposition.instructions = [instruction]
 883 |         videoComposition.renderSize = renderSize
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1521:28: error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
1519 |         var exportError: Error?
1520 |         do {
1521 |             try await Task.detached(priority: .userInitiated) {
     |                            `- error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
1522 |                 try await sessionRef.export(to: outputURL, as: config.format.avFileType)
     |                                      `- note: closure captures 'sessionRef' which is accessible to main actor-isolated code
1523 |             }.value
1524 |         } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1227:35: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1225 |             if let vc = videoComposition {
1226 |                 // Use the raw-settings overload so we can pass our custom video composition for scaling.
1227 |                 exportTask = Task.detached(priority: .userInitiated) {
     |                                   `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1228 |                     try await exporter.export(
     |                                        |- note: closure captures non-Sendable 'compositionAsset'
     |                                        `- note: closure captures non-Sendable 'exportAudioMix'
1229 |                         asset: compositionAsset,
1230 |                         audioOutputSettings: AudioOutputSettings.default.settingsDictionary,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1239:35: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1237 |                 }
1238 |             } else {
1239 |                 exportTask = Task.detached(priority: .userInitiated) {
     |                                   `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1240 |                     try await exporter.export(
     |                                        |- note: closure captures non-Sendable 'compositionAsset'
     |                                        `- note: closure captures non-Sendable 'exportAudioMix'
1241 |                         asset: compositionAsset,
1242 |                         audio: .default,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1228:40: error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
1226 |                 // Use the raw-settings overload so we can pass our custom video composition for scaling.
1227 |                 exportTask = Task.detached(priority: .userInitiated) {
1228 |                     try await exporter.export(
     |                                        |- error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'compositionAsset' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1229 |                         asset: compositionAsset,
1230 |                         audioOutputSettings: AudioOutputSettings.default.settingsDictionary,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1228:40: error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
1226 |                 // Use the raw-settings overload so we can pass our custom video composition for scaling.
1227 |                 exportTask = Task.detached(priority: .userInitiated) {
1228 |                     try await exporter.export(
     |                                        |- error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'exportAudioMix' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1229 |                         asset: compositionAsset,
1230 |                         audioOutputSettings: AudioOutputSettings.default.settingsDictionary,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1240:40: error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
1238 |             } else {
1239 |                 exportTask = Task.detached(priority: .userInitiated) {
1240 |                     try await exporter.export(
     |                                        |- error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'compositionAsset' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1241 |                         asset: compositionAsset,
1242 |                         audio: .default,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1240:40: error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
1238 |             } else {
1239 |                 exportTask = Task.detached(priority: .userInitiated) {
1240 |                     try await exporter.export(
     |                                        |- error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'exportAudioMix' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1241 |                         asset: compositionAsset,
1242 |                         audio: .default,
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
[87/106] Compiling MosaicKit PreviewVideoGenerator.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:874:27: warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 872 |         nominalFrameRate: Float
 873 |     ) -> AVVideoComposition {
 874 |         let instruction = AVMutableVideoCompositionInstruction()
     |                           `- warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 875 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 876 |
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:877:32: warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 875 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 876 |
 877 |         let layerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: compositionVideoTrack)
     |                                `- warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 878 |         layerInstruction.setTransform(finalTransform, at: .zero)
 879 |         instruction.layerInstructions = [layerInstruction]
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:881:32: warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 879 |         instruction.layerInstructions = [layerInstruction]
 880 |
 881 |         let videoComposition = AVMutableVideoComposition()
     |                                `- warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 882 |         videoComposition.instructions = [instruction]
 883 |         videoComposition.renderSize = renderSize
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1521:28: error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
1519 |         var exportError: Error?
1520 |         do {
1521 |             try await Task.detached(priority: .userInitiated) {
     |                            `- error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
1522 |                 try await sessionRef.export(to: outputURL, as: config.format.avFileType)
     |                                      `- note: closure captures 'sessionRef' which is accessible to main actor-isolated code
1523 |             }.value
1524 |         } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1227:35: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1225 |             if let vc = videoComposition {
1226 |                 // Use the raw-settings overload so we can pass our custom video composition for scaling.
1227 |                 exportTask = Task.detached(priority: .userInitiated) {
     |                                   `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1228 |                     try await exporter.export(
     |                                        |- note: closure captures non-Sendable 'compositionAsset'
     |                                        `- note: closure captures non-Sendable 'exportAudioMix'
1229 |                         asset: compositionAsset,
1230 |                         audioOutputSettings: AudioOutputSettings.default.settingsDictionary,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1239:35: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1237 |                 }
1238 |             } else {
1239 |                 exportTask = Task.detached(priority: .userInitiated) {
     |                                   `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1240 |                     try await exporter.export(
     |                                        |- note: closure captures non-Sendable 'compositionAsset'
     |                                        `- note: closure captures non-Sendable 'exportAudioMix'
1241 |                         asset: compositionAsset,
1242 |                         audio: .default,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1228:40: error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
1226 |                 // Use the raw-settings overload so we can pass our custom video composition for scaling.
1227 |                 exportTask = Task.detached(priority: .userInitiated) {
1228 |                     try await exporter.export(
     |                                        |- error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'compositionAsset' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1229 |                         asset: compositionAsset,
1230 |                         audioOutputSettings: AudioOutputSettings.default.settingsDictionary,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1228:40: error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
1226 |                 // Use the raw-settings overload so we can pass our custom video composition for scaling.
1227 |                 exportTask = Task.detached(priority: .userInitiated) {
1228 |                     try await exporter.export(
     |                                        |- error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'exportAudioMix' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1229 |                         asset: compositionAsset,
1230 |                         audioOutputSettings: AudioOutputSettings.default.settingsDictionary,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1240:40: error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
1238 |             } else {
1239 |                 exportTask = Task.detached(priority: .userInitiated) {
1240 |                     try await exporter.export(
     |                                        |- error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'compositionAsset' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1241 |                         asset: compositionAsset,
1242 |                         audio: .default,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1240:40: error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
1238 |             } else {
1239 |                 exportTask = Task.detached(priority: .userInitiated) {
1240 |                     try await exporter.export(
     |                                        |- error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'exportAudioMix' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1241 |                         asset: compositionAsset,
1242 |                         audio: .default,
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
[88/106] Compiling MosaicKit ProcessingError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:874:27: warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 872 |         nominalFrameRate: Float
 873 |     ) -> AVVideoComposition {
 874 |         let instruction = AVMutableVideoCompositionInstruction()
     |                           `- warning: 'AVMutableVideoCompositionInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionInstruction.Configuration instead [#DeprecatedDeclaration]
 875 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 876 |
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:877:32: warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 875 |         instruction.timeRange = CMTimeRange(start: .zero, duration: composition.duration)
 876 |
 877 |         let layerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: compositionVideoTrack)
     |                                `- warning: 'AVMutableVideoCompositionLayerInstruction' was deprecated in macOS 26.0: Use AVVideoCompositionLayerInstruction.Configuration instead [#DeprecatedDeclaration]
 878 |         layerInstruction.setTransform(finalTransform, at: .zero)
 879 |         instruction.layerInstructions = [layerInstruction]
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:881:32: warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 879 |         instruction.layerInstructions = [layerInstruction]
 880 |
 881 |         let videoComposition = AVMutableVideoComposition()
     |                                `- warning: 'AVMutableVideoComposition' was deprecated in macOS 26.0: Use AVVideoComposition.Configuration instead [#DeprecatedDeclaration]
 882 |         videoComposition.instructions = [instruction]
 883 |         videoComposition.renderSize = renderSize
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1521:28: error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
1519 |         var exportError: Error?
1520 |         do {
1521 |             try await Task.detached(priority: .userInitiated) {
     |                            `- error: passing closure as a 'sending' parameter risks causing data races between main actor-isolated code and concurrent execution of the closure
1522 |                 try await sessionRef.export(to: outputURL, as: config.format.avFileType)
     |                                      `- note: closure captures 'sessionRef' which is accessible to main actor-isolated code
1523 |             }.value
1524 |         } catch {
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1227:35: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1225 |             if let vc = videoComposition {
1226 |                 // Use the raw-settings overload so we can pass our custom video composition for scaling.
1227 |                 exportTask = Task.detached(priority: .userInitiated) {
     |                                   `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1228 |                     try await exporter.export(
     |                                        |- note: closure captures non-Sendable 'compositionAsset'
     |                                        `- note: closure captures non-Sendable 'exportAudioMix'
1229 |                         asset: compositionAsset,
1230 |                         audioOutputSettings: AudioOutputSettings.default.settingsDictionary,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1239:35: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1237 |                 }
1238 |             } else {
1239 |                 exportTask = Task.detached(priority: .userInitiated) {
     |                                   `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
1240 |                     try await exporter.export(
     |                                        |- note: closure captures non-Sendable 'compositionAsset'
     |                                        `- note: closure captures non-Sendable 'exportAudioMix'
1241 |                         asset: compositionAsset,
1242 |                         audio: .default,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1228:40: error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
1226 |                 // Use the raw-settings overload so we can pass our custom video composition for scaling.
1227 |                 exportTask = Task.detached(priority: .userInitiated) {
1228 |                     try await exporter.export(
     |                                        |- error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'compositionAsset' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1229 |                         asset: compositionAsset,
1230 |                         audioOutputSettings: AudioOutputSettings.default.settingsDictionary,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1228:40: error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
1226 |                 // Use the raw-settings overload so we can pass our custom video composition for scaling.
1227 |                 exportTask = Task.detached(priority: .userInitiated) {
1228 |                     try await exporter.export(
     |                                        |- error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'exportAudioMix' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1229 |                         asset: compositionAsset,
1230 |                         audioOutputSettings: AudioOutputSettings.default.settingsDictionary,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1240:40: error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
1238 |             } else {
1239 |                 exportTask = Task.detached(priority: .userInitiated) {
1240 |                     try await exporter.export(
     |                                        |- error: sending 'compositionAsset' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'compositionAsset' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1241 |                         asset: compositionAsset,
1242 |                         audio: .default,
/Users/admin/builder/spi-builder-workspace/Sources/Processing/Preview/PreviewVideoGenerator.swift:1240:40: error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
1238 |             } else {
1239 |                 exportTask = Task.detached(priority: .userInitiated) {
1240 |                     try await exporter.export(
     |                                        |- error: sending 'exportAudioMix' risks causing data races [#SendingRisksDataRace]
     |                                        `- note: task-isolated 'exportAudioMix' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
1241 |                         asset: compositionAsset,
1242 |                         audio: .default,
[#DeprecatedDeclaration]: <https://docs.swift.org/compiler/documentation/diagnostics/deprecated-declaration>
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
[89/106] Compiling MosaicKit OutputTransaction.swift
[90/106] Compiling MosaicKit OverlayProcessor.swift
[91/106] Compiling MosaicKit AppLifecycleMonitor.swift
[92/106] Compiling MosaicKit VideoSource.swift
[93/106] Compiling MosaicKit AnimatedGifGenerator.swift
[94/106] Compiling MosaicKit GenerationJobs.swift
[95/106] Compiling MosaicKit LayoutProcessor.swift
[96/106] Compiling MosaicKit ThumbnailProcessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/ThumbnailProcessor.swift:208:24: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 206 |         nonisolated(unsafe) let generatorRef = generator
 207 |         let (stream, continuation) = AsyncThrowingStream<(index: Int, image: CGImage, timestamp: String), Error>.makeStream()
 208 |         let producer = Task {
     |                        `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 209 |             do {
 210 |                 let duration = try await assetRef.load(.duration).seconds
     |                                                   `- note: closure captures non-Sendable 'assetRef'
 211 |                 let times = calculateExtractionTimes(duration: duration, count: layout.positions.count)
 212 |                 var index = 0
 213 |                 for try await result in generatorRef.images(for: times) {
     |                                                      `- note: closure captures non-Sendable 'generatorRef'
 214 |                     try Task.checkCancellation()
 215 |                     switch result {
/Users/admin/builder/spi-builder-workspace/Sources/Processing/ThumbnailProcessor.swift:155:24: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 153 |         nonisolated(unsafe) let assetRef = asset
 154 |         nonisolated(unsafe) let generatorRef = generator
 155 |         let producer = Task {
     |                        `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 156 |             do {
 157 |                 let duration = try await assetRef.load(.duration).seconds
     |                                                   `- note: closure captures non-Sendable 'assetRef'
 158 |                 let times = calculateExtractionTimes(duration: duration, count: layout.positions.count)
 159 |                 var index = 0
 160 |                 try await withThrowingTaskGroup(of: (Int, CGImage).self) { group in
 161 |                     var pending = 0
 162 |                     for try await result in generatorRef.images(for: times) {
     |                                                          `- note: closure captures non-Sendable 'generatorRef'
 163 |                         try Task.checkCancellation()
 164 |                         guard case .success(_, let image, let actualTime) = result else {
[97/106] Compiling MosaicKit VideoError.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/ThumbnailProcessor.swift:208:24: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 206 |         nonisolated(unsafe) let generatorRef = generator
 207 |         let (stream, continuation) = AsyncThrowingStream<(index: Int, image: CGImage, timestamp: String), Error>.makeStream()
 208 |         let producer = Task {
     |                        `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 209 |             do {
 210 |                 let duration = try await assetRef.load(.duration).seconds
     |                                                   `- note: closure captures non-Sendable 'assetRef'
 211 |                 let times = calculateExtractionTimes(duration: duration, count: layout.positions.count)
 212 |                 var index = 0
 213 |                 for try await result in generatorRef.images(for: times) {
     |                                                      `- note: closure captures non-Sendable 'generatorRef'
 214 |                     try Task.checkCancellation()
 215 |                     switch result {
/Users/admin/builder/spi-builder-workspace/Sources/Processing/ThumbnailProcessor.swift:155:24: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 153 |         nonisolated(unsafe) let assetRef = asset
 154 |         nonisolated(unsafe) let generatorRef = generator
 155 |         let producer = Task {
     |                        `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 156 |             do {
 157 |                 let duration = try await assetRef.load(.duration).seconds
     |                                                   `- note: closure captures non-Sendable 'assetRef'
 158 |                 let times = calculateExtractionTimes(duration: duration, count: layout.positions.count)
 159 |                 var index = 0
 160 |                 try await withThrowingTaskGroup(of: (Int, CGImage).self) { group in
 161 |                     var pending = 0
 162 |                     for try await result in generatorRef.images(for: times) {
     |                                                          `- note: closure captures non-Sendable 'generatorRef'
 163 |                         try Task.checkCancellation()
 164 |                         guard case .success(_, let image, let actualTime) = result else {
[98/106] Compiling MosaicKit VideoMetadataExtractor.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/ThumbnailProcessor.swift:208:24: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 206 |         nonisolated(unsafe) let generatorRef = generator
 207 |         let (stream, continuation) = AsyncThrowingStream<(index: Int, image: CGImage, timestamp: String), Error>.makeStream()
 208 |         let producer = Task {
     |                        `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 209 |             do {
 210 |                 let duration = try await assetRef.load(.duration).seconds
     |                                                   `- note: closure captures non-Sendable 'assetRef'
 211 |                 let times = calculateExtractionTimes(duration: duration, count: layout.positions.count)
 212 |                 var index = 0
 213 |                 for try await result in generatorRef.images(for: times) {
     |                                                      `- note: closure captures non-Sendable 'generatorRef'
 214 |                     try Task.checkCancellation()
 215 |                     switch result {
/Users/admin/builder/spi-builder-workspace/Sources/Processing/ThumbnailProcessor.swift:155:24: error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 153 |         nonisolated(unsafe) let assetRef = asset
 154 |         nonisolated(unsafe) let generatorRef = generator
 155 |         let producer = Task {
     |                        `- error: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure
 156 |             do {
 157 |                 let duration = try await assetRef.load(.duration).seconds
     |                                                   `- note: closure captures non-Sendable 'assetRef'
 158 |                 let times = calculateExtractionTimes(duration: duration, count: layout.positions.count)
 159 |                 var index = 0
 160 |                 try await withThrowingTaskGroup(of: (Int, CGImage).self) { group in
 161 |                     var pending = 0
 162 |                     for try await result in generatorRef.images(for: times) {
     |                                                          `- note: closure captures non-Sendable 'generatorRef'
 163 |                         try Task.checkCancellation()
 164 |                         guard case .success(_, let image, let actualTime) = result else {
[99/106] Compiling MosaicKit PreviewExportDescription.swift
[100/106] Compiling MosaicKit PreviewGenerationProgress.swift
[101/106] Compiling MosaicKit VideoFormat.swift
[102/106] Compiling MosaicKit VideoInput.swift
[103/106] Compiling MosaicKit MetalImageProcessor.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/MosaicGeneratorCoordinator.swift:669:41: error: sending 'describe' risks causing data races [#SendingRisksDataRace]
638 |
639 |         let total = items.count
640 |         return try await withThrowingTaskGroup(of: MosaicGenerationResult.self) { group in
    |                                                                                 `- note: access can happen concurrently
641 |             var results: [MosaicGenerationResult] = []
642 |             var successCount = 0
    :
667 |                 }
668 |
669 |                 let name = describe(item)
    |                                         |- error: sending 'describe' risks causing data races [#SendingRisksDataRace]
    |                                         `- note: 'self'-isolated 'describe' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later actor-isolated uses
670 |                 // Stop dequeuing if cancelAllGenerations() arrived after this batch started
671 |                 if batchEpoch != epoch {
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
[104/106] Compiling MosaicKit MetalMosaicGenerator.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/MosaicGeneratorCoordinator.swift:669:41: error: sending 'describe' risks causing data races [#SendingRisksDataRace]
638 |
639 |         let total = items.count
640 |         return try await withThrowingTaskGroup(of: MosaicGenerationResult.self) { group in
    |                                                                                 `- note: access can happen concurrently
641 |             var results: [MosaicGenerationResult] = []
642 |             var successCount = 0
    :
667 |                 }
668 |
669 |                 let name = describe(item)
    |                                         |- error: sending 'describe' risks causing data races [#SendingRisksDataRace]
    |                                         `- note: 'self'-isolated 'describe' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later actor-isolated uses
670 |                 // Stop dequeuing if cancelAllGenerations() arrived after this batch started
671 |                 if batchEpoch != epoch {
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
[105/106] Compiling MosaicKit MosaicGeneratorCoordinator.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/MosaicGeneratorCoordinator.swift:669:41: error: sending 'describe' risks causing data races [#SendingRisksDataRace]
638 |
639 |         let total = items.count
640 |         return try await withThrowingTaskGroup(of: MosaicGenerationResult.self) { group in
    |                                                                                 `- note: access can happen concurrently
641 |             var results: [MosaicGenerationResult] = []
642 |             var successCount = 0
    :
667 |                 }
668 |
669 |                 let name = describe(item)
    |                                         |- error: sending 'describe' risks causing data races [#SendingRisksDataRace]
    |                                         `- note: 'self'-isolated 'describe' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later actor-isolated uses
670 |                 // Stop dequeuing if cancelAllGenerations() arrived after this batch started
671 |                 if batchEpoch != epoch {
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
[106/106] Compiling MosaicKit MosaicGeneratorProtocol.swift
/Users/admin/builder/spi-builder-workspace/Sources/Processing/MosaicGeneratorCoordinator.swift:669:41: error: sending 'describe' risks causing data races [#SendingRisksDataRace]
638 |
639 |         let total = items.count
640 |         return try await withThrowingTaskGroup(of: MosaicGenerationResult.self) { group in
    |                                                                                 `- note: access can happen concurrently
641 |             var results: [MosaicGenerationResult] = []
642 |             var successCount = 0
    :
667 |                 }
668 |
669 |                 let name = describe(item)
    |                                         |- error: sending 'describe' risks causing data races [#SendingRisksDataRace]
    |                                         `- note: 'self'-isolated 'describe' is captured by a actor-isolated closure. actor-isolated uses in closure may race against later actor-isolated uses
670 |                 // Stop dequeuing if cancelAllGenerations() arrived after this batch started
671 |                 if batchEpoch != epoch {
[#SendingRisksDataRace]: <https://docs.swift.org/compiler/documentation/diagnostics/sending-risks-data-race>
Fetching https://github.com/DenDmitriev/DominantColors.git
Fetching https://github.com/samsonjs/SJSAssetExportSession.git
Fetching https://github.com/awxkee/webp.swift.git
[1/440] Fetching sjsassetexportsession
[2/613] Fetching sjsassetexportsession, webp.swift
[175/1624] Fetching sjsassetexportsession, webp.swift, dominantcolors
Fetched https://github.com/samsonjs/SJSAssetExportSession.git from cache (2.55s)
Fetched https://github.com/awxkee/webp.swift.git from cache (2.56s)
Fetched https://github.com/DenDmitriev/DominantColors.git from cache (2.56s)
Computing version for https://github.com/awxkee/webp.swift.git
Computed https://github.com/awxkee/webp.swift.git at 1.1.2 (5.59s)
Fetching https://github.com/awxkee/libwebp-ios.git
[1/556] Fetching libwebp-ios
Fetched https://github.com/awxkee/libwebp-ios.git from cache (2.11s)
Computing version for https://github.com/samsonjs/SJSAssetExportSession.git
Computed https://github.com/samsonjs/SJSAssetExportSession.git at 0.4.0 (2.69s)
Computing version for https://github.com/awxkee/libwebp-ios.git
Computed https://github.com/awxkee/libwebp-ios.git at 1.1.1 (0.74s)
Computing version for https://github.com/DenDmitriev/DominantColors.git
Computed https://github.com/DenDmitriev/DominantColors.git at 1.2.2 (0.54s)
Creating working copy for https://github.com/awxkee/libwebp-ios.git
Working copy of https://github.com/awxkee/libwebp-ios.git resolved at 1.1.1
Creating working copy for https://github.com/samsonjs/SJSAssetExportSession.git
Working copy of https://github.com/samsonjs/SJSAssetExportSession.git resolved at 0.4.0
Creating working copy for https://github.com/DenDmitriev/DominantColors.git
Working copy of https://github.com/DenDmitriev/DominantColors.git resolved at 1.2.2
Creating working copy for https://github.com/awxkee/webp.swift.git
Working copy of https://github.com/awxkee/webp.swift.git resolved at 1.1.2
BUILD FAILURE 6.2 macosSpm