Closed
Description
Expected behavior
An application with a dependency on SwiftNIO successfully builds with a Swift 6 OSS toolchain + Static Linux SDK.
Note: The swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a
toolchain is used vs the swift-6.0-RELEASE
because of another issue with swift-collections
. That issue is fixed in the "09-17" toolchain release.
Note: Xcode 15.4.0 vs Xcode 16.0.0 because of an issue described here:
Actual behavior
main
branch error
$ xcrun --toolchain org.swift.600202409171a swift build --swift-sdk aarch64-swift-linux-musl
Building for debugging...
In file included from /Users/someuser/Developer/some-app/.build/checkouts/swift-nio/Sources/CNIOLinux/shim.c:25:
/Users/someuser/Developer/some-app/.build/checkouts/swift-nio/Sources/CNIOLinux/include/CNIOLinux.h:33:10: fatal error: 'linux/udp.h' file not found
33 | #include <linux/udp.h>
| ^~~~~~~~~~~~~
1 error generated.
2.72.0
tag error
$ xcrun --toolchain org.swift.600202409171a swift build --swift-sdk aarch64-swift-linux-musl
/Users/someuser/Developer/some-app/.build/checkouts/swift-nio/Sources/NIOPosix/PosixSingletons+ConcurrencyTakeOver.swift:76:12: error: conflicting arguments to generic parameter 'T' ('Optional<UnsafeRawPointer>.AtomicRepresentation' vs. 'Optional<UnsafeRawPointer>.AtomicRepresentation')
...
/Users/someuser/Developer/some-app/.build/checkouts/swift-nio/Sources/NIOPosix/PosixSingletons+ConcurrencyTakeOver.swift:112:35: error: 'nil' requires a contextual type
...
additional errors
Steps to reproduce
- Install the Swift 6 OSS toolchain + SDK (
swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a
). - A simple application using SPM with a dependency on SwiftNIO.
- Execute the following to build the application.
$ xcrun --toolchain org.swift.600202409171a swift build --swift-sdk aarch64-swift-linux-musl
See errors noted above (for both `main` and `2.72.0`)
Also, building without the Static Linux SDK succeeds:
$ xcrun --toolchain org.swift.600202409171a swift build
Building for debugging...
[215/215] Applying Demo
Build complete! (20.94s)
If possible, minimal yet complete reproducer code (or URL to code)
Here's a basic Package.swift
manifest that can be used:
// swift-tools-version: 6.0
import PackageDescription
let package = Package(
name: "Demo",
platforms: [
.macOS(.v14)
],
dependencies: [
.package(url: "https://github.com/apple/swift-nio.git", .upToNextMajor(from: "2.70.0"))
// .package(url: "https://github.com/apple/swift-nio.git", branch: "main")
],
targets: [
.executableTarget(
name: "Demo",
dependencies: [
.product(name: "NIOPosix", package: "swift-nio")
],
swiftSettings: swiftSettings
),
],
swiftLanguageModes: [
.v6
]
)
// MARK: - Swift Settings
var swiftSettings: [SwiftSetting] {
return [
.enableUpcomingFeature("ExistentialAny")
]
}
SwiftNIO version/commit hash
main
and 2.72.0
System & version information
Sonoma 14.6.1
*****
***** Swift Toolchain
***** Name: swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a
***** Path: /Library/Developer/Toolchains/swift-6.0-DEVELOPMENT-SNAPSHOT-2024-09-17-a.xctoolchain
***** ID: org.swift.600202409171a
***** SDK: aarch64-swift-linux-musl
***** SPM: Swift Package Manager - Swift 6.0.0-dev
***** Xcode: /Applications/Xcode15.4.0.app/Contents/Developer
*****
Metadata
Metadata
Assignees
Labels
No labels