Build Information
Successful build of M3UKit, reference 0.8.1 (a84b4d
), with Swift 6.0 for Linux on 29 Nov 2024 07:42:58 UTC.
Swift 6 data race errors: 3
Build Command
bash -c docker run --pull=always --rm -v "checkouts-4606859-2":/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 -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.58.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/omaralbeik/M3UKit.git
Reference: 0.8.1
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
* tag 0.8.1 -> FETCH_HEAD
HEAD is now at a84b4d7 Add missing podspec file (#18)
Cloned https://github.com/omaralbeik/M3UKit.git
Revision (git rev-parse @):
a84b4d72ddb3f6fcce78752bddd9ac8fe91bf94e
SUCCESS checkout https://github.com/omaralbeik/M3UKit.git at 0.8.1
========================================
Build
========================================
Selected platform: linux
Swift version: 6.0
Building package at path: $PWD
https://github.com/omaralbeik/M3UKit.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-2":/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 -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.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 M3UKit PlaylistSource.swift
[4/7] Compiling M3UKit RegularExpression.swift
[5/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: annotate 'removeSeriesInfoFromText' 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
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: annotate 'extractIdFromURL' 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
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: annotate 'all' 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
45 | .removeSeriesInfoFromText,
46 | .extractIdFromURL,
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:168:28: warning: capture of 'self' with non-sendable type 'PlaylistParser' in a `@Sendable` closure; this is an error in the Swift 6 language mode
25 |
26 | /// A class to parse `Playlist` objects from a `PlaylistSource`.
27 | public final class PlaylistParser {
| `- note: class 'PlaylistParser' does not conform to the 'Sendable' protocol
28 |
29 | /// Playlist parser options
:
166 | processingQueue.async {
167 | do {
168 | let playlist = try self.parse(input)
| `- warning: capture of 'self' with non-sendable type 'PlaylistParser' in a `@Sendable` closure; this is an error in the Swift 6 language mode
169 | callbackQueue.async {
170 | completion(.success(playlist))
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:168:39: warning: capture of 'input' with non-sendable type 'any PlaylistSource' in a `@Sendable` closure; this is an error in the Swift 6 language mode
166 | processingQueue.async {
167 | do {
168 | let playlist = try self.parse(input)
| `- warning: capture of 'input' with non-sendable type 'any PlaylistSource' in a `@Sendable` closure; this is an error in the Swift 6 language mode
169 | callbackQueue.async {
170 | completion(.success(playlist))
/host/spi-builder-workspace/Sources/M3UKit/PlaylistSource.swift:27:17: note: protocol 'PlaylistSource' does not conform to the 'Sendable' protocol
25 |
26 | /// Playlist source.
27 | public protocol PlaylistSource {
| `- note: protocol 'PlaylistSource' does not conform to the 'Sendable' protocol
28 | /// Playlist contents raw string.
29 | var rawString: String? { get }
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:170:11: warning: capture of 'completion' with non-sendable type '(Result<Playlist, any Error>) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
168 | let playlist = try self.parse(input)
169 | callbackQueue.async {
170 | completion(.success(playlist))
| |- warning: capture of 'completion' with non-sendable type '(Result<Playlist, any Error>) -> Void' 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'
171 | }
172 | } catch {
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:170:11: warning: capture of 'completion' with non-sendable type '(Result<Playlist, any Error>) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
168 | let playlist = try self.parse(input)
169 | callbackQueue.async {
170 | completion(.success(playlist))
| |- warning: capture of 'completion' with non-sendable type '(Result<Playlist, any Error>) -> Void' 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'
171 | }
172 | } catch {
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:170:31: warning: capture of 'playlist' with non-sendable type 'Playlist' in a `@Sendable` closure; this is an error in the Swift 6 language mode
168 | let playlist = try self.parse(input)
169 | callbackQueue.async {
170 | completion(.success(playlist))
| `- warning: capture of 'playlist' with non-sendable type 'Playlist' in a `@Sendable` closure; this is an error in the Swift 6 language mode
171 | }
172 | } catch {
/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:174:11: warning: capture of 'completion' with non-sendable type '(Result<Playlist, any Error>) -> Void' in a `@Sendable` closure; this is an error in the Swift 6 language mode
172 | } catch {
173 | callbackQueue.async {
174 | completion(.failure(error))
| |- warning: capture of 'completion' with non-sendable type '(Result<Playlist, any Error>) -> Void' 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'
175 | }
176 | }
/host/spi-builder-workspace/Sources/M3UKit/PlaylistParser.swift:189:26: warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
187 | priority: TaskPriority = .background
188 | ) async throws -> Playlist {
189 | 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
190 | try self.parse(input)
191 | }
/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:189:26: warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
187 | priority: TaskPriority = .background
188 | ) async throws -> Playlist {
189 | 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
190 | try self.parse(input)
191 | }
/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:189:9: warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
187 | priority: TaskPriority = .background
188 | ) async throws -> Playlist {
189 | 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
190 | try self.parse(input)
191 | }
/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:192:37: warning: type 'Playlist' does not conform to the 'Sendable' protocol; this is an error in the Swift 6 language mode
190 | try self.parse(input)
191 | }
192 | 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
193 | }
194 |
/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:189:51: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
187 | priority: TaskPriority = .background
188 | ) async throws -> Playlist {
189 | let processingTask = Task(priority: priority) {
| `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
190 | try self.parse(input)
| `- note: closure captures 'self' which is accessible to code in the current task
191 | }
192 | return try await processingTask.value
[6/7] Compiling M3UKit Playlist.swift
[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: annotate 'removeSeriesInfoFromText' 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
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: annotate 'extractIdFromURL' 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
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: annotate 'all' 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
45 | .removeSeriesInfoFromText,
46 | .extractIdFromURL,
Build complete! (12.25s)
Build complete.
{
"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"
}
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
Done.