Skip to content

Commit b95a058

Browse files
committed
Setup a basic run of cmake-smoke-test in CI
1 parent a3caaf5 commit b95a058

File tree

2 files changed

+35
-18
lines changed

2 files changed

+35
-18
lines changed

.github/workflows/pull_request.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,21 @@ jobs:
4545
linux_swift_versions: '["nightly-main", "nightly-6.2"]'
4646
windows_swift_versions: '["nightly-main"]'
4747
windows_build_command: 'swift test --no-parallel'
48+
cmake-smoke-test:
49+
name: cmake-smoke-test
50+
uses: swiftlang/github-workflows/.github/workflows/swift_package_test.yml@main
51+
with:
52+
linux_os_versions: '["noble"]'
53+
linux_pre_build_command: |
54+
apt-get update -y
55+
56+
# Build dependencies
57+
apt-get install -y libsqlite3-dev libncurses-dev
58+
59+
apt-get install -y cmake ninja-build
60+
linux_build_command: 'TERM=xterm-256color swift package cmake-smoke-test --disable-sandbox --cmake-path `which cmake` --ninja-path `which ninja`'
61+
linux_swift_versions: '["nightly-main"]'
62+
windows_swift_versions: '[]'
4863
soundness:
4964
name: Soundness
5065
uses: swiftlang/github-workflows/.github/workflows/soundness.yml@main

Plugins/cmake-smoke-test/cmake-smoke-test.swift

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,21 @@ struct CMakeSmokeTest: CommandPlugin {
2424
}
2525

2626
guard let cmakePath = args.extractOption(named: "cmake-path").last else { throw Errors.missingRequiredOption("--cmake-path") }
27-
print("using cmake at \(cmakePath)")
27+
Diagnostics.progress("using cmake at \(cmakePath)")
2828
let cmakeURL = URL(filePath: cmakePath)
2929
guard let ninjaPath = args.extractOption(named: "ninja-path").last else { throw Errors.missingRequiredOption("--ninja-path") }
30-
print("using ninja at \(ninjaPath)")
30+
Diagnostics.progress("using ninja at \(ninjaPath)")
3131
let ninjaURL = URL(filePath: ninjaPath)
3232
let sysrootPath = args.extractOption(named: "sysroot-path").last
3333
if let sysrootPath {
34-
print("using sysroot at \(sysrootPath)")
34+
Diagnostics.progress("using sysroot at \(sysrootPath)")
3535
}
3636

3737
let moduleCachePath = context.pluginWorkDirectoryURL.appending(component: "module-cache").path()
3838

3939
let swiftBuildURL = context.package.directoryURL
4040
let swiftBuildBuildURL = context.pluginWorkDirectoryURL.appending(component: "swift-build")
41-
print("swift-build: \(swiftBuildURL.path())")
41+
Diagnostics.progress("swift-build: \(swiftBuildURL.path())")
4242

4343
let swiftToolsSupportCoreURL = try findDependency("swift-tools-support-core", pluginContext: context)
4444
let swiftToolsSupportCoreBuildURL = context.pluginWorkDirectoryURL.appending(component: "swift-tools-support-core")
@@ -82,37 +82,37 @@ struct CMakeSmokeTest: CommandPlugin {
8282
"-DCMAKE_Swift_FLAGS='\(sharedSwiftFlags.joined(separator: " "))'"
8383
] + cMakeProjectArgs
8484

85-
print("Building swift-tools-support-core")
85+
Diagnostics.progress("Building swift-tools-support-core")
8686
try await Process.checkNonZeroExit(url: cmakeURL, arguments: sharedCMakeArgs + [swiftToolsSupportCoreURL.path()], workingDirectory: swiftToolsSupportCoreBuildURL)
8787
try await Process.checkNonZeroExit(url: ninjaURL, arguments: [], workingDirectory: swiftToolsSupportCoreBuildURL)
88-
print("Built swift-tools-support-core")
88+
Diagnostics.progress("Built swift-tools-support-core")
8989

