From 4ab3a8119d3c18e0714f36995c0b0a38acf1be80 Mon Sep 17 00:00:00 2001 From: Dianna Ma Date: Tue, 21 Jan 2025 01:48:12 +0000 Subject: [PATCH] use Ubuntu 22.04 artifact on Ubuntu 24.04 --- .../SwiftToolchain/ToolchainManagement.swift | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/Sources/SwiftToolchain/ToolchainManagement.swift b/Sources/SwiftToolchain/ToolchainManagement.swift index a8320b09..0ab3f689 100644 --- a/Sources/SwiftToolchain/ToolchainManagement.swift +++ b/Sources/SwiftToolchain/ToolchainManagement.swift @@ -213,7 +213,7 @@ public class ToolchainSystem { #if os(macOS) let platformSuffixes = ["osx", "catalina", "macos"] #elseif os(Linux) - let platformSuffixes = ["linux", try self.inferLinuxDistributionSuffix()] + let platformSuffixes = ["linux", try self.inferLinuxAssetSuffix()] #endif terminal.logLookup( @@ -227,7 +227,7 @@ public class ToolchainSystem { }.first } - private func inferLinuxDistributionSuffix() throws -> String { + private func inferLinuxAssetSuffix() throws -> String { guard let releaseFile = [ URL(fileURLWithPath: "/etc/lsb-release"), @@ -237,18 +237,32 @@ public class ToolchainSystem { throw ToolchainError.unsupportedOperatingSystem } - let releaseData = try String(contentsOf: releaseFile) - if releaseData.contains("DISTRIB_RELEASE=18.04") { - return "ubuntu18.04" - } else if releaseData.contains("DISTRIB_RELEASE=20.04") { - return "ubuntu20.04" - } else if releaseData.contains("DISTRIB_RELEASE=22.04") { - return "ubuntu22.04" - } else if releaseData.contains(#"PRETTY_NAME="Amazon Linux 2""#) { + let releaseData = try String(contentsOf: releaseFile).split(whereSeparator: \.isNewline) + if releaseData.contains(#"PRETTY_NAME="Amazon Linux 2""#) { return "amazonlinux2" - } else { + } else if releaseData.contains("DISTRIB_ID=Ubuntu") { + for line in releaseData { + if let equals = line.firstIndex(of: "="), + case "DISTRIB_RELEASE" = line[..