The Swift Package Index logo.Swift Package Index

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

Build Information

Successful build of RPiLight, reference 1.1.1 (3d5d60), with Swift 6.0 for Linux on 2 Nov 2024 04:05:47 UTC.

Swift 6 data race errors: 6

Build Command

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

Build Log

========================================
RunAll
========================================
Builder version: 4.56.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/kaiede/rpilight.git
Reference: 1.1.1
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/kaiede/rpilight
 * tag               1.1.1      -> FETCH_HEAD
HEAD is now at 3d5d60c Update Swift CI Versions to 5.1.5 and 5.2
Cloned https://github.com/kaiede/rpilight.git
Revision (git rev-parse @):
3d5d60cf7817d8311469b061a356c38989ab1739
SUCCESS checkout https://github.com/kaiede/rpilight.git at 1.1.1
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.0
Building package at path:  $PWD
https://github.com/kaiede/rpilight.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.0-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete 2>&1
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:47d26c99ca4f1ac0a332c85fd5b13ff4390e72115219984a57a68fe9d1063a05
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Fetching https://github.com/Kaiede/Ephemeris.git
Fetching https://github.com/Kaiede/PCA9685.git
Fetching https://github.com/Kaiede/MCP4725.git
Fetching https://github.com/Kaiede/SingleBoard.git
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/jpsim/Yams.git
[1/70] Fetching pca9685
[71/98] Fetching pca9685, mcp4725
[99/308] Fetching pca9685, mcp4725, ephemeris
[301/585] Fetching pca9685, mcp4725, ephemeris, singleboard
Fetched https://github.com/Kaiede/SingleBoard.git from cache (0.28s)
Fetching https://github.com/kareman/Moderator.git
[1/9902] Fetching yams
[2/13562] Fetching yams, swift-log
[4850/14220] Fetching yams, swift-log, moderator
Fetched https://github.com/Kaiede/PCA9685.git from cache (0.57s)
Fetched https://github.com/Kaiede/MCP4725.git from cache (1.90s)
Fetched https://github.com/Kaiede/Ephemeris.git from cache (1.90s)
Fetched https://github.com/apple/swift-log.git from cache (1.91s)
Fetched https://github.com/jpsim/Yams.git from cache (1.98s)
Fetched https://github.com/kareman/Moderator.git from cache (1.76s)
Computing version for https://github.com/Kaiede/SingleBoard.git
Computed https://github.com/Kaiede/SingleBoard.git at 1.0.0 (4.14s)
Computing version for https://github.com/Kaiede/MCP4725.git
Computed https://github.com/Kaiede/MCP4725.git at 0.1.0 (0.95s)
Computing version for https://github.com/Kaiede/PCA9685.git
Computed https://github.com/Kaiede/PCA9685.git at 3.0.0 (0.98s)
Computing version for https://github.com/Kaiede/Ephemeris.git
Computed https://github.com/Kaiede/Ephemeris.git at 1.0.2 (1.00s)
Computing version for https://github.com/jpsim/Yams.git
Computed https://github.com/jpsim/Yams.git at 2.0.0 (0.86s)
Computing version for https://github.com/kareman/Moderator.git
Computed https://github.com/kareman/Moderator.git at 0.5.1 (1.10s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.1 (0.83s)
Creating working copy for https://github.com/Kaiede/MCP4725.git
Working copy of https://github.com/Kaiede/MCP4725.git resolved at 0.1.0
Creating working copy for https://github.com/jpsim/Yams.git
Working copy of https://github.com/jpsim/Yams.git resolved at 2.0.0
Creating working copy for https://github.com/Kaiede/PCA9685.git
Working copy of https://github.com/Kaiede/PCA9685.git resolved at 3.0.0
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.1
Creating working copy for https://github.com/kareman/Moderator.git
Working copy of https://github.com/kareman/Moderator.git resolved at 0.5.1
Creating working copy for https://github.com/Kaiede/Ephemeris.git
Working copy of https://github.com/Kaiede/Ephemeris.git resolved at 1.0.2
Creating working copy for https://github.com/Kaiede/SingleBoard.git
Working copy of https://github.com/Kaiede/SingleBoard.git resolved at 1.0.0
Building for debugging...
[0/29] Write sources
[10/29] Compiling writer.c
[11/29] Compiling reader.c
[12/29] Compiling parser.c
[13/29] Compiling api.c
[14/29] Compiling emitter.c
[15/29] Write swift-version-24593BA9C3E375BF.txt
[16/29] Compiling scanner.c
[18/69] Emitting module SingleBoard
[19/70] Compiling Yams Node.Scalar.swift
[20/70] Compiling Yams Node.Sequence.swift
[21/72] Compiling Yams Mark.swift
[22/72] Compiling Yams Node.Mapping.swift
[23/72] Compiling Moderator Parsers.swift
[24/72] Compiling Moderator SwiftCompat.swift
[25/72] Compiling Yams YamlError.swift
[26/72] Compiling Yams shim.swift
[27/72] Compiling Logging MetadataProvider.swift
[28/72] Compiling SingleBoard Raspberry_Registers.swift
[29/72] Compiling Logging Locks.swift
[30/72] Compiling Logging LogHandler.swift
[31/72] Compiling Logging Logging.swift
[32/72] Emitting module Logging
[33/73] Wrapping AST for Logging for debugging
[35/73] Emitting module Moderator
[36/73] Compiling Moderator Moderator.swift
[38/74] Emitting module Ephemeris
[39/74] Compiling Ephemeris Body.swift
[40/74] Compiling Ephemeris Coordinates.swift
[41/74] Compiling SingleBoard Raspberry_PWM.swift
[42/74] Compiling Yams String+Yams.swift
[43/74] Compiling Yams Tag.swift
[43/74] Wrapping AST for Moderator for debugging
[45/74] Compiling Yams Emitter.swift
[46/74] Compiling Yams Encoder.swift
[47/74] Compiling SingleBoard SingleBoard.swift
[48/74] Compiling Ephemeris Solar.swift
[49/74] Compiling Ephemeris Matrix.swift
[50/74] Compiling Yams Constructor.swift
[51/74] Compiling Yams Decoder.swift
[52/74] Compiling SingleBoard Raspberry_Board.swift
[53/74] Compiling SingleBoard GPIO.swift
[54/74] Compiling SingleBoard I2C.swift
[55/74] Compiling SingleBoard Extensions.swift
[56/75] Emitting module Yams
[60/75] Compiling Ephemeris Lunar.swift
[61/75] Compiling Yams Node.swift
[62/75] Compiling Yams Parser.swift
[63/75] Compiling Ephemeris Date.swift
[64/76] Compiling Yams Representer.swift
[65/76] Compiling Yams Resolver.swift
[66/77] Wrapping AST for SingleBoard for debugging
[68/81] Wrapping AST for Ephemeris for debugging
[69/81] Wrapping AST for Yams for debugging
[71/81] Compiling PCA9685 PCA9685.swift
[72/81] Emitting module PCA9685
[74/82] Compiling MCP4725 MCP4725.swift
[75/82] Emitting module MCP4725
[76/83] Wrapping AST for PCA9685 for debugging
[77/83] Wrapping AST for MCP4725 for debugging
[79/91] Compiling LED MCP4725.swift
[80/91] Compiling LED RaspberryPi.swift
[81/91] Compiling LED PCA9685.swift
[82/92] Compiling LED LEDModule_Internal.swift
[83/92] Emitting module LED
[84/92] Compiling LED LEDModule.swift
[85/92] Compiling LED Utilities.swift
[86/92] Compiling LED Simulated.swift
[87/92] Compiling LED Types.swift
[88/93] Wrapping AST for LED for debugging
[90/105] Compiling Service SwiftExtensions.swift
[91/106] Compiling Service ServiceDescription.swift
[92/106] Compiling Service ScheduleDescription.swift
[93/106] Compiling Service Event.swift
[94/106] Compiling Service Layer.swift
[95/106] Compiling Service ChannelPoint.swift
[96/106] Compiling Service DayTime.swift
[97/106] Compiling Service Behavior.swift
[98/106] Compiling Service ChannelController.swift
[99/106] Compiling Service LightController.swift
/host/spi-builder-workspace/Sources/Service/LightController.swift:181:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
179 |     public func setEvent(controller: EventController) {
180 |         self.queue.async {
181 |             self.eventControllers[controller.token] = controller
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
182 |
183 |             if self.isRunning {
/host/spi-builder-workspace/Sources/Service/LightController.swift:181:35: warning: capture of 'controller' with non-sendable type 'any EventController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
179 |     public func setEvent(controller: EventController) {
180 |         self.queue.async {
181 |             self.eventControllers[controller.token] = controller
    |                                   `- warning: capture of 'controller' with non-sendable type 'any EventController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
182 |
183 |             if self.isRunning {
/host/spi-builder-workspace/Sources/Service/Event.swift:36:17: note: protocol 'EventController' does not conform to the 'Sendable' protocol
 34 | }
 35 |
 36 | public protocol EventController {
    |                 `- note: protocol 'EventController' does not conform to the 'Sendable' protocol
 37 |     var time: DayTime { get }
 38 |     var token: EventId { get }
/host/spi-builder-workspace/Sources/Service/LightController.swift:196:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
194 |         self.queue.async {
195 |             log.info("Starting Light Controller")
196 |             self.isRunning = true
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
197 |             self.isRefreshOneShot = true
198 |             self.fireRefresh()
/host/spi-builder-workspace/Sources/Service/LightController.swift:207:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
205 |     public func setStopHandler(_ closure: StopClosure?) {
206 |         self.queue.async {
207 |             self.stopClosure = closure
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
208 |         }
209 |     }
/host/spi-builder-workspace/Sources/Service/LightController.swift:207:32: warning: capture of 'closure' with non-sendable type 'StopClosure?' (aka 'Optional<(LightController) -> ()>') in a `@Sendable` closure; this is an error in the Swift 6 language mode
205 |     public func setStopHandler(_ closure: StopClosure?) {
206 |         self.queue.async {
207 |             self.stopClosure = closure
    |                                |- warning: capture of 'closure' with non-sendable type 'StopClosure?' (aka 'Optional<(LightController) -> ()>') in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
208 |         }
209 |     }
/host/spi-builder-workspace/Sources/Service/LightController.swift:213:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
211 |     public func stop() {
212 |         self.queue.async {
213 |             self.stopInternal()
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
214 |         }
215 |     }
/host/spi-builder-workspace/Sources/Service/LightController.swift:219:16: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
217 |     public func invalidateRefreshTimer() {
218 |         self.queue.async {
219 |             if self.isRunning {
    |                `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
220 |                 let now = Date()
221 |                 self.scheduleRefresh(forDate: now)
/host/spi-builder-workspace/Sources/Service/LightController.swift:279:37: warning: capture of 'self' with non-sendable type 'LightController?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
277 |             self.stopEventInternal()
278 |             DispatchQueue.main.async { [weak self] in
279 |                 if let controller = self {
    |                                     `- warning: capture of 'self' with non-sendable type 'LightController?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
280 |                     controller.stopClosure?(controller)
281 |                 }
/host/spi-builder-workspace/Sources/Service/LightController.swift:279:37: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
277 |             self.stopEventInternal()
278 |             DispatchQueue.main.async { [weak self] in
279 |                 if let controller = self {
    |                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
280 |                     controller.stopClosure?(controller)
281 |                 }
[100/106] Compiling Service LogUtilities.swift
/host/spi-builder-workspace/Sources/Service/LightController.swift:181:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
179 |     public func setEvent(controller: EventController) {
180 |         self.queue.async {
181 |             self.eventControllers[controller.token] = controller
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
182 |
183 |             if self.isRunning {
/host/spi-builder-workspace/Sources/Service/LightController.swift:181:35: warning: capture of 'controller' with non-sendable type 'any EventController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
179 |     public func setEvent(controller: EventController) {
180 |         self.queue.async {
181 |             self.eventControllers[controller.token] = controller
    |                                   `- warning: capture of 'controller' with non-sendable type 'any EventController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
182 |
183 |             if self.isRunning {
/host/spi-builder-workspace/Sources/Service/Event.swift:36:17: note: protocol 'EventController' does not conform to the 'Sendable' protocol
 34 | }
 35 |
 36 | public protocol EventController {
    |                 `- note: protocol 'EventController' does not conform to the 'Sendable' protocol
 37 |     var time: DayTime { get }
 38 |     var token: EventId { get }
/host/spi-builder-workspace/Sources/Service/LightController.swift:196:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
194 |         self.queue.async {
195 |             log.info("Starting Light Controller")
196 |             self.isRunning = true
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
197 |             self.isRefreshOneShot = true
198 |             self.fireRefresh()
/host/spi-builder-workspace/Sources/Service/LightController.swift:207:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
205 |     public func setStopHandler(_ closure: StopClosure?) {
206 |         self.queue.async {
207 |             self.stopClosure = closure
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
208 |         }
209 |     }
/host/spi-builder-workspace/Sources/Service/LightController.swift:207:32: warning: capture of 'closure' with non-sendable type 'StopClosure?' (aka 'Optional<(LightController) -> ()>') in a `@Sendable` closure; this is an error in the Swift 6 language mode
205 |     public func setStopHandler(_ closure: StopClosure?) {
206 |         self.queue.async {
207 |             self.stopClosure = closure
    |                                |- warning: capture of 'closure' with non-sendable type 'StopClosure?' (aka 'Optional<(LightController) -> ()>') in a `@Sendable` closure; this is an error in the Swift 6 language mode
    |                                `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
208 |         }
209 |     }
/host/spi-builder-workspace/Sources/Service/LightController.swift:213:13: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
211 |     public func stop() {
212 |         self.queue.async {
213 |             self.stopInternal()
    |             `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
214 |         }
215 |     }
/host/spi-builder-workspace/Sources/Service/LightController.swift:219:16: warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
217 |     public func invalidateRefreshTimer() {
218 |         self.queue.async {
219 |             if self.isRunning {
    |                `- warning: capture of 'self' with non-sendable type 'LightController' in a `@Sendable` closure; this is an error in the Swift 6 language mode
220 |                 let now = Date()
221 |                 self.scheduleRefresh(forDate: now)
/host/spi-builder-workspace/Sources/Service/LightController.swift:279:37: warning: capture of 'self' with non-sendable type 'LightController?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 73 | // The Light Controller
 74 | //
 75 | public class LightController: BehaviorController {
    |              `- note: class 'LightController' does not conform to the 'Sendable' protocol
 76 |     typealias LightControllerTimer = Timer<TimerID>
 77 |     enum TimerID {
    :
277 |             self.stopEventInternal()
278 |             DispatchQueue.main.async { [weak self] in
279 |                 if let controller = self {
    |                                     `- warning: capture of 'self' with non-sendable type 'LightController?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
280 |                     controller.stopClosure?(controller)
281 |                 }
/host/spi-builder-workspace/Sources/Service/LightController.swift:279:37: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
277 |             self.stopEventInternal()
278 |             DispatchQueue.main.async { [weak self] in
279 |                 if let controller = self {
    |                                     |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
    |                                     `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
280 |                     controller.stopClosure?(controller)
281 |                 }
[101/106] Emitting module Service
[102/106] Compiling Service Timers.swift
[103/107] Wrapping AST for Service for debugging
[105/112] Compiling RPiLight main.swift
/host/spi-builder-workspace/Sources/RPiLight/main.swift:55:43: warning: converting non-sendable function value to '@Sendable (String) -> any LogHandler' may introduce data races
53 |
54 | // Logger Object
55 | LoggingSystem.bootstrap(ServiceLogHandler.init)
   |                                           `- warning: converting non-sendable function value to '@Sendable (String) -> any LogHandler' may introduce data races
56 | let log = Logger(label: "rpilight")
57 |
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
46 |     }
47 |
48 |     static var logLevelOverride: Logger.Level?
   |                |- warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'logLevelOverride' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'logLevelOverride' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
49 |     private var handlerLogLevel: Logger.Level = .info
50 |     var logLevel: Logger.Level {
[106/112] Compiling RPiLight ServiceLogHandler.swift
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:32:24: warning: static property 'stdOut' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |
31 | class ServiceLogHandler: LogHandler {
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
   |                        |- warning: static property 'stdOut' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'stdOut' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'stdOut' with '@MainActor' if property should only be accessed from the main actor
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
34 |
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:33:24: warning: static property 'stdErr' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | class ServiceLogHandler: LogHandler {
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
   |                        |- warning: static property 'stdErr' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'stdErr' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'stdErr' with '@MainActor' if property should only be accessed from the main actor
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 |
35 |     private static var time = DateFormatter(currentWithFormat: "HH:mm:ss.SSS")
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:35:24: warning: static property 'time' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
34 |
35 |     private static var time = DateFormatter(currentWithFormat: "HH:mm:ss.SSS")
   |                        |- warning: static property 'time' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'time' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'time' with '@MainActor' if property should only be accessed from the main actor
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |
37 |     init(label: String) {
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
46 |     }
47 |
48 |     static var logLevelOverride: Logger.Level?
   |                |- warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'logLevelOverride' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'logLevelOverride' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
49 |     private var handlerLogLevel: Logger.Level = .info
50 |     var logLevel: Logger.Level {
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:31:7: warning: non-final class 'ServiceLogHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
29 | // swiftlint:disable function_parameter_count
30 |
31 | class ServiceLogHandler: LogHandler {
   |       `- warning: non-final class 'ServiceLogHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:41:17: warning: stored property 'label' of 'Sendable'-conforming class 'ServiceLogHandler' is mutable; this is an error in the Swift 6 language mode
39 |     }
40 |
41 |     private var label: String
   |                 `- warning: stored property 'label' of 'Sendable'-conforming class 'ServiceLogHandler' is mutable; this is an error in the Swift 6 language mode
42 |     var metadata: Logger.Metadata = [:]
43 |     subscript(metadataKey key: String) -> Logger.Metadata.Value? {
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:31:7: warning: deprecated default implementation is used to satisfy instance method 'log(level:message:metadata:source:file:function:line:)' required by protocol 'LogHandler': You should implement this method instead of using the default implementation
29 | // swiftlint:disable function_parameter_count
30 |
31 | class ServiceLogHandler: LogHandler {
   |       `- warning: deprecated default implementation is used to satisfy instance method 'log(level:message:metadata:source:file:function:line:)' required by protocol 'LogHandler': You should implement this method instead of using the default implementation
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
/host/spi-builder-workspace/.build/checkouts/swift-log/Sources/Logging/LogHandler.swift:191:17: note: 'log(level:message:metadata:source:file:function:line:)' declared here
133 |     ///     - function: The function the log line was emitted from.
134 |     ///     - line: The line the log message was emitted from.
135 |     func log(level: Logger.Level,
    |          `- note: requirement 'log(level:message:metadata:source:file:function:line:)' declared here
136 |              message: Logger.Message,
137 |              metadata: Logger.Metadata?,
    :
189 | extension LogHandler {
190 |     @available(*, deprecated, message: "You should implement this method instead of using the default implementation")
191 |     public func log(level: Logger.Level,
    |                 `- note: 'log(level:message:metadata:source:file:function:line:)' declared here
192 |                     message: Logger.Message,
193 |                     metadata: Logger.Metadata?,
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:82:66: warning: reference to var 'stderr' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
80 |
81 | private struct StderrOutputStream: TextOutputStream {
82 |     public mutating func write(_ string: String) { fputs(string, stderr) }
   |                                                                  `- warning: reference to var 'stderr' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
83 | }
84 |
SwiftGlibc.stderr:1:12: note: var declared here
1 | public var stderr: UnsafeMutablePointer<FILE>!
  |            `- note: var declared here
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:86:66: warning: reference to var 'stdout' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
84 |
85 | private struct StdoutOutputStream: TextOutputStream {
86 |     public mutating func write(_ string: String) { fputs(string, stdout) }
   |                                                                  `- warning: reference to var 'stdout' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
87 | }
88 |
SwiftGlibc.stdout:1:12: note: var declared here
1 | public var stdout: UnsafeMutablePointer<FILE>!
  |            `- note: var declared here
[107/112] Compiling RPiLight ServiceGlue.swift
/host/spi-builder-workspace/Sources/RPiLight/ServiceGlue.swift:54:1: warning: extension declares a conformance of imported type 'LEDChannel' to imported protocol 'Channel'; this will not behave correctly if the owners of 'LED' introduce this conformance in the future
52 | }
53 |
54 | extension LEDChannel: Channel {}
   | |- warning: extension declares a conformance of imported type 'LEDChannel' to imported protocol 'Channel'; this will not behave correctly if the owners of 'LED' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
55 |
56 | extension ServiceControllerDescription: LEDModuleConfig {}
/host/spi-builder-workspace/Sources/RPiLight/ServiceGlue.swift:56:1: warning: extension declares a conformance of imported type 'ServiceControllerDescription' to imported protocol 'LEDModuleConfig'; this will not behave correctly if the owners of 'Service' introduce this conformance in the future
54 | extension LEDChannel: Channel {}
55 |
56 | extension ServiceControllerDescription: LEDModuleConfig {}
   | |- warning: extension declares a conformance of imported type 'ServiceControllerDescription' to imported protocol 'LEDModuleConfig'; this will not behave correctly if the owners of 'Service' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
57 |
58 | // MARK: Casting Support between Logging and Service types
[108/112] Emitting module RPiLight
/host/spi-builder-workspace/Sources/RPiLight/main.swift:55:43: warning: converting non-sendable function value to '@Sendable (String) -> any LogHandler' may introduce data races
53 |
54 | // Logger Object
55 | LoggingSystem.bootstrap(ServiceLogHandler.init)
   |                                           `- warning: converting non-sendable function value to '@Sendable (String) -> any LogHandler' may introduce data races
56 | let log = Logger(label: "rpilight")
57 |
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
46 |     }
47 |
48 |     static var logLevelOverride: Logger.Level?
   |                |- warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'logLevelOverride' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'logLevelOverride' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
49 |     private var handlerLogLevel: Logger.Level = .info
50 |     var logLevel: Logger.Level {
/host/spi-builder-workspace/Sources/RPiLight/ServiceGlue.swift:54:1: warning: extension declares a conformance of imported type 'LEDChannel' to imported protocol 'Channel'; this will not behave correctly if the owners of 'LED' introduce this conformance in the future
52 | }
53 |
54 | extension LEDChannel: Channel {}
   | |- warning: extension declares a conformance of imported type 'LEDChannel' to imported protocol 'Channel'; this will not behave correctly if the owners of 'LED' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
55 |
56 | extension ServiceControllerDescription: LEDModuleConfig {}
/host/spi-builder-workspace/Sources/RPiLight/ServiceGlue.swift:56:1: warning: extension declares a conformance of imported type 'ServiceControllerDescription' to imported protocol 'LEDModuleConfig'; this will not behave correctly if the owners of 'Service' introduce this conformance in the future
54 | extension LEDChannel: Channel {}
55 |
56 | extension ServiceControllerDescription: LEDModuleConfig {}
   | |- warning: extension declares a conformance of imported type 'ServiceControllerDescription' to imported protocol 'LEDModuleConfig'; this will not behave correctly if the owners of 'Service' introduce this conformance in the future
   | `- note: add '@retroactive' to silence this warning
57 |
58 | // MARK: Casting Support between Logging and Service types
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:32:24: warning: static property 'stdOut' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
30 |
31 | class ServiceLogHandler: LogHandler {
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
   |                        |- warning: static property 'stdOut' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'stdOut' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'stdOut' with '@MainActor' if property should only be accessed from the main actor
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
34 |
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:33:24: warning: static property 'stdErr' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
31 | class ServiceLogHandler: LogHandler {
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
   |                        |- warning: static property 'stdErr' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'stdErr' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'stdErr' with '@MainActor' if property should only be accessed from the main actor
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
34 |
35 |     private static var time = DateFormatter(currentWithFormat: "HH:mm:ss.SSS")
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:35:24: warning: static property 'time' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
34 |
35 |     private static var time = DateFormatter(currentWithFormat: "HH:mm:ss.SSS")
   |                        |- warning: static property 'time' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                        |- note: convert 'time' to a 'let' constant to make 'Sendable' shared state immutable
   |                        |- note: annotate 'time' with '@MainActor' if property should only be accessed from the main actor
   |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
36 |
37 |     init(label: String) {
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:31:7: warning: non-final class 'ServiceLogHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
29 | // swiftlint:disable function_parameter_count
30 |
31 | class ServiceLogHandler: LogHandler {
   |       `- warning: non-final class 'ServiceLogHandler' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:41:17: warning: stored property 'label' of 'Sendable'-conforming class 'ServiceLogHandler' is mutable; this is an error in the Swift 6 language mode
39 |     }
40 |
41 |     private var label: String
   |                 `- warning: stored property 'label' of 'Sendable'-conforming class 'ServiceLogHandler' is mutable; this is an error in the Swift 6 language mode
42 |     var metadata: Logger.Metadata = [:]
43 |     subscript(metadataKey key: String) -> Logger.Metadata.Value? {
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:31:7: warning: deprecated default implementation is used to satisfy instance method 'log(level:message:metadata:source:file:function:line:)' required by protocol 'LogHandler': You should implement this method instead of using the default implementation
29 | // swiftlint:disable function_parameter_count
30 |
31 | class ServiceLogHandler: LogHandler {
   |       `- warning: deprecated default implementation is used to satisfy instance method 'log(level:message:metadata:source:file:function:line:)' required by protocol 'LogHandler': You should implement this method instead of using the default implementation
32 |     private static var stdOut: StdoutOutputStream = StdoutOutputStream()
33 |     private static var stdErr: StderrOutputStream = StderrOutputStream()
/host/spi-builder-workspace/.build/checkouts/swift-log/Sources/Logging/LogHandler.swift:191:17: note: 'log(level:message:metadata:source:file:function:line:)' declared here
133 |     ///     - function: The function the log line was emitted from.
134 |     ///     - line: The line the log message was emitted from.
135 |     func log(level: Logger.Level,
    |          `- note: requirement 'log(level:message:metadata:source:file:function:line:)' declared here
136 |              message: Logger.Message,
137 |              metadata: Logger.Metadata?,
    :
189 | extension LogHandler {
190 |     @available(*, deprecated, message: "You should implement this method instead of using the default implementation")
191 |     public func log(level: Logger.Level,
    |                 `- note: 'log(level:message:metadata:source:file:function:line:)' declared here
192 |                     message: Logger.Message,
193 |                     metadata: Logger.Metadata?,
[109/112] Compiling RPiLight LightService.swift
/host/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
46 |     }
47 |
48 |     static var logLevelOverride: Logger.Level?
   |                |- warning: static property 'logLevelOverride' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
   |                |- note: convert 'logLevelOverride' to a 'let' constant to make 'Sendable' shared state immutable
   |                |- note: annotate 'logLevelOverride' with '@MainActor' if property should only be accessed from the main actor
   |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
49 |     private var handlerLogLevel: Logger.Level = .info
50 |     var logLevel: Logger.Level {
[110/113] Wrapping AST for RPiLight for debugging
[111/113] Write Objects.LinkFileList
[112/113] Linking RPiLight
Build complete! (62.19s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "moderator",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.5.1",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/kareman/Moderator.git"
    },
    {
      "identity" : "yams",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.0.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/jpsim/Yams.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "ephemeris",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.2",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kaiede/Ephemeris.git"
    },
    {
      "identity" : "pca9685",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "3.0.0",
            "upper_bound" : "4.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kaiede/PCA9685.git"
    },
    {
      "identity" : "mcp4725",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.1.0",
            "upper_bound" : "1.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kaiede/MCP4725.git"
    },
    {
      "identity" : "singleboard",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Kaiede/SingleBoard.git"
    }
  ],
  "manifest_display_name" : "RPiLight",
  "name" : "RPiLight",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "RPiLight",
      "targets" : [
        "RPiLight"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "ServiceTests",
      "module_type" : "SwiftTarget",
      "name" : "ServiceTests",
      "path" : "Tests/ServiceTests",
      "sources" : [
        "BehaviorTests.swift",
        "ChannelControllerTests.swift",
        "DayTimeTests.swift",
        "EventTests.swift",
        "LayerTests.swift",
        "LightControllerTests.swift",
        "ScheduleDescriptionTests.swift",
        "ServiceDescriptionTests.swift",
        "SwiftExtensionsTests.swift"
      ],
      "target_dependencies" : [
        "Service"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Service",
      "module_type" : "SwiftTarget",
      "name" : "Service",
      "path" : "Sources/Service",
      "product_dependencies" : [
        "Logging",
        "Ephemeris",
        "Yams"
      ],
      "product_memberships" : [
        "RPiLight"
      ],
      "sources" : [
        "Behavior.swift",
        "ChannelController.swift",
        "ChannelPoint.swift",
        "DayTime.swift",
        "Event.swift",
        "Layer.swift",
        "LightController.swift",
        "LogUtilities.swift",
        "ScheduleDescription.swift",
        "ServiceDescription.swift",
        "SwiftExtensions.swift",
        "Timers.swift"
      ],
      "target_dependencies" : [
        "LED"
      ],
      "type" : "library"
    },
    {
      "c99name" : "RPiLight",
      "module_type" : "SwiftTarget",
      "name" : "RPiLight",
      "path" : "Sources/RPiLight",
      "product_dependencies" : [
        "Moderator"
      ],
      "product_memberships" : [
        "RPiLight"
      ],
      "sources" : [
        "LightService.swift",
        "ServiceGlue.swift",
        "ServiceLogHandler.swift",
        "main.swift"
      ],
      "target_dependencies" : [
        "Service"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "LEDTests",
      "module_type" : "SwiftTarget",
      "name" : "LEDTests",
      "path" : "Tests/LEDTests",
      "sources" : [
        "ChannelTests.swift",
        "ModuleTests.swift",
        "TypeTests.swift"
      ],
      "target_dependencies" : [
        "LED"
      ],
      "type" : "test"
    },
    {
      "c99name" : "LED",
      "module_type" : "SwiftTarget",
      "name" : "LED",
      "path" : "Sources/LED",
      "product_dependencies" : [
        "Logging",
        "MCP4725",
        "PCA9685",
        "SingleBoard"
      ],
      "product_memberships" : [
        "RPiLight"
      ],
      "sources" : [
        "LEDModule.swift",
        "LEDModule_Internal.swift",
        "MCP4725.swift",
        "PCA9685.swift",
        "RaspberryPi.swift",
        "Simulated.swift",
        "Types.swift",
        "Utilities.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.0"
}
basic-6.0-latest: Pulling from finestructure/spi-images
Digest: sha256:47d26c99ca4f1ac0a332c85fd5b13ff4390e72115219984a57a68fe9d1063a05
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.0-latest
Done.