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

Failed to build Gestalt, reference master (646923), with Swift 6.0 for Linux on 1 Nov 2024 11:00:40 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-0":/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/regexident/Gestalt.git
Reference: master
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
From https://github.com/regexident/Gestalt
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at 6469230 Bumped version to '2.1.1'
Cloned https://github.com/regexident/Gestalt.git
Revision (git rev-parse @):
6469230fb1b81ea449312a855b410425030b287e
SUCCESS checkout https://github.com/regexident/Gestalt.git at master
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.0
Building package at path:  $PWD
https://github.com/regexident/Gestalt.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-0":/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
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
[3/7] Compiling Gestalt ThemeManager.swift
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:23:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'ThemeManager' may have shared mutable state; this is an error in the Swift 6 language mode
 19 |
 20 | /// Theme manager for assigning a theme
 21 | public class ThemeManager {
    |              `- note: class 'ThemeManager' does not conform to the 'Sendable' protocol
 22 |     /// The default ThemeManager
 23 |     public static let `default`: ThemeManager = .init()
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'ThemeManager' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' 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
 24 |
 25 |     /// Whether to apply themes with animation
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:29:35: error: cannot find type 'TimeInterval' in scope
 27 |
 28 |     /// Duration of animation during theme application
 29 |     public var animationDuration: TimeInterval = 3.0 // 0.4
    |                                   `- error: cannot find type 'TimeInterval' in scope
 30 |
 31 |     // Notification used for broadcasting theme changes
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:32:43: error: cannot find 'Notification' in scope
 30 |
 31 |     // Notification used for broadcasting theme changes
 32 |     private static let notificationName = Notification.Name("Gestalt.ThemeChangedNotification")
    |                                           `- error: cannot find 'Notification' in scope
 33 |
 34 |     // NotificationCenter used for broadcasting theme changes
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:35:37: error: cannot find type 'NotificationCenter' in scope
 33 |
 34 |     // NotificationCenter used for broadcasting theme changes
 35 |     private var notificationCenter: NotificationCenter = .init()
    |                                     `- error: cannot find type 'NotificationCenter' in scope
 36 |
 37 |     // For appearance hack (see below), only accessible in iOS Applications
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:286:38: error: cannot find type 'TimeInterval' in scope
284 |     }
285 |
286 |     internal func animated(duration: TimeInterval, closure: @escaping () -> ()) {
    |                                      `- error: cannot find type 'TimeInterval' in scope
287 |         #if os(iOS)
288 |         UIView.animate(withDuration: duration) {
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:297:64: error: cannot find type 'Notification' in scope
295 |
296 |     @available(iOS 7, *)
297 |     @objc private func handleDynamicTypeChange(_ notification: Notification) {
    |                                                                `- error: cannot find type 'Notification' in scope
298 |         self.notify()
299 |     }
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:297:6: error: Objective-C interoperability is disabled
295 |
296 |     @available(iOS 7, *)
297 |     @objc private func handleDynamicTypeChange(_ notification: Notification) {
    |      `- error: Objective-C interoperability is disabled
298 |         self.notify()
299 |     }
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:148:9: error: cannot find 'objc_setAssociatedObject' in scope
146 |
147 |         var associatedObjectKey = ObjectIdentifier(ThemeManager.self)
148 |         objc_setAssociatedObject(
    |         `- error: cannot find 'objc_setAssociatedObject' in scope
149 |             themeable,
150 |             &associatedObjectKey,
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:152:14: error: cannot infer contextual base in reference to member 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'
150 |             &associatedObjectKey,
151 |             disposable,
152 |             .OBJC_ASSOCIATION_RETAIN_NONATOMIC
    |              `- error: cannot infer contextual base in reference to member 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'
153 |         )
154 |     }
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:234:20: error: cannot find 'OperationQueue' in scope
232 |             forName: ThemeManager.notificationName,
233 |             object: self,
234 |             queue: OperationQueue.main
    |                    `- error: cannot find 'OperationQueue' in scope
235 |         ) { [weak observer] notification in
236 |             guard let themeManager = notification.object as? ThemeManager else {
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:235:29: error: cannot infer type of closure parameter 'notification' without a type annotation
233 |             object: self,
234 |             queue: OperationQueue.main
235 |         ) { [weak observer] notification in
    |                             `- error: cannot infer type of closure parameter 'notification' without a type annotation
236 |             guard let themeManager = notification.object as? ThemeManager else {
237 |                 return
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:255:9: error: cannot find 'DispatchQueue' in scope
253 |
254 |     private func notify() {
255 |         DispatchQueue.main.async { [weak self] in
    |         `- error: cannot find 'DispatchQueue' in scope
256 |             guard let strongSelf = self else {
257 |                 return
[4/7] Compiling Gestalt ThemeObserver.swift
/host/spi-builder-workspace/Gestalt/ThemeObserver.swift:19:16: error: cannot find 'Thread' in scope
17 |
18 |     internal func handleThemeChange(on themeManager: ThemeManager) {
19 |         assert(Thread.isMainThread)
   |                `- error: cannot find 'Thread' in scope
20 |
21 |         guard let theme = themeManager.theme else {
/host/spi-builder-workspace/Gestalt/ThemeObserver.swift:24:17: error: cannot find 'NSLog' in scope
22 |             var themeManager = themeManager
23 |             Swift.withUnsafePointer(to: &themeManager) {
24 |                 NSLog("No theme found for theme manager \($0)")
   |                 `- error: cannot find 'NSLog' in scope
25 |             }
26 |             return
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:286:38: error: cannot find type 'TimeInterval' in scope
284 |     }
285 |
286 |     internal func animated(duration: TimeInterval, closure: @escaping () -> ()) {
    |                                      `- error: cannot find type 'TimeInterval' in scope
287 |         #if os(iOS)
288 |         UIView.animate(withDuration: duration) {
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:29:35: error: cannot find type 'TimeInterval' in scope
 27 |
 28 |     /// Duration of animation during theme application
 29 |     public var animationDuration: TimeInterval = 3.0 // 0.4
    |                                   `- error: cannot find type 'TimeInterval' in scope
 30 |
 31 |     // Notification used for broadcasting theme changes
/host/spi-builder-workspace/Gestalt/ThemeObserver.swift:28:22: error: cannot call value of non-function type 'Bool'
26 |             return
27 |         }
28 |         themeManager.animated(duration: themeManager.animationDuration) {
   |                      `- error: cannot call value of non-function type 'Bool'
29 |             self.closure(theme)
30 |         }
[5/7] Compiling Gestalt Themeable.swift
/host/spi-builder-workspace/Gestalt/Themeable.swift:12:28: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
10 |
11 | /// Utility protocol for enabling Gestalt themes
12 | public protocol Themeable: class {
   |                            `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
13 |     associatedtype Theme: Gestalt.Theme
14 |
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:23:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'ThemeManager' may have shared mutable state; this is an error in the Swift 6 language mode
 19 |
 20 | /// Theme manager for assigning a theme
 21 | public class ThemeManager {
    |              `- note: class 'ThemeManager' does not conform to the 'Sendable' protocol
 22 |     /// The default ThemeManager
 23 |     public static let `default`: ThemeManager = .init()
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'ThemeManager' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' 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
 24 |
 25 |     /// Whether to apply themes with animation
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:29:35: error: cannot find type 'TimeInterval' in scope
 27 |
 28 |     /// Duration of animation during theme application
 29 |     public var animationDuration: TimeInterval = 3.0 // 0.4
    |                                   `- error: cannot find type 'TimeInterval' in scope
 30 |
 31 |     // Notification used for broadcasting theme changes
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:32:43: error: cannot find 'Notification' in scope
 30 |
 31 |     // Notification used for broadcasting theme changes
 32 |     private static let notificationName = Notification.Name("Gestalt.ThemeChangedNotification")
    |                                           `- error: cannot find 'Notification' in scope
 33 |
 34 |     // NotificationCenter used for broadcasting theme changes
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:35:37: error: cannot find type 'NotificationCenter' in scope
 33 |
 34 |     // NotificationCenter used for broadcasting theme changes
 35 |     private var notificationCenter: NotificationCenter = .init()
    |                                     `- error: cannot find type 'NotificationCenter' in scope
 36 |
 37 |     // For appearance hack (see below), only accessible in iOS Applications
error: emit-module command failed with exit code 1 (use -v to see invocation)
[6/7] Emitting module Gestalt
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:23:23: warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'ThemeManager' may have shared mutable state; this is an error in the Swift 6 language mode
 19 |
 20 | /// Theme manager for assigning a theme
 21 | public class ThemeManager {
    |              `- note: class 'ThemeManager' does not conform to the 'Sendable' protocol
 22 |     /// The default ThemeManager
 23 |     public static let `default`: ThemeManager = .init()
    |                       |- warning: static property 'default' is not concurrency-safe because non-'Sendable' type 'ThemeManager' may have shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: annotate 'default' 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
 24 |
 25 |     /// Whether to apply themes with animation
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:29:35: error: cannot find type 'TimeInterval' in scope
 27 |
 28 |     /// Duration of animation during theme application
 29 |     public var animationDuration: TimeInterval = 3.0 // 0.4
    |                                   `- error: cannot find type 'TimeInterval' in scope
 30 |
 31 |     // Notification used for broadcasting theme changes
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:32:43: error: cannot find 'Notification' in scope
 30 |
 31 |     // Notification used for broadcasting theme changes
 32 |     private static let notificationName = Notification.Name("Gestalt.ThemeChangedNotification")
    |                                           `- error: cannot find 'Notification' in scope
 33 |
 34 |     // NotificationCenter used for broadcasting theme changes
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:35:37: error: cannot find type 'NotificationCenter' in scope
 33 |
 34 |     // NotificationCenter used for broadcasting theme changes
 35 |     private var notificationCenter: NotificationCenter = .init()
    |                                     `- error: cannot find type 'NotificationCenter' in scope
 36 |
 37 |     // For appearance hack (see below), only accessible in iOS Applications
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:286:38: error: cannot find type 'TimeInterval' in scope
284 |     }
285 |
286 |     internal func animated(duration: TimeInterval, closure: @escaping () -> ()) {
    |                                      `- error: cannot find type 'TimeInterval' in scope
287 |         #if os(iOS)
288 |         UIView.animate(withDuration: duration) {
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:297:64: error: cannot find type 'Notification' in scope
295 |
296 |     @available(iOS 7, *)
297 |     @objc private func handleDynamicTypeChange(_ notification: Notification) {
    |                                                                `- error: cannot find type 'Notification' in scope
298 |         self.notify()
299 |     }
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:297:6: error: Objective-C interoperability is disabled
295 |
296 |     @available(iOS 7, *)
297 |     @objc private func handleDynamicTypeChange(_ notification: Notification) {
    |      `- error: Objective-C interoperability is disabled
298 |         self.notify()
299 |     }
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:148:9: error: cannot find 'objc_setAssociatedObject' in scope
146 |
147 |         var associatedObjectKey = ObjectIdentifier(ThemeManager.self)
148 |         objc_setAssociatedObject(
    |         `- error: cannot find 'objc_setAssociatedObject' in scope
149 |             themeable,
150 |             &associatedObjectKey,
/host/spi-builder-workspace/Gestalt/ThemeManager.swift:152:14: error: cannot infer contextual base in reference to member 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'
150 |             &associatedObjectKey,
151 |             disposable,
152 |             .OBJC_ASSOCIATION_RETAIN_NONATOMIC
    |              `- error: cannot infer contextual base in reference to member 'OBJC_ASSOCIATION_RETAIN_NONATOMIC'
153 |         )
154 |     }
/host/spi-builder-workspace/Gestalt/Themeable.swift:12:28: warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
10 |
11 | /// Utility protocol for enabling Gestalt themes
12 | public protocol Themeable: class {
   |                            `- warning: using 'class' keyword to define a class-constrained protocol is deprecated; use 'AnyObject' instead
13 |     associatedtype Theme: Gestalt.Theme
14 |
[7/7] Compiling Gestalt Gestalt.swift
BUILD FAILURE 6.0 linux