Skip to content
This repository was archived by the owner on Apr 21, 2023. It is now read-only.

Commit e49b245

Browse files
committed
[PythonKit] Fixed Darwin pre-linked Python support
1 parent de53022 commit e49b245

File tree

1 file changed

+11
-9
lines changed

1 file changed

+11
-9
lines changed

PythonKit/PythonLibrary.swift

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,20 @@ import WinSDK
2727
// The `PythonLibrary` struct that loads Python symbols at runtime.
2828
//===----------------------------------------------------------------------===//
2929

30-
#if canImport(Darwin)
31-
let RTLD_DEFAULT = UnsafeMutableRawPointer(bitPattern: -2)
32-
#else
33-
let RTLD_DEFAULT: UnsafeMutableRawPointer? = nil
34-
#endif
35-
3630
public struct PythonLibrary {
3731
private static let shared = PythonLibrary()
3832
private static let pythonInitializeSymbolName = "Py_Initialize"
3933
private static let pythonLegacySymbolName = "PyString_AsString"
4034
private static var librarySymbolsLoaded = false
4135

36+
#if canImport(Darwin)
37+
private static let defaultLibraryHandle = UnsafeMutableRawPointer(bitPattern: -2) // RTLD_DEFAULT
38+
#elseif canImport(Glibc)
39+
private static let defaultLibraryHandle: UnsafeMutableRawPointer? = nil // RTLD_DEFAULT
40+
#elseif os(Windows)
41+
private static let defaultLibraryHandle: UnsafeMutableRawPointer? = nil // Unsupported
42+
#endif
43+
4244
private let pythonLibraryHandle: UnsafeMutableRawPointer?
4345
private let isLegacyPython: Bool
4446

@@ -167,7 +169,7 @@ private extension PythonLibrary {
167169
#endif
168170

169171
private static var isPythonLibraryPreloaded: Bool {
170-
return self.loadSymbol(RTLD_DEFAULT, self.pythonInitializeSymbolName) != nil
172+
return self.loadSymbol(self.defaultLibraryHandle, self.pythonInitializeSymbolName) != nil
171173
}
172174

173175
static let libraryPaths: [String] = {
@@ -183,10 +185,10 @@ private extension PythonLibrary {
183185
}
184186
return libraryPaths
185187
}()
186-
188+
187189
static func loadPythonLibrary() -> UnsafeMutableRawPointer? {
188190
if self.isPythonLibraryPreloaded {
189-
return RTLD_DEFAULT
191+
return self.defaultLibraryHandle
190192
}
191193
else if let pythonLibraryPath = Environment.library.value {
192194
return self.loadPythonLibrary(at: pythonLibraryPath)

0 commit comments

Comments
 (0)