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 MQTTKit, reference 0.1.0 (e33bd0), with Swift 6.0 for Linux on 8 Oct 2024 08:19:58 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-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.55.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/arnecs/mqttkit.git
Reference: 0.1.0
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/arnecs/mqttkit
 * tag               0.1.0      -> FETCH_HEAD
HEAD is now at e33bd0a Package.swift, and restructure of source files
Cloned https://github.com/arnecs/mqttkit.git
Revision (git rev-parse @):
e33bd0ac53d35c5033734eec459ea84162952308
SUCCESS checkout https://github.com/arnecs/mqttkit.git at 0.1.0
========================================
Build
========================================
Selected platform:         linux
Swift version:             6.0
Building package at path:  $PWD
https://github.com/arnecs/mqttkit.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-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:b1f5b321a5d74ef5eaf6f5f3afbfebaaa54c7954de6f859009c18a90e0e1c3b4
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 MQTTKit MQTTPacket.swift
/host/spi-builder-workspace/Sources/MQTTPacket.swift:63:14: warning: function call causes an infinite recursion
 61 |
 62 |     init(header: MQTTPacket.Header) {
 63 |         self.init(header: header)
    |              `- warning: function call causes an infinite recursion
 64 |     }
 65 | }
[4/7] Compiling MQTTKit Extensions.swift
[5/7] Emitting module MQTTKit
/host/spi-builder-workspace/Sources/Constants.swift:42:5: warning: 'public' modifier is redundant for operator function declared in a public extension
 40 |
 41 | public extension MQTTQoSLevel {
 42 |     public static func <(lhs: MQTTQoSLevel, rhs: MQTTQoSLevel) -> Bool {
    |     `- warning: 'public' modifier is redundant for operator function declared in a public extension
 43 |         return lhs.rawValue < rhs.rawValue
 44 |     }