9090
if hostOS != .macOS {
91-
print("Building swift-system")
91+
Diagnostics.progress("Building swift-system")
9292
try await Process.checkNonZeroExit(url: cmakeURL, arguments: sharedCMakeArgs + [swiftSystemURL.path()], workingDirectory: swiftSystemBuildURL)
9393
try await Process.checkNonZeroExit(url: ninjaURL, arguments: [], workingDirectory: swiftSystemBuildURL)
94-
print("Built swift-system")
94+
Diagnostics.progress("Built swift-system")
9595
}
9696

97-
print("Building llbuild")
97+
Diagnostics.progress("Building llbuild")
9898
try await Process.checkNonZeroExit(url: cmakeURL, arguments: sharedCMakeArgs + ["-DLLBUILD_SUPPORT_BINDINGS:=Swift", llbuildURL.path()], workingDirectory: llbuildBuildURL)
9999
try await Process.checkNonZeroExit(url: ninjaURL, arguments: [], workingDirectory: llbuildBuildURL)
100-
print("Built llbuild")
100+
Diagnostics.progress("Built llbuild")
101101

102-
print("Building swift-argument-parser")
102+
Diagnostics.progress("Building swift-argument-parser")
103103
try await Process.checkNonZeroExit(url: cmakeURL, arguments: sharedCMakeArgs + ["-DBUILD_TESTING=NO", "-DBUILD_EXAMPLES=NO", swiftArgumentParserURL.path()], workingDirectory: swiftArgumentParserBuildURL)
104104
try await Process.checkNonZeroExit(url: ninjaURL, arguments: [], workingDirectory: swiftArgumentParserBuildURL)
105-
print("Built swift-argument-parser")
105+
Diagnostics.progress("Built swift-argument-parser")
106106

107-
print("Building swift-driver")
107+
Diagnostics.progress("Building swift-driver")
108108
try await Process.checkNonZeroExit(url: cmakeURL, arguments: sharedCMakeArgs + [swiftDriverURL.path()], workingDirectory: swiftDriverBuildURL)
109109
try await Process.checkNonZeroExit(url: ninjaURL, arguments: [], workingDirectory: swiftDriverBuildURL)
110-
print("Built swift-driver")
110+
Diagnostics.progress("Built swift-driver")
111111

112-
print("Building swift-build in \(swiftBuildBuildURL)")
112+
Diagnostics.progress("Building swift-build in \(swiftBuildBuildURL)")
113113
try await Process.checkNonZeroExit(url: cmakeURL, arguments: sharedCMakeArgs + [swiftBuildURL.path()], workingDirectory: swiftBuildBuildURL)
114114
try await Process.checkNonZeroExit(url: ninjaURL, arguments: [], workingDirectory: swiftBuildBuildURL)
115-
print("Built swift-build")
115+
Diagnostics.progress("Built swift-build")
116116
}
117117

118118
func findDependency(_ name: String, pluginContext: PluginContext) throws -> URL {
@@ -132,7 +132,7 @@ struct CMakeSmokeTest: CommandPlugin {
132132
throw Errors.missingRepository(name)
133133
}
134134
let dependencyURL = dependency.directoryURL
135-
print("\(name): \(dependencyURL.path())")
135+
Diagnostics.progress("\(name): \(dependencyURL.path())")
136136
guard FileManager.default.fileExists(atPath: dependencyURL.path()) else {
137137
throw Errors.missingRepository(dependencyURL.path())
138138
}
@@ -182,12 +182,14 @@ extension Process {
182182
}
183183

184184
static func checkNonZeroExit(url: URL, arguments: [String], workingDirectory: URL, environment: [String: String]? = nil) async throws {
185-
print("\(url.path()) \(arguments.joined(separator: " "))")
185+
Diagnostics.progress("\(url.path()) \(arguments.joined(separator: " "))")
186186
let process = Process()
187187
process.executableURL = url
188188
process.arguments = arguments
189189
process.currentDirectoryURL = workingDirectory
190190
process.environment = environment
191+
process.standardOutput = nil
192+
process.standardError = nil
191193
try await process.run()
192194
if process.terminationStatus != 0 {
193195
throw Errors.processError(terminationReason: process.terminationReason, terminationStatus: process.terminationStatus)

0 commit comments

Comments
 (0)