Build Information
Successful build of RPiLight, reference main (c546e2
), with Swift 6.1 for Linux on 26 Apr 2025 18:56:15 UTC.
Swift 6 data race errors: 6
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4606859-2":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
Build Log
========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/kaiede/rpilight.git
Reference: main
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
* 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: linux
Swift version: 6.1
Building package at path: $PWD
https://github.com/kaiede/rpilight.git
https://github.com/kaiede/rpilight.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
"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"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-2":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures 2>&1
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
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/Kaiede/Ephemeris.git
Fetching https://github.com/Kaiede/SingleBoard.git
Fetching https://github.com/jpsim/Yams.git
[1/70] Fetching pca9685
[71/98] Fetching pca9685, mcp4725
[99/3934] Fetching pca9685, mcp4725, swift-log
[2439/4144] Fetching pca9685, mcp4725, swift-log, ephemeris
[4145/4421] Fetching pca9685, mcp4725, swift-log, ephemeris, singleboard
[4422/14710] Fetching pca9685, mcp4725, swift-log, ephemeris, singleboard, yams
Fetched https://github.com/Kaiede/PCA9685.git from cache (0.37s)
[4660/14640] Fetching mcp4725, swift-log, ephemeris, singleboard, yams
Fetching https://github.com/kareman/Moderator.git
Fetched https://github.com/Kaiede/MCP4725.git from cache (0.38s)
[4838/14612] Fetching swift-log, ephemeris, singleboard, yams
Fetched https://github.com/apple/swift-log.git from cache (0.40s)
[1105/10776] Fetching ephemeris, singleboard, yams
[6250/11434] Fetching ephemeris, singleboard, yams, moderator
Fetched https://github.com/Kaiede/SingleBoard.git from cache (1.53s)
Fetched https://github.com/Kaiede/Ephemeris.git from cache (1.53s)
Fetched https://github.com/jpsim/Yams.git from cache (1.56s)
Fetched https://github.com/kareman/Moderator.git from cache (1.53s)
Computing version for https://github.com/Kaiede/SingleBoard.git
Computed https://github.com/Kaiede/SingleBoard.git at 1.0.0 (4.20s)
Computing version for https://github.com/Kaiede/MCP4725.git
Computed https://github.com/Kaiede/MCP4725.git at 0.1.0 (0.59s)
Computing version for https://github.com/Kaiede/PCA9685.git
Computed https://github.com/Kaiede/PCA9685.git at 3.0.0 (0.56s)
Computing version for https://github.com/Kaiede/Ephemeris.git
Computed https://github.com/Kaiede/Ephemeris.git at 1.0.2 (0.57s)
Computing version for https://github.com/jpsim/Yams.git
Computed https://github.com/jpsim/Yams.git at 2.0.0 (0.59s)
Computing version for https://github.com/kareman/Moderator.git
Computed https://github.com/kareman/Moderator.git at 0.5.1 (0.57s)
Computing version for https://github.com/apple/swift-log.git
Computed https://github.com/apple/swift-log.git at 1.6.3 (0.53s)
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/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/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/PCA9685.git
Working copy of https://github.com/Kaiede/PCA9685.git resolved at 3.0.0
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/apple/swift-log.git
Working copy of https://github.com/apple/swift-log.git resolved at 1.6.3
Building for debugging...
[0/29] Write sources
[10/29] Compiling writer.c
[11/29] Compiling reader.c
[12/29] Compiling api.c
[13/29] Compiling emitter.c
[14/29] Compiling parser.c
[15/29] Write swift-version-24593BA9C3E375BF.txt
[16/29] Compiling scanner.c
[18/69] Emitting module Logging
[19/69] Compiling Moderator SwiftCompat.swift
[20/69] Emitting module SingleBoard
[21/70] Compiling Moderator Parsers.swift
[22/70] Compiling Logging MetadataProvider.swift
[23/70] Compiling Logging Logging.swift
[24/70] Compiling Logging LogHandler.swift
[25/70] Compiling Logging Locks.swift
[26/71] Compiling SingleBoard Raspberry_Registers.swift
[27/71] Compiling SingleBoard Extensions.swift
[29/71] Compiling Ephemeris Solar.swift
[30/71] Compiling SingleBoard Raspberry_PWM.swift
[31/71] Emitting module Moderator
[32/71] Compiling Moderator Moderator.swift
[33/72] Compiling Ephemeris Matrix.swift
[34/72] Compiling Yams Emitter.swift
[35/72] Compiling Yams Encoder.swift
[36/74] Compiling Yams String+Yams.swift
[37/74] Compiling Yams Tag.swift
[38/74] Compiling SingleBoard SingleBoard.swift
[40/74] Compiling Ephemeris Coordinates.swift
[40/74] Wrapping AST for Logging for debugging
[42/74] Compiling Ephemeris Lunar.swift
[43/74] Compiling Yams Representer.swift
[44/74] Compiling Yams Resolver.swift
[45/74] Compiling Ephemeris Body.swift
[46/74] Compiling Ephemeris Date.swift
[47/74] Emitting module Ephemeris
[48/75] Compiling Yams Constructor.swift
[49/75] Compiling Yams Decoder.swift
[50/75] Emitting module Yams
[51/75] Compiling Yams Node.swift
[52/75] Compiling Yams Parser.swift
[53/75] Compiling Yams Node.Scalar.swift
[54/75] Compiling Yams Node.Sequence.swift
[55/75] Compiling Yams Mark.swift
[56/75] Compiling Yams Node.Mapping.swift
[57/75] Wrapping AST for Moderator for debugging
[58/75] Wrapping AST for Ephemeris for debugging
[61/75] Compiling SingleBoard Raspberry_Board.swift
[63/75] Compiling SingleBoard GPIO.swift
[64/75] Compiling SingleBoard I2C.swift
[65/76] Compiling Yams YamlError.swift
[66/76] Compiling Yams shim.swift
[68/79] Wrapping AST for SingleBoard for debugging
[69/79] Wrapping AST for Yams for debugging
[71/81] Emitting module PCA9685
[72/81] Compiling PCA9685 PCA9685.swift
[73/82] Wrapping AST for PCA9685 for debugging
[75/82] Compiling MCP4725 MCP4725.swift
[76/82] Emitting module MCP4725
[77/83] Wrapping AST for MCP4725 for debugging
[79/91] Compiling LED RaspberryPi.swift
[80/92] Compiling LED LEDModule_Internal.swift
[81/92] Compiling LED MCP4725.swift
[82/92] Compiling LED PCA9685.swift
[83/92] Compiling LED LEDModule.swift
[84/92] Emitting module LED
[85/92] Compiling LED Simulated.swift
[86/92] Compiling LED Types.swift
[87/92] Compiling LED Utilities.swift
[88/93] Wrapping AST for LED for debugging
[90/105] Compiling Service ServiceDescription.swift
[91/105] Compiling Service SwiftExtensions.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] Emitting module Service
[98/106] Compiling Service Behavior.swift
[99/106] Compiling Service ChannelController.swift
[100/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: 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] 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: 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 | }
[102/106] Compiling Service Timers.swift
[103/107] Wrapping AST for Service for debugging
[105/112] Compiling RPiLight main.swift
[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: add '@MainActor' to make static property 'stdOut' part of global actor 'MainActor'
| `- 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: add '@MainActor' to make static property 'stdErr' part of global actor 'MainActor'
| `- 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: add '@MainActor' to make static property 'time' part of global actor 'MainActor'
| `- 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: add '@MainActor' to make static property 'logLevelOverride' part of global actor 'MainActor'
| `- 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:209: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(
| `- note: requirement 'log(level:message:metadata:source:file:function:line:)' declared here
136 | level: Logger.Level,
137 | message: Logger.Message,
:
207 | extension LogHandler {
208 | @available(*, deprecated, message: "You should implement this method instead of using the default implementation")
209 | public func log(
| `- note: 'log(level:message:metadata:source:file:function:line:)' declared here
210 | level: Logger.Level,
211 | message: Logger.Message,
/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 |
/usr/include/stdio.h:145:14: note: var declared here
143 | extern FILE *stdin; /* Standard input stream. */
144 | extern FILE *stdout; /* Standard output stream. */
145 | extern FILE *stderr; /* Standard error output stream. */
| `- note: var declared here
146 | /* C89/C99 say they're macros. Make them happy. */
147 | #define stdin stdin
/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 |
/usr/include/stdio.h:144:14: note: var declared here
142 | /* Standard streams. */
143 | extern FILE *stdin; /* Standard input stream. */
144 | extern FILE *stdout; /* Standard output stream. */
| `- note: var declared here
145 | extern FILE *stderr; /* Standard error output stream. */
146 | /* C89/C99 say they're macros. Make them happy. */
[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/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: add '@MainActor' to make static property 'stdOut' part of global actor 'MainActor'
| `- 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: add '@MainActor' to make static property 'stdErr' part of global actor 'MainActor'
| `- 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: add '@MainActor' to make static property 'time' part of global actor 'MainActor'
| `- 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: add '@MainActor' to make static property 'logLevelOverride' part of global actor 'MainActor'
| `- 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:209: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(
| `- note: requirement 'log(level:message:metadata:source:file:function:line:)' declared here
136 | level: Logger.Level,
137 | message: Logger.Message,
:
207 | extension LogHandler {
208 | @available(*, deprecated, message: "You should implement this method instead of using the default implementation")
209 | public func log(
| `- note: 'log(level:message:metadata:source:file:function:line:)' declared here
210 | level: Logger.Level,
211 | message: Logger.Message,
[109/112] Compiling RPiLight LightService.swift
[110/113] Wrapping AST for RPiLight for debugging
[111/113] Write Objects.LinkFileList
[112/113] Linking RPiLight
Build complete! (32.70s)
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.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Done.