Build Information
Failed to build M3UKit, reference main (b1bcb6
), with Swift 6.1 for Wasm on 28 May 2025 13:22:54 UTC.
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:wasm-6.1-latest swift build --swift-sdk wasm32-unknown-wasi 2>&1
Build Log
========================================
RunAll
========================================
Builder version: 4.63.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/omaralbeik/M3UKit.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/omaralbeik/M3UKit
* branch main -> FETCH_HEAD
* [new branch] main -> origin/main
HEAD is now at b1bcb66 Update seasonEpisodeRegex to support different kinds of season&episode matching (#24)
Cloned https://github.com/omaralbeik/M3UKit.git
Revision (git rev-parse @):
b1bcb665c0f06d81ed40493955fa867fd1c730c5
SUCCESS checkout https://github.com/omaralbeik/M3UKit.git at main
========================================
Build
========================================
Selected platform: wasm
Swift version: 6.1
Building package at path: $PWD
https://github.com/omaralbeik/M3UKit.git
https://github.com/omaralbeik/M3UKit.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
"dependencies" : [
],
"manifest_display_name" : "M3UKit",
"name" : "M3UKit",
"path" : "/host/spi-builder-workspace",
"platforms" : [
],
"products" : [
{
"name" : "M3UKit",
"targets" : [
"M3UKit"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "M3UKitTests",
"module_type" : "SwiftTarget",
"name" : "M3UKitTests",
"path" : "Tests/M3UKitTests",
"resources" : [
{
"path" : "/host/spi-builder-workspace/Tests/M3UKitTests/Resources/invalid.m3u",
"rule" : {
"process" : {
}
}
},
{
"path" : "/host/spi-builder-workspace/Tests/M3UKitTests/Resources/text.txt",
"rule" : {
"process" : {
}
}
},
{
"path" : "/host/spi-builder-workspace/Tests/M3UKitTests/Resources/valid.m3u",
"rule" : {
"process" : {
}
}
}
],
"sources" : [
"PlaylistParserTests.swift",
"PlaylistTests.swift"
],
"target_dependencies" : [
"M3UKit"
],
"type" : "test"
},
{
"c99name" : "M3UKit",
"module_type" : "SwiftTarget",
"name" : "M3UKit",
"path" : "Sources/M3UKit",
"product_memberships" : [
"M3UKit"
],
"sources" : [
"Playlist.swift",
"PlaylistParser.swift",
"PlaylistSource.swift",
"RegularExpression.swift"
],
"type" : "library"
}
],
"tools_version" : "5.5"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:wasm-6.1-latest swift build --swift-sdk wasm32-unknown-wasi -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
wasm-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:7e37457820e5f17452a98118754f345f2619722c485f2db0d8b666940a83afd2
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:wasm-6.1-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
[3/7] Compiling M3UKit PlaylistSource.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[4/7] Compiling M3UKit RegularExpression.swift
[5/7] Compiling M3UKit Playlist.swift
[6/7] Compiling M3UKit PlaylistParser.swift
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:38:23: warning: static property 'removeSeriesInfoFromText' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | /// Playlist parser options
30 | public struct Options: OptionSet {
| `- note: consider making struct 'Options' conform to the 'Sendable' protocol
31 | public let rawValue: Int
32 |
:
36 |
37 | /// Remove season number and episode number "S--E--" from the name of media.
38 | public static let removeSeriesInfoFromText = Options(rawValue: 1 << 0)
| |- warning: static property 'removeSeriesInfoFromText' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'removeSeriesInfoFromText' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
39 |
40 | /// Extract id from the URL (usually last path component removing the extension)
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:41:23: warning: static property 'extractIdFromURL' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | /// Playlist parser options
30 | public struct Options: OptionSet {
| `- note: consider making struct 'Options' conform to the 'Sendable' protocol
31 | public let rawValue: Int
32 |
:
39 |
40 | /// Extract id from the URL (usually last path component removing the extension)
41 | public static let extractIdFromURL = Options(rawValue: 1 << 1)
| |- warning: static property 'extractIdFromURL' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'extractIdFromURL' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | /// All available options.
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:44:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | /// Playlist parser options
30 | public struct Options: OptionSet {
| `- note: consider making struct 'Options' conform to the 'Sendable' protocol
31 | public let rawValue: Int
32 |
:
42 |
43 | /// All available options.
44 | public static let all: Options = [
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
45 | .removeSeriesInfoFromText,
46 | .extractIdFromURL,
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:166:22: error: cannot find type 'DispatchQueue' in scope
164 | public func parse(
165 | _ input: PlaylistSource,
166 | processingQueue: DispatchQueue = .global(qos: .background),
| `- error: cannot find type 'DispatchQueue' in scope
167 | callbackQueue: DispatchQueue = .main,
168 | completion: @escaping (Result<Playlist, Error>) -> Void
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:167:20: error: cannot find type 'DispatchQueue' in scope
165 | _ input: PlaylistSource,
166 | processingQueue: DispatchQueue = .global(qos: .background),
167 | callbackQueue: DispatchQueue = .main,
| `- error: cannot find type 'DispatchQueue' in scope
168 | completion: @escaping (Result<Playlist, Error>) -> Void
169 | ) {
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:193:26: warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
191 | priority: TaskPriority = .background
192 | ) async throws -> Playlist {
193 | let processingTask = Task(priority: priority) {
| `- warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
194 | try self.parse(input)
195 | }
/host/spi-builder-workspace/Sources/M3UKit/Playlist.swift:27:15: note: consider making struct 'Playlist' conform to the 'Sendable' protocol
25 |
26 | /// Object representing a playlist containing media items.
27 | public struct Playlist: Equatable, Hashable, Codable {
| `- note: consider making struct 'Playlist' conform to the 'Sendable' protocol
28 |
29 | /// Object representing a media.
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:193:26: warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
191 | priority: TaskPriority = .background
192 | ) async throws -> Playlist {
193 | let processingTask = Task(priority: priority) {
| `- warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
194 | try self.parse(input)
195 | }
/host/spi-builder-workspace/Sources/M3UKit/Playlist.swift:27:15: note: consider making struct 'Playlist' conform to the 'Sendable' protocol
25 |
26 | /// Object representing a playlist containing media items.
27 | public struct Playlist: Equatable, Hashable, Codable {
| `- note: consider making struct 'Playlist' conform to the 'Sendable' protocol
28 |
29 | /// Object representing a media.
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:193:9: warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
191 | priority: TaskPriority = .background
192 | ) async throws -> Playlist {
193 | let processingTask = Task(priority: priority) {
| `- warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
194 | try self.parse(input)
195 | }
/host/spi-builder-workspace/Sources/M3UKit/Playlist.swift:27:15: note: consider making struct 'Playlist' conform to the 'Sendable' protocol
25 |
26 | /// Object representing a playlist containing media items.
27 | public struct Playlist: Equatable, Hashable, Codable {
| `- note: consider making struct 'Playlist' conform to the 'Sendable' protocol
28 |
29 | /// Object representing a media.
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:196:37: warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
194 | try self.parse(input)
195 | }
196 | return try await processingTask.value
| `- warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
197 | }
198 |
/host/spi-builder-workspace/Sources/M3UKit/Playlist.swift:27:15: note: consider making struct 'Playlist' conform to the 'Sendable' protocol
25 |
26 | /// Object representing a playlist containing media items.
27 | public struct Playlist: Equatable, Hashable, Codable {
| `- note: consider making struct 'Playlist' conform to the 'Sendable' protocol
28 |
29 | /// Object representing a media.
[7/7] Emitting module M3UKit
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:38:23: warning: static property 'removeSeriesInfoFromText' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | /// Playlist parser options
30 | public struct Options: OptionSet {
| `- note: consider making struct 'Options' conform to the 'Sendable' protocol
31 | public let rawValue: Int
32 |
:
36 |
37 | /// Remove season number and episode number "S--E--" from the name of media.
38 | public static let removeSeriesInfoFromText = Options(rawValue: 1 << 0)
| |- warning: static property 'removeSeriesInfoFromText' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'removeSeriesInfoFromText' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
39 |
40 | /// Extract id from the URL (usually last path component removing the extension)
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:41:23: warning: static property 'extractIdFromURL' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | /// Playlist parser options
30 | public struct Options: OptionSet {
| `- note: consider making struct 'Options' conform to the 'Sendable' protocol
31 | public let rawValue: Int
32 |
:
39 |
40 | /// Extract id from the URL (usually last path component removing the extension)
41 | public static let extractIdFromURL = Options(rawValue: 1 << 1)
| |- warning: static property 'extractIdFromURL' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'extractIdFromURL' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
42 |
43 | /// All available options.
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:44:23: warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
28 |
29 | /// Playlist parser options
30 | public struct Options: OptionSet {
| `- note: consider making struct 'Options' conform to the 'Sendable' protocol
31 | public let rawValue: Int
32 |
:
42 |
43 | /// All available options.
44 | public static let all: Options = [
| |- warning: static property 'all' is not concurrency-safe because non-'Sendable' type 'PlaylistParser.Options' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'all' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
45 | .removeSeriesInfoFromText,
46 | .extractIdFromURL,
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:166:22: error: cannot find type 'DispatchQueue' in scope
164 | public func parse(
165 | _ input: PlaylistSource,
166 | processingQueue: DispatchQueue = .global(qos: .background),
| `- error: cannot find type 'DispatchQueue' in scope
167 | callbackQueue: DispatchQueue = .main,
168 | completion: @escaping (Result<Playlist, Error>) -> Void
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:167:20: error: cannot find type 'DispatchQueue' in scope
165 | _ input: PlaylistSource,
166 | processingQueue: DispatchQueue = .global(qos: .background),
167 | callbackQueue: DispatchQueue = .main,
| `- error: cannot find type 'DispatchQueue' in scope
168 | completion: @escaping (Result<Playlist, Error>) -> Void
169 | ) {
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:wasm-6.1-latest swift build --swift-sdk wasm32-unknown-wasi 2>&1
wasm-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:7e37457820e5f17452a98118754f345f2619722c485f2db0d8b666940a83afd2
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:wasm-6.1-latest
[0/1] Planning build
Building for debugging...
[0/1] Write swift-version-24593BA9C3E375BF.txt
[2/6] Compiling M3UKit PlaylistSource.swift
[3/6] Compiling M3UKit RegularExpression.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[4/6] Compiling M3UKit Playlist.swift
[5/6] Emitting module M3UKit
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:166:22: error: cannot find type 'DispatchQueue' in scope
164 | public func parse(
165 | _ input: PlaylistSource,
166 | processingQueue: DispatchQueue = .global(qos: .background),
| `- error: cannot find type 'DispatchQueue' in scope
167 | callbackQueue: DispatchQueue = .main,
168 | completion: @escaping (Result<Playlist, Error>) -> Void
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:167:20: error: cannot find type 'DispatchQueue' in scope
165 | _ input: PlaylistSource,
166 | processingQueue: DispatchQueue = .global(qos: .background),
167 | callbackQueue: DispatchQueue = .main,
| `- error: cannot find type 'DispatchQueue' in scope
168 | completion: @escaping (Result<Playlist, Error>) -> Void
169 | ) {
[6/6] Compiling M3UKit PlaylistParser.swift
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:166:22: error: cannot find type 'DispatchQueue' in scope
164 | public func parse(
165 | _ input: PlaylistSource,
166 | processingQueue: DispatchQueue = .global(qos: .background),
| `- error: cannot find type 'DispatchQueue' in scope
167 | callbackQueue: DispatchQueue = .main,
168 | completion: @escaping (Result<Playlist, Error>) -> Void
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:167:20: error: cannot find type 'DispatchQueue' in scope
165 | _ input: PlaylistSource,
166 | processingQueue: DispatchQueue = .global(qos: .background),
167 | callbackQueue: DispatchQueue = .main,
| `- error: cannot find type 'DispatchQueue' in scope
168 | completion: @escaping (Result<Playlist, Error>) -> Void
169 | ) {
BUILD FAILURE 6.1 wasm