[6/7] Compiling MQTTKit Constants.swift
/host/spi-builder-workspace/Sources/Constants.swift:42:5: warning: 'public' modifier is redundant for operator function declared in a public extension
 40 |
 41 | public extension MQTTQoSLevel {
 42 |     public static func <(lhs: MQTTQoSLevel, rhs: MQTTQoSLevel) -> Bool {
    |     `- warning: 'public' modifier is redundant for operator function declared in a public extension
 43 |         return lhs.rawValue < rhs.rawValue
 44 |     }
[7/7] Compiling MQTTKit MQTTKit.swift
/host/spi-builder-workspace/Sources/MQTTKit.swift:187:36: warning: capture of 'self' with non-sendable type 'MQTTClient?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
 82 | // MARK: - MQTT Client
 83 |
 84 | final public class MQTTClient: NSObject, StreamDelegate {
    |                    `- note: class 'MQTTClient' does not conform to the 'Sendable' protocol
 85 |     private var options: MQTTOptions
 86 |     private var inputStream: InputStream?
    :
185 |         DispatchQueue.main.asyncAfter(deadline: time) { [weak self] in
186 |
187 |             guard let strongSelf = self, strongSelf.outputStream?.streamStatus == .open, let lsr = strongSelf.lastServerResponse, -lsr.timeIntervalSinceNow < Double(strongSelf.options.keepAliveInterval) * 1.5  else {
    |                                    `- warning: capture of 'self' with non-sendable type 'MQTTClient?' in a `@Sendable` closure; this is an error in the Swift 6 language mode
188 |                 self?.state = .disconnected
189 |                 self?.autoReconnect()
/host/spi-builder-workspace/Sources/MQTTKit.swift:214:73: warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
212 |             // Schedule next retry
213 |             let time = DispatchTime.now() + Double(options.keepAliveInterval / 2)
214 |             DispatchQueue.main.asyncAfter(deadline: time, execute: self.autoReconnect)
    |                                                                         `- warning: converting non-sendable function value to '@MainActor @Sendable @convention(block) () -> Void' may introduce data races
215 |         }
216 |     }
/host/spi-builder-workspace/Sources/MQTTKit.swift:224:16: error: type 'Stream' has no member 'getStreamsToHost'
222 |         var outputStream: OutputStream?
223 |
224 |         Stream.getStreamsToHost(
    |                `- error: type 'Stream' has no member 'getStreamsToHost'
225 |             withName: options.host,
226 |             port: options.port,
/host/spi-builder-workspace/Sources/MQTTKit.swift:239:51: error: cannot find 'RunLoopMode' in scope
237 |
238 |
239 |         input.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
    |                                                   `- error: cannot find 'RunLoopMode' in scope
240 |         output.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
241 |
/host/spi-builder-workspace/Sources/MQTTKit.swift:240:52: error: cannot find 'RunLoopMode' in scope
238 |
239 |         input.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
240 |         output.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
    |                                                    `- error: cannot find 'RunLoopMode' in scope
241 |
242 |         if options.useTLS {
/host/spi-builder-workspace/Sources/MQTTKit.swift:243:57: error: argument type 'StreamSocketSecurityLevel' expected to be an instance of a class or class-constrained type
241 |
242 |         if options.useTLS {
243 |             input.setProperty(StreamSocketSecurityLevel.tlSv1, forKey: .socketSecurityLevelKey)
    |                                                         `- error: argument type 'StreamSocketSecurityLevel' expected to be an instance of a class or class-constrained type
244 |             output.setProperty(StreamSocketSecurityLevel.tlSv1, forKey: .socketSecurityLevelKey)
245 |         }
/host/spi-builder-workspace/Sources/MQTTKit.swift:244:58: error: argument type 'StreamSocketSecurityLevel' expected to be an instance of a class or class-constrained type
242 |         if options.useTLS {
243 |             input.setProperty(StreamSocketSecurityLevel.tlSv1, forKey: .socketSecurityLevelKey)
244 |             output.setProperty(StreamSocketSecurityLevel.tlSv1, forKey: .socketSecurityLevelKey)
    |                                                          `- error: argument type 'StreamSocketSecurityLevel' expected to be an instance of a class or class-constrained type
245 |         }
246 |
/host/spi-builder-workspace/Sources/MQTTKit.swift:248:13: warning: capture of 'input' with non-sendable type 'InputStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
246 |
247 |         DispatchQueue.global(qos: .userInitiated).async {
248 |             input.open()
    |             `- warning: capture of 'input' with non-sendable type 'InputStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
249 |             output.open()
250 |
Foundation.InputStream:1:12: note: class 'InputStream' does not conform to the 'Sendable' protocol
 1 | open class InputStream : Stream {
   |            `- note: class 'InputStream' does not conform to the 'Sendable' protocol
 2 |     open func read(_ buffer: UnsafeMutablePointer<UInt8>, maxLength len: Int) -> Int
 3 |     open func getBuffer(_ buffer: UnsafeMutablePointer<UnsafeMutablePointer<UInt8>?>, length len: UnsafeMutablePointer<Int>) -> Bool
/host/spi-builder-workspace/Sources/MQTTKit.swift:249:13: warning: capture of 'output' with non-sendable type 'OutputStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
247 |         DispatchQueue.global(qos: .userInitiated).async {
248 |             input.open()
249 |             output.open()
    |             `- warning: capture of 'output' with non-sendable type 'OutputStream' in a `@Sendable` closure; this is an error in the Swift 6 language mode
250 |
251 |             while input.streamStatus == .opening || output.streamStatus == .opening {
Foundation.OutputStream:1:12: note: class 'OutputStream' does not conform to the 'Sendable' protocol
 1 | open class OutputStream : Stream {
   |            `- note: class 'OutputStream' does not conform to the 'Sendable' protocol
 2 |     open func write(_ buffer: UnsafePointer<UInt8>, maxLength len: Int) -> Int
 3 |     open var hasSpaceAvailable: Bool { get }
/host/spi-builder-workspace/Sources/MQTTKit.swift:256:17: warning: capture of 'completion' with non-sendable type '((input: InputStream, output: OutputStream)?) -> ()' in a `@Sendable` closure; this is an error in the Swift 6 language mode
254 |
255 |             if input.streamStatus != .open || output.streamStatus != .open {
256 |                 completion(nil)
    |                 |- warning: capture of 'completion' with non-sendable type '((input: InputStream, output: OutputStream)?) -> ()' 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'
257 |                 return
258 |             }
/host/spi-builder-workspace/Sources/MQTTKit.swift:251:53: warning: implicit capture of 'output' requires that 'OutputStream' conforms to `Sendable`; this is an error in the Swift 6 language mode
249 |             output.open()
250 |
251 |             while input.streamStatus == .opening || output.streamStatus == .opening {
    |                                                     `- warning: implicit capture of 'output' requires that 'OutputStream' conforms to `Sendable`; this is an error in the Swift 6 language mode
252 |                 usleep(1000)
253 |             }
Foundation.OutputStream:1:12: note: class 'OutputStream' does not conform to the 'Sendable' protocol
 1 | open class OutputStream : Stream {
   |            `- note: class 'OutputStream' does not conform to the 'Sendable' protocol
 2 |     open func write(_ buffer: UnsafePointer<UInt8>, maxLength len: Int) -> Int
 3 |     open var hasSpaceAvailable: Bool { get }
/host/spi-builder-workspace/Sources/MQTTKit.swift:255:47: warning: implicit capture of 'output' requires that 'OutputStream' conforms to `Sendable`; this is an error in the Swift 6 language mode
253 |             }
254 |
255 |             if input.streamStatus != .open || output.streamStatus != .open {
    |                                               `- warning: implicit capture of 'output' requires that 'OutputStream' conforms to `Sendable`; this is an error in the Swift 6 language mode
256 |                 completion(nil)
257 |                 return
Foundation.OutputStream:1:12: note: class 'OutputStream' does not conform to the 'Sendable' protocol
 1 | open class OutputStream : Stream {
   |            `- note: class 'OutputStream' does not conform to the 'Sendable' protocol
 2 |     open func write(_ buffer: UnsafePointer<UInt8>, maxLength len: Int) -> Int
 3 |     open var hasSpaceAvailable: Bool { get }
/host/spi-builder-workspace/Sources/MQTTKit.swift:294:27: warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
292 |         defer {
293 |             messageBuffer.deinitialize(count: options.bufferSize)
294 |             messageBuffer.deallocate(capacity: options.bufferSize)
    |                           `- warning: 'deallocate(capacity:)' is deprecated: Swift currently only supports freeing entire heap blocks, use deallocate() instead
295 |         }
296 |
BUILD FAILURE 6.0 linux