The Swift Package Index logo.Swift Package Index

Build Information

Failed to build Watchdog, reference master (2df9ac), with Swift 6.3 for Wasm on 12 Apr 2026 10:24:04 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/swiftpackageindex/spi-images:wasm-6.3-latest swift build --swift-sdk swift-6.3-RELEASE_wasm 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.70.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/wojteklu/Watchdog.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/wojteklu/Watchdog
 * branch            master     -> FETCH_HEAD
 * [new branch]      master     -> origin/master
HEAD is now at 2df9acf Add support for SwiftPM (#51)
Cloned https://github.com/wojteklu/Watchdog.git
Revision (git rev-parse @):
2df9acf8472a1f1146fc0f41e37d3f424dba72d6
SUCCESS checkout https://github.com/wojteklu/Watchdog.git at master
========================================
Build
========================================
Selected platform:         wasm
Swift version:             6.3
Building package at path:  $PWD
https://github.com/wojteklu/Watchdog.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/swiftpackageindex/spi-images:wasm-6.3-latest swift build --swift-sdk swift-6.3-RELEASE_wasm 2>&1
wasm-6.3-latest: Pulling from swiftpackageindex/spi-images
Digest: sha256:d69f4e7582c319245442d62a08b2d7c7fd5a0c0c69f5d2ef11d1530cd8d3329b
Status: Image is up to date for registry.gitlab.com/swiftpackageindex/spi-images:wasm-6.3-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
error: emit-module command failed with exit code 1 (use -v to see invocation)
[3/4] Emitting module Watchdog
/host/spi-builder-workspace/Classes/Watchdog.swift:7:6: error: Objective-C interoperability is disabled
 5 |     fileprivate let pingThread: PingThread
 6 |
 7 |     @objc public static let defaultThreshold = 0.4
   |      `- error: Objective-C interoperability is disabled
 8 |
 9 |     /// Convenience initializer that allows you to construct a `WatchDog` object with default behavior.
/host/spi-builder-workspace/Classes/Watchdog.swift:12:6: error: Objective-C interoperability is disabled
10 |     /// - parameter threshold: number of seconds that must pass to consider the main thread blocked.
11 |     /// - parameter strictMode: boolean value that stops the execution whenever the threshold is reached.
12 |     @objc public convenience init(threshold: Double = Watchdog.defaultThreshold, strictMode: Bool = false) {
   |      `- error: Objective-C interoperability is disabled
13 |         let message = "👮 Main thread was blocked for " + String(format: "%.2f", threshold) + "s 👮"
14 |
/host/spi-builder-workspace/Classes/Watchdog.swift:27:6: error: Objective-C interoperability is disabled
25 |     /// - parameter threshold: number of seconds that must pass to consider the main thread blocked.
26 |     /// - parameter watchdogFiredCallback: a callback that will be called when the the threshold is reached
27 |     @objc public init(threshold: Double = Watchdog.defaultThreshold, watchdogFiredCallback: @escaping () -> Void) {
   |      `- error: Objective-C interoperability is disabled
28 |         self.pingThread = PingThread(threshold: threshold, handler: watchdogFiredCallback)
29 |
/host/spi-builder-workspace/Classes/Watchdog.swift:39:33: error: cannot find type 'Thread' in scope
37 | }
38 |
39 | private final class PingThread: Thread {
   |                                 `- error: cannot find type 'Thread' in scope
40 |     fileprivate var pingTaskIsRunning: Bool {
41 |         get {
/host/spi-builder-workspace/Classes/Watchdog.swift:55:33: error: cannot find 'DispatchSemaphore' in scope
53 |     private var _pingTaskIsRunning = false
54 |     private let pingTaskIsRunningLock = NSObject()
55 |     fileprivate var semaphore = DispatchSemaphore(value: 0)
   |                                 `- error: cannot find 'DispatchSemaphore' in scope
56 |     fileprivate let threshold: Double
57 |     fileprivate let handler: () -> Void
/host/spi-builder-workspace/Classes/Watchdog.swift:66:19: error: method does not override any method from its superclass
64 |     }
65 |
66 |     override func main() {
   |                   `- error: method does not override any method from its superclass
67 |         while !isCancelled {
68 |             pingTaskIsRunning = true
[4/4] Compiling Watchdog Watchdog.swift
/host/spi-builder-workspace/Classes/Watchdog.swift:7:6: error: Objective-C interoperability is disabled
 5 |     fileprivate let pingThread: PingThread
 6 |
 7 |     @objc public static let defaultThreshold = 0.4
   |      `- error: Objective-C interoperability is disabled
 8 |
 9 |     /// Convenience initializer that allows you to construct a `WatchDog` object with default behavior.
/host/spi-builder-workspace/Classes/Watchdog.swift:12:6: error: Objective-C interoperability is disabled
10 |     /// - parameter threshold: number of seconds that must pass to consider the main thread blocked.
11 |     /// - parameter strictMode: boolean value that stops the execution whenever the threshold is reached.
12 |     @objc public convenience init(threshold: Double = Watchdog.defaultThreshold, strictMode: Bool = false) {
   |      `- error: Objective-C interoperability is disabled
13 |         let message = "👮 Main thread was blocked for " + String(format: "%.2f", threshold) + "s 👮"
14 |
/host/spi-builder-workspace/Classes/Watchdog.swift:27:6: error: Objective-C interoperability is disabled
25 |     /// - parameter threshold: number of seconds that must pass to consider the main thread blocked.
26 |     /// - parameter watchdogFiredCallback: a callback that will be called when the the threshold is reached
27 |     @objc public init(threshold: Double = Watchdog.defaultThreshold, watchdogFiredCallback: @escaping () -> Void) {
   |      `- error: Objective-C interoperability is disabled
28 |         self.pingThread = PingThread(threshold: threshold, handler: watchdogFiredCallback)
29 |
/host/spi-builder-workspace/Classes/Watchdog.swift:39:33: error: cannot find type 'Thread' in scope
37 | }
38 |
39 | private final class PingThread: Thread {
   |                                 `- error: cannot find type 'Thread' in scope
40 |     fileprivate var pingTaskIsRunning: Bool {
41 |         get {
/host/spi-builder-workspace/Classes/Watchdog.swift:55:33: error: cannot find 'DispatchSemaphore' in scope
53 |     private var _pingTaskIsRunning = false
54 |     private let pingTaskIsRunningLock = NSObject()
55 |     fileprivate var semaphore = DispatchSemaphore(value: 0)
   |                                 `- error: cannot find 'DispatchSemaphore' in scope
56 |     fileprivate let threshold: Double
57 |     fileprivate let handler: () -> Void
/host/spi-builder-workspace/Classes/Watchdog.swift:66:19: error: method does not override any method from its superclass
64 |     }
65 |
66 |     override func main() {
   |                   `- error: method does not override any method from its superclass
67 |         while !isCancelled {
68 |             pingTaskIsRunning = true
/host/spi-builder-workspace/Classes/Watchdog.swift:30:25: error: value of type 'PingThread' has no member 'start'
28 |         self.pingThread = PingThread(threshold: threshold, handler: watchdogFiredCallback)
29 |
30 |         self.pingThread.start()
   |                         `- error: value of type 'PingThread' has no member 'start'
31 |         super.init()
32 |     }
/host/spi-builder-workspace/Classes/Watchdog.swift:35:20: error: value of type 'PingThread' has no member 'cancel'
33 |
34 |     deinit {
35 |         pingThread.cancel()
   |                    `- error: value of type 'PingThread' has no member 'cancel'
36 |     }
37 | }
/host/spi-builder-workspace/Classes/Watchdog.swift:42:13: error: cannot find 'objc_sync_enter' in scope
40 |     fileprivate var pingTaskIsRunning: Bool {
41 |         get {
42 |             objc_sync_enter(pingTaskIsRunningLock)
   |             `- error: cannot find 'objc_sync_enter' in scope
43 |             let result = _pingTaskIsRunning;
44 |             objc_sync_exit(pingTaskIsRunningLock)
/host/spi-builder-workspace/Classes/Watchdog.swift:44:13: error: cannot find 'objc_sync_exit' in scope
42 |             objc_sync_enter(pingTaskIsRunningLock)
43 |             let result = _pingTaskIsRunning;
44 |             objc_sync_exit(pingTaskIsRunningLock)
   |             `- error: cannot find 'objc_sync_exit' in scope
45 |             return result
46 |         }
/host/spi-builder-workspace/Classes/Watchdog.swift:48:13: error: cannot find 'objc_sync_enter' in scope
46 |         }
47 |         set {
48 |             objc_sync_enter(pingTaskIsRunningLock)
   |             `- error: cannot find 'objc_sync_enter' in scope
49 |             _pingTaskIsRunning = newValue
50 |             objc_sync_exit(pingTaskIsRunningLock)
/host/spi-builder-workspace/Classes/Watchdog.swift:50:13: error: cannot find 'objc_sync_exit' in scope
48 |             objc_sync_enter(pingTaskIsRunningLock)
49 |             _pingTaskIsRunning = newValue
50 |             objc_sync_exit(pingTaskIsRunningLock)
   |             `- error: cannot find 'objc_sync_exit' in scope
51 |         }
52 |     }
/host/spi-builder-workspace/Classes/Watchdog.swift:62:9: error: 'super' cannot be used in class 'PingThread' because it has no superclass
60 |         self.threshold = threshold
61 |         self.handler = handler
62 |         super.init()
   |         `- error: 'super' cannot be used in class 'PingThread' because it has no superclass
63 |         self.name = "WatchDog"
64 |     }
/host/spi-builder-workspace/Classes/Watchdog.swift:63:14: error: value of type 'PingThread' has no member 'name'
61 |         self.handler = handler
62 |         super.init()
63 |         self.name = "WatchDog"
   |              `- error: value of type 'PingThread' has no member 'name'
64 |     }
65 |
/host/spi-builder-workspace/Classes/Watchdog.swift:67:16: error: cannot find 'isCancelled' in scope
65 |
66 |     override func main() {
67 |         while !isCancelled {
   |                `- error: cannot find 'isCancelled' in scope
68 |             pingTaskIsRunning = true
69 |             DispatchQueue.main.async {
/host/spi-builder-workspace/Classes/Watchdog.swift:69:13: error: cannot find 'DispatchQueue' in scope
67 |         while !isCancelled {
68 |             pingTaskIsRunning = true
69 |             DispatchQueue.main.async {
   |             `- error: cannot find 'DispatchQueue' in scope
70 |                 self.pingTaskIsRunning = false
71 |                 self.semaphore.signal()
/host/spi-builder-workspace/Classes/Watchdog.swift:74:13: error: cannot find 'Thread' in scope
72 |             }
73 |
74 |             Thread.sleep(forTimeInterval: threshold)
   |             `- error: cannot find 'Thread' in scope
75 |             if pingTaskIsRunning {
76 |                 handler()
/host/spi-builder-workspace/Classes/Watchdog.swift:79:41: error: cannot find 'DispatchTime' in scope
77 |             }
78 |
79 |             _ = semaphore.wait(timeout: DispatchTime.distantFuture)
   |                                         `- error: cannot find 'DispatchTime' in scope
80 |         }
81 |     }
BUILD FAILURE 6.3 wasm