This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.

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 with Swift 6.0 for macOS (SPM).

Swift 6 data race errors: 6

Build Command

env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete

Build Log

========================================
RunAll
========================================
Builder version: 4.40.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/kaiede/rpilight.git
Reference: main
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/kaiede/rpilight
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
HEAD is now at c546e24 Fix Bootstrap Script for Development Only Use
Cloned https://github.com/kaiede/rpilight.git
Revision (git rev-parse @):
c546e24b00bd0c9bfe9c2f3dc4467f2d388f8b38
SUCCESS checkout https://github.com/kaiede/rpilight.git at main
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.0
Building package at path:  $workDir
https://github.com/kaiede/rpilight.git
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-15.3.0.app xcrun --toolchain org.swift.600202405261a swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete
Building for debugging...
[0/21] Write sources
[6/21] Write RPiLight-entitlement.plist
[9/21] Write sources
[11/21] Write swift-version-6F35C1178C84523A.txt
[12/47] Compiling writer.c
[13/47] Compiling reader.c
[14/47] Compiling parser.c
[15/47] Compiling emitter.c
[16/47] Compiling api.c
[17/47] Compiling scanner.c
[19/63] Compiling Logging MetadataProvider.swift
[20/63] Compiling Logging Locks.swift
[21/63] Compiling Logging LogHandler.swift
[22/63] Emitting module Logging
[23/63] Compiling Logging Logging.swift
[24/63] Compiling SingleBoard Chip_Board.swift
[25/63] Compiling Yams YamlError.swift
[26/64] Compiling Yams shim.swift
[27/64] Compiling Yams Node.Scalar.swift
[28/64] Compiling Yams Node.Sequence.swift
[29/64] Emitting module SingleBoard
[30/64] Compiling SingleBoard Pine_Board.swift
[31/64] Compiling SingleBoard Raspberry_Board.swift
[32/64] Compiling SingleBoard Raspberry_PWM.swift
[33/64] Compiling Yams Mark.swift
[34/64] Compiling Yams Node.Mapping.swift
[35/64] Compiling Ephemeris Matrix.swift
[36/64] Compiling SingleBoard I2C.swift
[37/64] Compiling SingleBoard GPIO.swift
[38/64] Compiling SingleBoard Extensions.swift
[39/64] Compiling SingleBoard SingleBoard.swift
[40/64] Compiling SingleBoard Raspberry_Registers.swift
[41/64] Compiling Moderator SwiftCompat.swift
[42/64] Emitting module Moderator
[43/64] Compiling Moderator Parsers.swift
[44/64] Compiling Moderator Moderator.swift
[45/64] Compiling Ephemeris Solar.swift
[46/64] Compiling Ephemeris Lunar.swift
[47/64] Compiling Ephemeris Date.swift
[48/64] Compiling Ephemeris Body.swift
[49/64] Compiling Ephemeris Coordinates.swift
[50/64] Emitting module Ephemeris
[51/64] Compiling Yams Representer.swift
[52/64] Compiling Yams Resolver.swift
[53/64] Compiling Yams Tag.swift
[54/64] Compiling Yams String+Yams.swift
[55/64] Compiling Yams Node.swift
[56/64] Compiling Yams Parser.swift
[57/68] Compiling Yams Emitter.swift
[58/68] Compiling Yams Encoder.swift
[59/68] Compiling Yams Constructor.swift
[60/68] Compiling Yams Decoder.swift
[61/68] Emitting module Yams
[62/68] Compiling PCA9685 PCA9685.swift
[63/68] Emitting module PCA9685
[64/68] Emitting module MCP4725
[65/68] Compiling MCP4725 MCP4725.swift
[66/77] Compiling LED Types.swift
[67/77] Compiling LED Simulated.swift
[68/77] Compiling LED Utilities.swift
[69/77] Compiling LED LEDModule_Internal.swift
[70/77] Emitting module LED
[71/77] Compiling LED MCP4725.swift
/Users/admin/builder/spi-builder-workspace/.build/checkouts/SingleBoard/Sources/SingleBoard/SingleBoard.swift:31:23: warning: static property 'raspberryPi' is not concurrency-safe because non-'Sendable' type 'any RaspberryCapabilities' (aka 'any HasGPIO & HasI2C & HasPWM') may have shared mutable state; this is an error in the Swift 6 language mode
 29 |
 30 | public struct SingleBoard {
 31 |     public static let raspberryPi: RaspberryCapabilities = { return RaspberryBoard() }()
    |                       |- warning: static property 'raspberryPi' is not concurrency-safe because non-'Sendable' type 'any RaspberryCapabilities' (aka 'any HasGPIO & HasI2C & HasPWM') may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'raspberryPi' 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
 32 |
 33 |     public static let pine64: PineCapabilities = { return Pine64Board() }()
[72/77] Compiling LED PCA9685.swift
/Users/admin/builder/spi-builder-workspace/.build/checkouts/SingleBoard/Sources/SingleBoard/SingleBoard.swift:31:23: warning: static property 'raspberryPi' is not concurrency-safe because non-'Sendable' type 'any RaspberryCapabilities' (aka 'any HasGPIO & HasI2C & HasPWM') may have shared mutable state; this is an error in the Swift 6 language mode
 29 |
 30 | public struct SingleBoard {
 31 |     public static let raspberryPi: RaspberryCapabilities = { return RaspberryBoard() }()
    |                       |- warning: static property 'raspberryPi' is not concurrency-safe because non-'Sendable' type 'any RaspberryCapabilities' (aka 'any HasGPIO & HasI2C & HasPWM') may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'raspberryPi' 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
 32 |
 33 |     public static let pine64: PineCapabilities = { return Pine64Board() }()
[73/77] Compiling LED LEDModule.swift
[74/77] Compiling LED RaspberryPi.swift
/Users/admin/builder/spi-builder-workspace/.build/checkouts/SingleBoard/Sources/SingleBoard/SingleBoard.swift:31:23: warning: static property 'raspberryPi' is not concurrency-safe because non-'Sendable' type 'any RaspberryCapabilities' (aka 'any HasGPIO & HasI2C & HasPWM') may have shared mutable state; this is an error in the Swift 6 language mode
 29 |
 30 | public struct SingleBoard {
 31 |     public static let raspberryPi: RaspberryCapabilities = { return RaspberryBoard() }()
    |                       |- warning: static property 'raspberryPi' is not concurrency-safe because non-'Sendable' type 'any RaspberryCapabilities' (aka 'any HasGPIO & HasI2C & HasPWM') may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'raspberryPi' 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
 32 |
 33 |     public static let pine64: PineCapabilities = { return Pine64Board() }()
[75/89] Compiling Service ServiceDescription.swift
[76/89] Compiling Service SwiftExtensions.swift
[77/89] Compiling Service ScheduleDescription.swift
[78/89] Compiling Service LogUtilities.swift
[79/90] Compiling Service Layer.swift
[80/90] Compiling Service Event.swift
[81/90] Compiling Service ChannelPoint.swift
[82/90] Compiling Service DayTime.swift
[83/90] Compiling Service Behavior.swift
[84/90] Compiling Service ChannelController.swift
[85/90] Emitting module Service
[86/90] Compiling Service LightController.swift
/Users/admin/builder/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 {
/Users/admin/builder/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 {
/Users/admin/builder/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 }
/Users/admin/builder/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()
/Users/admin/builder/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 |     }
/Users/admin/builder/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 |     }
/Users/admin/builder/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 |     }
/Users/admin/builder/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)
/Users/admin/builder/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 |                 }
/Users/admin/builder/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 |                 }
[87/90] Compiling Service Timers.swift
[88/95] Compiling RPiLight ServiceGlue.swift
/Users/admin/builder/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 {}
/Users/admin/builder/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
[89/95] Compiling RPiLight ServiceLogHandler.swift
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:32:24: warning: static property 'stdOut' is not concurrency-safe because it is non-isolated 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 non-isolated 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 |
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:33:24: warning: static property 'stdErr' is not concurrency-safe because it is non-isolated 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 non-isolated 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")
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:35:24: warning: static property 'time' is not concurrency-safe because it is non-isolated 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 non-isolated 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) {
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is non-isolated 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 non-isolated 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 {
/Users/admin/builder/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()
/Users/admin/builder/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? {
[90/95] Compiling RPiLight main.swift
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is non-isolated 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 non-isolated 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 {
[91/95] Compiling RPiLight LightService.swift
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is non-isolated 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 non-isolated 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 {
[92/95] Emitting module RPiLight
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:48:16: warning: static property 'logLevelOverride' is not concurrency-safe because it is non-isolated 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 non-isolated 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 {
/Users/admin/builder/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 {}
/Users/admin/builder/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
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:32:24: warning: static property 'stdOut' is not concurrency-safe because it is non-isolated 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 non-isolated 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 |
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:33:24: warning: static property 'stdErr' is not concurrency-safe because it is non-isolated 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 non-isolated 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")
/Users/admin/builder/spi-builder-workspace/Sources/RPiLight/ServiceLogHandler.swift:35:24: warning: static property 'time' is not concurrency-safe because it is non-isolated 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 non-isolated 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) {
/Users/admin/builder/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()
/Users/admin/builder/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? {
[92/95] Write Objects.LinkFileList
[93/95] Linking RPiLight
[94/95] Applying RPiLight
Build complete! (40.70s)
Fetching https://github.com/Kaiede/SingleBoard.git
Fetching https://github.com/kareman/Moderator.git
Fetching https://github.com/Kaiede/Ephemeris.git
Fetching https://github.com/apple/swift-log.git
Fetching https://github.com/Kaiede/PCA9685.git
Fetching https://github.com/Kaiede/MCP4725.git
Fetching https://github.com/jpsim/Yams.git
[1/70] Fetching pca9685
[29/728] Fetching pca9685, moderator
[95/756] Fetching pca9685, moderator, mcp4725
[123/966] Fetching pca9685, moderator, mcp4725, ephemeris
[501/4319] Fetching pca9685, moderator, mcp4725, ephemeris, swift-log
[602/4596] Fetching pca9685, moderator, mcp4725, ephemeris, swift-log, singleboard
[986/13933] Fetching pca9685, moderator, mcp4725, ephemeris, swift-log, singleboard, yams
Fetched https://github.com/Kaiede/SingleBoard.git from cache (0.90s)
[1192/13656] Fetching pca9685, moderator, mcp4725, ephemeris, swift-log, yams
Fetched https://github.com/Kaiede/MCP4725.git from cache (1.16s)
[4539/13628] Fetching pca9685, moderator, ephemeris, swift-log, yams
Fetched https://github.com/apple/swift-log.git from cache (1.84s)
Fetched https://github.com/Kaiede/Ephemeris.git from cache (1.84s)
Fetched https://github.com/jpsim/Yams.git from cache (1.84s)
Fetched https://github.com/kareman/Moderator.git from cache (1.84s)
Fetched https://github.com/Kaiede/PCA9685.git from cache (1.84s)
Computing version for https://github.com/Kaiede/SingleBoard.git
Computed https://github.com/Kaiede/SingleBoard.git at 1.0.0 (2.60s)
Computing version for https://github.com/Kaiede/MCP4725.git
Computed https://github.com/Kaiede/MCP4725.git at 0.1.0 (0.66s)
Computing version for https://github.com/Kaiede/PCA9685.git
Computed https://github.com/Kaiede/PCA9685.git at 3.0.0 (0.65s)
Computing version for https://github.com/Kaiede/Ephemeris.git
Computed https://github.com/Kaiede/Ephemeris.git at 1.0.2 (0.64s)
Computing version for https://github.com/jpsim/Yams.git
Computed https://github.com/jpsim/Yams.git at 2.0.0 (0.67s)
Computing version for https://github.com/kareman/Moderator.git
Computed https://github.com/kareman/Moderator.git at 0.5.1 (0.65s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.5.4 (0.64s)
Creating working copy for https://github.com/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.5.4
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/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/MCP4725.git
Working copy of https://github.com/Kaiede/MCP4725.git resolved at 0.1.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/Kaiede/SingleBoard.git
Working copy of https://github.com/Kaiede/SingleBoard.git resolved at 1.0.0
Creating working copy for https://github.com/kareman/Moderator.git
Working copy of https://github.com/kareman/Moderator.git resolved at 0.5.1
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" : "/Users/admin/builder/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"
}
Done.
This is a staging environment. For live and up-to-date package information, visit swiftpackageindex.com.