Skip to content

Commit 9db7a27

Browse files
finagolfin3405691582
authored andcommitted
Extract the ABI version from the target triple too, for Android and other platforms that use it.
1 parent f0e13a6 commit 9db7a27

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

Sources/TSCUtility/Triple.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ public struct Triple: Encodable, Equatable {
2727
public let vendor: Vendor
2828
public let os: OS
2929
public let abi: ABI
30-
public let version: String?
30+
public let osVersion: String?
31+
public let abiVersion: String?
3132

3233
public enum Error: Swift.Error {
3334
case badFormat
@@ -84,16 +85,18 @@ public struct Triple: Encodable, Equatable {
8485
throw Error.unknownOS
8586
}
8687

87-
let version = Triple.parseVersion(components[2])
88+
let osVersion = Triple.parseVersion(components[2])
8889

8990
let abi = components.count > 3 ? Triple.parseABI(components[3]) : nil
91+
let abiVersion = components.count > 3 ? Triple.parseVersion(components[3]) : nil
9092

9193
self.tripleString = string
9294
self.arch = arch
9395
self.vendor = vendor
9496
self.os = os
95-
self.version = version
97+
self.osVersion = osVersion
9698
self.abi = abi ?? .unknown
99+
self.abiVersion = abiVersion
97100
}
98101

99102
fileprivate static func parseOS(_ string: String) -> OS? {
@@ -145,7 +148,7 @@ public struct Triple: Encodable, Equatable {
145148
/// This is currently meant for Apple platforms only.
146149
public func tripleString(forPlatformVersion version: String) -> String {
147150
precondition(isDarwin())
148-
return String(self.tripleString.dropLast(self.version?.count ?? 0)) + version
151+
return String(self.tripleString.dropLast(self.osVersion?.count ?? 0)) + version
149152
}
150153

151154
public static let macOS = try! Triple("x86_64-apple-macosx")

Tests/TSCUtilityTests/TripleTests.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,18 @@ class TripleTests : XCTestCase {
1616
let linux = try? Triple("x86_64-unknown-linux-gnu")
1717
XCTAssertNotNil(linux)
1818
XCTAssertEqual(linux!.os, .linux)
19-
XCTAssertNil(linux!.version)
19+
XCTAssertNil(linux!.osVersion)
2020

2121
let macos = try? Triple("x86_64-apple-macosx10.15")
2222
XCTAssertNotNil(macos!)
23-
XCTAssertEqual(macos!.version, "10.15")
23+
XCTAssertEqual(macos!.osVersion, "10.15")
2424
let newVersion = "10.12"
2525
let tripleString = macos!.tripleString(forPlatformVersion: newVersion)
2626
XCTAssertEqual(tripleString, "x86_64-apple-macosx10.12")
27+
28+
let android = try? Triple("aarch64-unknown-linux-android24")
29+
XCTAssertNotNil(android)
30+
XCTAssertEqual(android!.os, .linux)
31+
XCTAssertEqual(android!.abiVersion, "24")
2732
}
2833
}

0 commit comments

Comments
 (0)