Skip to content

Commit 9196094

Browse files
committed
fix the imported _Subprocess build on Linux
1 parent 82749b1 commit 9196094

File tree

4 files changed

+34
-28
lines changed

4 files changed

+34
-28
lines changed

Sources/JavaKitMacros/JavaClassMacro.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import SwiftSyntax
1515
import SwiftSyntaxBuilder
1616
import SwiftSyntaxMacros
17+
import Foundation // for e.g. replacingOccurrences
1718

1819
enum JavaClassMacro {}
1920

Sources/_Subprocess/Platforms/Subprocess+Linux.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ extension Subprocess.Configuration {
4141
}
4242

4343
let fileDescriptors: [CInt] = [
44-
input.getReadFileDescriptor().rawValue, input.getWriteFileDescriptor()?.rawValue ?? 0,
45-
output.getWriteFileDescriptor().rawValue, output.getReadFileDescriptor()?.rawValue ?? 0,
46-
error.getWriteFileDescriptor().rawValue, error.getReadFileDescriptor()?.rawValue ?? 0,
44+
input.getReadFileDescriptor()!.rawValue, input.getWriteFileDescriptor()?.rawValue ?? 0,
45+
output.getWriteFileDescriptor()!.rawValue, output.getReadFileDescriptor()?.rawValue ?? 0,
46+
error.getWriteFileDescriptor()!.rawValue, error.getReadFileDescriptor()?.rawValue ?? 0,
4747
]
4848

4949
var workingDirectory: String?

Sources/_Subprocess/Platforms/Subprocess+Unix.swift

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -283,38 +283,41 @@ extension Subprocess.Configuration {
283283
internal func monitorProcessTermination(
284284
forProcessWithIdentifier pid: Subprocess.ProcessIdentifier
285285
) async -> Subprocess.TerminationStatus {
286-
return await withCheckedContinuation { continuation in
287-
let source = DispatchSource.makeProcessSource(
288-
identifier: pid.value,
289-
eventMask: [.exit, .signal]
290-
)
291-
source.setEventHandler {
292-
source.cancel()
293-
var status: Int32 = -1
294-
waitpid(pid.value, &status, 0)
295-
if _was_process_exited(status) != 0 {
296-
continuation.resume(returning: .exited(_get_exit_code(status)))
297-
return
298-
}
299-
if _was_process_signaled(status) != 0 {
300-
continuation.resume(returning: .unhandledException(_get_signal_code(status)))
301-
return
302-
}
303-
fatalError("Unexpected exit status type: \(status)")
304-
}
305-
source.resume()
306-
}
286+
// FIXME: makeProcessSource seems to not be available, disable for now as we don't use this API
287+
fatalError("Not implemented. Missing makeProcessSource")
288+
// return await withCheckedContinuation { continuation in
289+
// let source = DispatchSource.makeProcessSource(
290+
// identifier: pid.value,
291+
// eventMask: [.exit, .signal]
292+
// )
293+
// source.setEventHandler {
294+
// source.cancel()
295+
// var status: Int32 = -1
296+
// waitpid(pid.value, &status, 0)
297+
// if _was_process_exited(status) != 0 {
298+
// continuation.resume(returning: .exited(_get_exit_code(status)))
299+
// return
300+
// }
301+
// if _was_process_signaled(status) != 0 {
302+
// continuation.resume(returning: .unhandledException(_get_signal_code(status)))
303+
// return
304+
// }
305+
// fatalError("Unexpected exit status type: \(status)")
306+
// }
307+
// source.resume()
308+
// }
307309
}
308310

309311
// MARK: - Read Buffer Size
310312
extension Subprocess {
311313
@inline(__always)
312314
internal static var readBufferSize: Int {
313-
#if canImport(Darwin)
315+
// FIXME: Platform is not available, not a bug issue, just ignore for now
316+
// #if canImport(Darwin)
314317
return 16384
315-
#else
316-
return Platform.pageSize
317-
#endif // canImport(Darwin)
318+
// #else
319+
// return Platform.pageSize
320+
// #endif // canImport(Darwin)
318321
}
319322
}
320323

Sources/_SubprocessCShims/process_shims.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
#include "include/process_shims.h"
1414
#include <errno.h>
1515
#include <signal.h>
16+
#include <spawn.h>
17+
#include <grp.h>
1618
#include <sys/wait.h>
1719

1820
int _was_process_exited(int status) {

0 commit comments

Comments
 (0)