diff --git a/Sources/SwiftSDKGenerator/PlatformModels/LinuxDistribution.swift b/Sources/SwiftSDKGenerator/PlatformModels/LinuxDistribution.swift index 9f9cd96..c82835b 100644 --- a/Sources/SwiftSDKGenerator/PlatformModels/LinuxDistribution.swift +++ b/Sources/SwiftSDKGenerator/PlatformModels/LinuxDistribution.swift @@ -93,11 +93,13 @@ public enum LinuxDistribution: Hashable, Sendable { public enum Debian: String, Sendable { case bullseye case bookworm + case trixie init(version: String) throws { switch version { case "11": self = .bullseye case "12": self = .bookworm + case "13": self = .trixie default: throw GeneratorError.unknownLinuxDistribution( name: LinuxDistribution.Name.debian.rawValue, @@ -110,6 +112,7 @@ public enum LinuxDistribution: Hashable, Sendable { switch self { case .bullseye: return "11" case .bookworm: return "12" + case .trixie: return "13" } } @@ -142,6 +145,13 @@ public enum LinuxDistribution: Hashable, Sendable { "libicu-dev", "libstdc++-12-dev", ] + case .trixie: + return commonPackages + [ + "libgcc-14-dev", + "libicu76", + "libicu-dev", + "libstdc++-14-dev", + ] } } } diff --git a/Sources/SwiftSDKGenerator/PlatformModels/VersionsConfiguration.swift b/Sources/SwiftSDKGenerator/PlatformModels/VersionsConfiguration.swift index 3459126..65586e9 100644 --- a/Sources/SwiftSDKGenerator/PlatformModels/VersionsConfiguration.swift +++ b/Sources/SwiftSDKGenerator/PlatformModels/VersionsConfiguration.swift @@ -50,6 +50,9 @@ public struct VersionsConfiguration: Sendable { } else if self.swiftVersion.hasPrefix("5.9") || self.swiftVersion == "5.10" { // Ubuntu 22.04 toolchain is binary compatible with Debian 12 return "ubuntu22.04" + } else if debian.version == "13" { + // Ubuntu 24.04 toolchain is binary compatible with Debian 13 + return "ubuntu24.04" } return "debian\(debian.version)" case let .rhel(rhel): diff --git a/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift b/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift index f15a9b3..3d4e64c 100644 --- a/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift +++ b/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift @@ -679,8 +679,22 @@ final class Swift510_DebianEndToEndTests: XCTestCase { ) } - // NOTE: Debian 11 containers do not exist for Swift, and the generator does not support - // generating this container for you automatically, so we do not test this scenario. + func testTrixieAarch64Direct() async throws { + try skipSlow() + try await buildTestcases( + config: config.withLinuxDistributionVersion("13").withArchitecture("aarch64") + ) + } + + func testTrixieX86_64Direct() async throws { + try skipSlow() + try await buildTestcases( + config: config.withLinuxDistributionVersion("13").withArchitecture("x86_64") + ) + } + + // NOTE: Debian 11 and 13 containers do not exist for Swift, and the generator does not + // support creating this container for you automatically, so we do not test this scenario. } final class Swift60_DebianEndToEndTests: XCTestCase { @@ -726,8 +740,22 @@ final class Swift60_DebianEndToEndTests: XCTestCase { ) } - // NOTE: Debian 11 containers do not exist for Swift, and the generator does not support - // generating this container for you automatically, so we do not test this scenario. + func testTrixieAarch64Direct() async throws { + try skipSlow() + try await buildTestcases( + config: config.withLinuxDistributionVersion("13").withArchitecture("aarch64") + ) + } + + func testTrixieX86_64Direct() async throws { + try skipSlow() + try await buildTestcases( + config: config.withLinuxDistributionVersion("13").withArchitecture("x86_64") + ) + } + + // NOTE: Debian 11 and 13 containers do not exist for Swift, and the generator does not + // support creating this container for you automatically, so we do not test this scenario. } final class Swift61_DebianEndToEndTests: XCTestCase { @@ -773,8 +801,22 @@ final class Swift61_DebianEndToEndTests: XCTestCase { ) } - // NOTE: Debian 11 containers do not exist for Swift, and the generator does not support - // generating this container for you automatically, so we do not test this scenario. + func testTrixieAarch64Direct() async throws { + try skipSlow() + try await buildTestcases( + config: config.withLinuxDistributionVersion("13").withArchitecture("aarch64") + ) + } + + func testTrixieX86_64Direct() async throws { + try skipSlow() + try await buildTestcases( + config: config.withLinuxDistributionVersion("13").withArchitecture("x86_64") + ) + } + + // NOTE: Debian 11 and 13 containers do not exist for Swift, and the generator does not + // support creating this container for you automatically, so we do not test this scenario. } final class Swift62_DebianEndToEndTests: XCTestCase { @@ -820,8 +862,22 @@ final class Swift62_DebianEndToEndTests: XCTestCase { ) } - // NOTE: Debian 11 containers do not exist for Swift, and the generator does not support - // generating this container for you automatically, so we do not test this scenario. + func testTrixieAarch64Direct() async throws { + try skipSlow() + try await buildTestcases( + config: config.withLinuxDistributionVersion("13").withArchitecture("aarch64") + ) + } + + func testTrixieX86_64Direct() async throws { + try skipSlow() + try await buildTestcases( + config: config.withLinuxDistributionVersion("13").withArchitecture("x86_64") + ) + } + + // NOTE: Debian 11 and 13 containers do not exist for Swift, and the generator does not + // support creating this container for you automatically, so we do not test this scenario. } final class Swift59_RHELEndToEndTests: XCTestCase {