Linux Static SDK and main-snapshot (in)compatibility?

Using

main-snapshot-2024-07-15 (installed via swiftly)

and

swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle.tar.gz

on Ubuntu 22.04 (as recommended by swift.org)

with:

swift package init --type executable
swift run --swift-sdk x86_64-swift-linux-musl -v

results in:

Swift version 6.0-dev (LLVM 0ad8ad0245d47b4, Swift 01bd2b4f8c84d45)

Target: x86_64-unknown-linux-gnu

clang version 17.0.0 (https://github.com/swiftlang/llvm-project.git 0ad8ad0245d47b47e10e286c291ef2821cdfb616)

Target: x86_64-unknown-linux-gnu

Thread model: posix

InstalledDir: {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/bin

Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11

Found candidate GCC installation: /usr/lib/gcc/x86_64-linux-gnu/9

Selected GCC installation: /usr/lib/gcc/x86_64-linux-gnu/11

Candidate multilib: .;@m64

Selected multilib: .;@m64

 "/usr/bin/ld.gold" -pie -z relro --hash-style=gnu --eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o /tmp/TemporaryDirectory.F8E4ck/test-manifest /lib/x86_64-linux-gnu/Scrt1.o /lib/x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o -L{user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/linux -L{user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/pm/ManifestAPI -L{user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/pm/ManifestAPI -L/usr/lib/gcc/x86_64-linux-gnu/11 -L/usr/lib/gcc/x86_64-linux-gnu/11/../../../../lib64 -L/lib/x86_64-linux-gnu -L/lib/../lib64 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib64 -L/lib -L/usr/lib -rpath {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/linux {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/linux/x86_64/swiftrt.o /tmp/TemporaryDirectory.SyK0R3/Package-1.o -lswiftSwiftOnoneSupport -lswiftCore -lswift_Concurrency -lswift_StringProcessing -lswift_RegexParser -lswiftCore -lPackageDescription -rpath {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/pm/ManifestAPI -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o /lib/x86_64-linux-gnu/crtn.o

Planning build

Building for debugging...

Write auxiliary file {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/swift-version-21521AF5E4BEBA1C.txt

{user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/bin/swiftc -module-name test -emit-dependencies -emit-module -emit-module-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/Modules/test.swiftmodule -output-file-map {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/test.build/output-file-map.json -incremental -c @{user_home}Code/test/.build/x86_64-swift-linux-musl/debug/test.build/sources -I {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/Modules -target x86_64-swift-linux-musl -v -enable-batch-mode -index-store-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/index/store -Onone -enable-testing -j12 -DSWIFT_PACKAGE -DDEBUG -module-cache-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/ModuleCache -resource-dir {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64/usr/lib/swift_static -parseable-output -Xfrontend -entry-point-function-name -Xfrontend test_main -color-diagnostics -swift-version 6 -static-executable -static-stdlib -tools-directory {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/swift.xctoolchain/usr/bin -sdk {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64 -g -Xcc --sysroot -Xcc {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64 -Xcc -g -package-name test -Xcc -fno-omit-frame-pointer

Swift version 6.0-dev (LLVM 0ad8ad0245d47b4, Swift 01bd2b4f8c84d45)

Target: x86_64-swift-linux-musl

{user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/bin/swift-frontend -frontend -emit-module -experimental-skip-non-inlinable-function-bodies-without-types {user_home}Code/test/Sources/main.swift -target x86_64-swift-linux-musl -disable-objc-interop -sdk {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64 -I {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/Modules -color-diagnostics -enable-testing -g -debug-info-format=dwarf -dwarf-version=4 -module-cache-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/ModuleCache -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -entry-point-function-name test_main -empty-abi-descriptor -Xcc -working-directory -Xcc {user_home}Code/test -resource-dir {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64/usr/lib/swift_static -use-static-resource-dir -enable-anonymous-context-mangled-names -file-compilation-dir {user_home}Code/test -Xcc --sysroot -Xcc {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64 -Xcc -g -Xcc -fno-omit-frame-pointer -module-name test -package-name test -in-process-plugin-server-path {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/host/libSwiftInProcPluginServer.so -plugin-path {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/host/plugins -plugin-path {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/local/lib/swift/host/plugins -emit-module-doc-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/Modules/test.swiftdoc -emit-module-source-info-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/Modules/test.swiftsourceinfo -emit-dependencies-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/test.build/test.emit-module.d -o {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/Modules/test.swiftmodule

{user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/bin/swift-frontend -frontend -c -primary-file {user_home}Code/test/Sources/main.swift -emit-dependencies-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/test.build/main.d -emit-reference-dependencies-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/test.build/main.swiftdeps -target x86_64-swift-linux-musl -disable-objc-interop -sdk {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64 -I {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/Modules -color-diagnostics -enable-testing -g -debug-info-format=dwarf -dwarf-version=4 -module-cache-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/ModuleCache -swift-version 6 -Onone -D SWIFT_PACKAGE -D DEBUG -entry-point-function-name test_main -empty-abi-descriptor -Xcc -working-directory -Xcc {user_home}Code/test -resource-dir {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64/usr/lib/swift_static -use-static-resource-dir -enable-anonymous-context-mangled-names -file-compilation-dir {user_home}Code/test -Xcc --sysroot -Xcc {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64 -Xcc -g -Xcc -fno-omit-frame-pointer -module-name test -package-name test -in-process-plugin-server-path {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/host/libSwiftInProcPluginServer.so -plugin-path {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/lib/swift/host/plugins -plugin-path {user_home}.local/share/swiftly/toolchains/main-snapshot-2024-07-15/usr/local/lib/swift/host/plugins -o {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/test.build/main.swift.o -index-store-path {user_home}Code/test/.build/x86_64-swift-linux-musl/debug/index/store -index-system-modules

<unknown>:0: error: compiled module was created by an older version of the compiler; rebuild 'Swift' and try again: {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64/usr/lib/swift_static/linux-static/Swift.swiftmodule/x86_64-swift-linux-musl.swiftmodule

error: emit-module command failed with exit code 1 (use -v to see invocation)

<unknown>:0: error: compiled module was created by an older version of the compiler; rebuild 'Swift' and try again: {user_home}.swiftpm/swift-sdks/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1.artifactbundle/swift-DEVELOPMENT-SNAPSHOT-2024-07-02-a_static-linux-0.0.1/swift-linux-musl/musl-1.2.5.sdk/x86_64/usr/lib/swift_static/linux-static/Swift.swiftmodule/x86_64-swift-linux-musl.swiftmodule

By date, the Static Linux SDK is certainly older - is this something we should be looking out for?

1 Like

And here's the answer, of course:

The toolchain must match the version of the Static Linux SDK that you install. The Static Linux SDK includes the corresponding Swift version in its filename to help identify the correct version of the SDK.

OK, got it! I know these snapshots are being created constantly - is there some reason why the Static Linux SDK releases can't keep up?

It looks like the static SDKs and that webpage link are currently manually generated occasionally, while the snapshot toolchains and links are automatically generated off of every tag. I suggest you simply download the matching snapshot toolchain from the "Older snapshots (main)" dropdown below, until the SDKs are brought up to date.

The static SDK is so old there's no matching snapshot in the older snapshots list :slightly_frowning_face: Was able to get it by editing the URL, but still unfortunate

@al45tair, is there anything holding back the static linux SDK that you put together from being automatically generated for every snapshot tag? That would avoid these issues with the static SDK tag falling weeks behind the latest snapshot tag of the toolchain.

1 Like

In principle it should track the snapshots, but because of changes made elsewhere the build is currently failing — there are people looking at what's going wrong so we should get the build back up and running fairly soon.

2 Likes