Skip to content

Commit 434ad85

Browse files
committed
Align name of libpython with libhpy
1 parent 26692ef commit 434ad85

File tree

7 files changed

+29
-17
lines changed

7 files changed

+29
-17
lines changed

graalpython/com.oracle.graal.python.cext/CMakeLists.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,14 @@ if(WIN32)
3939
require_var(GRAALVM_LLVM_LIB_DIR)
4040
endif()
4141
require_var(TRUFFLE_H_INC)
42+
require_var(LLVM_MODE)
4243
require_var(GRAALPY_EXT)
4344

4445
if(NOT DEFINED SRC_DIR)
4546
set(SRC_DIR "${CMAKE_SOURCE_DIR}")
4647
endif()
4748

48-
set(TARGET_LIBPYTHON "python")
49+
set(TARGET_LIBPYTHON "python-${LLVM_MODE}")
4950

5051
######################################################################
5152
# common variables and compile/link options (for all build targets)
@@ -212,9 +213,6 @@ if(NOT WIN32)
212213
)
213214
endif()
214215

215-
# set file extension; e.g. "graalpy231-310-native-x86_64-darwin.so"
216-
set_target_properties(${TARGET_LIBPYTHON} PROPERTIES SUFFIX "${GRAALPY_EXT}")
217-
218216
target_sources(${TARGET_LIBPYTHON} PRIVATE ${SRC_FILES})
219217
target_include_directories(${TARGET_LIBPYTHON} PRIVATE
220218
"${SRC_DIR}/include/internal"

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/CApiContext.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import static com.oracle.graal.python.nodes.SpecialAttributeNames.T___LIBRARY__;
4646
import static com.oracle.graal.python.nodes.StringLiterals.J_GET_;
4747
import static com.oracle.graal.python.nodes.StringLiterals.J_LLVM_LANGUAGE;
48+
import static com.oracle.graal.python.nodes.StringLiterals.J_NATIVE;
4849
import static com.oracle.graal.python.nodes.StringLiterals.J_NFI_LANGUAGE;
4950
import static com.oracle.graal.python.nodes.StringLiterals.J_TYPE_ID;
5051
import static com.oracle.graal.python.util.PythonUtils.tsArray;
@@ -657,8 +658,9 @@ public static CApiContext ensureCapiWasLoaded(Node node, PythonContext context,
657658
Env env = context.getEnv();
658659

659660
TruffleFile homePath = env.getInternalTruffleFile(context.getCAPIHome().toJavaStringUncached());
660-
String soAbi = context.getSoAbi().toJavaStringUncached();
661-
TruffleFile capiFile = homePath.resolve("libpython" + soAbi);
661+
// e.g. "libpython-native.so"
662+
String libName = context.getLLVMSupportExt("libpython");
663+
TruffleFile capiFile = homePath.resolve(libName);
662664
try {
663665
SourceBuilder capiSrcBuilder = Source.newBuilder(J_LLVM_LANGUAGE, capiFile);
664666
if (!context.getLanguage().getEngineOption(PythonOptions.ExposeInternalSources)) {
@@ -691,7 +693,7 @@ public static CApiContext ensureCapiWasLoaded(Node node, PythonContext context,
691693
} catch (RuntimeException | UnsupportedMessageException | ArityException | UnknownIdentifierException | UnsupportedTypeException e) {
692694
// we cannot really check if we truly need native access, so
693695
// when the abi contains "managed" we assume we do not
694-
if (!soAbi.contains("managed") && !context.isNativeAccessAllowed()) {
696+
if (!libName.contains("managed") && !context.isNativeAccessAllowed()) {
695697
throw new ImportException(null, name, path, ErrorMessages.NATIVE_ACCESS_NOT_ALLOWED);
696698
}
697699
throw new ApiInitException(wrapJavaException(e, node), name, ErrorMessages.CAPI_LOAD_ERROR, capiFile.getAbsoluteFile().getPath());
@@ -986,7 +988,7 @@ public boolean ensureNative() {
986988

987989
LanguageInfo llvmInfo = env.getInternalLanguages().get(J_LLVM_LANGUAGE);
988990
Toolchain toolchain = env.lookup(llvmInfo, Toolchain.class);
989-
if (!toolchain.getIdentifier().equals("native")) {
991+
if (!J_NATIVE.equals(toolchain.getIdentifier())) {
990992
LOGGER.config("not loading native C API support library (non-native toolchain detected)");
991993
return false;
992994
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/hpy/llvm/GraalHPyLLVMContext.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,10 @@
116116
import com.oracle.truffle.api.library.ExportLibrary;
117117
import com.oracle.truffle.api.library.ExportMessage;
118118
import com.oracle.truffle.api.nodes.ExplodeLoop;
119-
import com.oracle.truffle.api.nodes.LanguageInfo;
120119
import com.oracle.truffle.api.nodes.Node;
121120
import com.oracle.truffle.api.source.Source;
122121
import com.oracle.truffle.api.source.Source.SourceBuilder;
123122
import com.oracle.truffle.api.strings.TruffleString;
124-
import com.oracle.truffle.llvm.api.Toolchain;
125123
import com.oracle.truffle.llvm.spi.NativeTypeLibrary;
126124

127125
/**
@@ -237,10 +235,8 @@ public static Object loadLLVMLibrary(PythonContext context) throws IOException {
237235
CompilerAsserts.neverPartOfCompilation();
238236
Env env = context.getEnv();
239237
TruffleFile homePath = env.getInternalTruffleFile(context.getCAPIHome().toJavaStringUncached());
240-
LanguageInfo llvmInfo = env.getInternalLanguages().get(J_LLVM_LANGUAGE);
241-
Toolchain toolchain = env.lookup(llvmInfo, Toolchain.class);
242238
// e.g. "libhpy-native.so"
243-
TruffleFile capiFile = homePath.resolve("libhpy-" + toolchain.getIdentifier() + PythonContext.getSupportExt());
239+
TruffleFile capiFile = homePath.resolve(context.getLLVMSupportExt("libhpy"));
244240
try {
245241
LOGGER.fine("Loading HPy LLVM backend from " + capiFile);
246242
SourceBuilder capiSrcBuilder = Source.newBuilder(J_LLVM_LANGUAGE, capiFile);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/StringLiterals.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ public abstract class StringLiterals {
169169
public static final String J_EXT_DYLIB = ".dylib";
170170
public static final TruffleString T_EXT_DYLIB = tsLiteral(J_EXT_DYLIB);
171171

172-
public static final TruffleString T_NATIVE = tsLiteral("native");
172+
public static final String J_NATIVE = "native";
173+
public static final TruffleString T_NATIVE = tsLiteral(J_NATIVE);
173174

174175
public static final TruffleString T_BACKSLASHREPLACE = tsLiteral("backslashreplace");
175176
public static final TruffleString T_NAMEREPLACE = tsLiteral("namereplace");

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/NFIPosixSupport.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
// skip GIL
4242
package com.oracle.graal.python.runtime;
4343

44+
import static com.oracle.graal.python.nodes.StringLiterals.J_NATIVE;
4445
import static com.oracle.graal.python.nodes.StringLiterals.J_NFI_LANGUAGE;
4546
import static com.oracle.graal.python.nodes.StringLiterals.T_LLVM_LANGUAGE;
4647
import static com.oracle.graal.python.nodes.StringLiterals.T_NATIVE;
@@ -345,7 +346,7 @@ private static String getLibPath(PythonContext context) {
345346
private static void loadLibrary(NFIPosixSupport posix) {
346347
String path = getLibPath(posix.context);
347348
String backend = posix.nfiBackend.toJavaStringUncached();
348-
String withClause = backend.equals("native") ? "" : "with " + backend;
349+
String withClause = backend.equals(J_NATIVE) ? "" : "with " + backend;
349350
String src = String.format("%sload (RTLD_LOCAL) \"%s\"", withClause, path);
350351
Source loadSrc = Source.newBuilder(J_NFI_LANGUAGE, src, "load:" + SUPPORTING_NATIVE_LIB_NAME).internal(true).build();
351352

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/PythonContext.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import static com.oracle.graal.python.nodes.StringLiterals.J_EXT_PYD;
4444
import static com.oracle.graal.python.nodes.StringLiterals.J_EXT_SO;
4545
import static com.oracle.graal.python.nodes.StringLiterals.J_LLVM_LANGUAGE;
46+
import static com.oracle.graal.python.nodes.StringLiterals.J_NATIVE;
4647
import static com.oracle.graal.python.nodes.StringLiterals.T_DASH;
4748
import static com.oracle.graal.python.nodes.StringLiterals.T_DOT;
4849
import static com.oracle.graal.python.nodes.StringLiterals.T_EMPTY_STRING;
@@ -2488,6 +2489,17 @@ public static String getSupportExt() {
24882489
};
24892490
}
24902491

2492+
@TruffleBoundary
2493+
public String getLLVMSupportExt(String libName) {
2494+
LanguageInfo llvmInfo = env.getInternalLanguages().get(J_LLVM_LANGUAGE);
2495+
Toolchain toolchain = env.lookup(llvmInfo, Toolchain.class);
2496+
String toolchainIdentifier = toolchain.getIdentifier();
2497+
if (J_NATIVE.equals(toolchainIdentifier)) {
2498+
return libName + '-' + J_NATIVE + PythonContext.getSupportExt();
2499+
}
2500+
return libName + '-' + toolchainIdentifier + J_EXT_SO;
2501+
}
2502+
24912503
@TruffleBoundary
24922504
public TruffleString getSoAbi() {
24932505
if (soABI == null) {

mx.graalpython/suite.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -548,10 +548,11 @@
548548
"GRAALVM_LLVM_LIB_DIR" : "<path:SULONG_NATIVE_HOME>/native/lib",
549549
"TRUFFLE_H_INC": "<path:SULONG_LEGACY>/include",
550550
"CMAKE_C_COMPILER": "<toolchainGetToolPath:native,CC>",
551+
"LLVM_MODE" : "native",
551552
"GRAALPY_EXT" : "<graalpy_ext:native>",
552553
},
553554
"results" : [
554-
"bin/libpython<graalpy_ext:native>",
555+
"bin/<lib:python-native>",
555556
"bin/modules/_mmap<graalpy_ext:native>",
556557
"bin/modules/_cpython_sre<graalpy_ext:native>",
557558
"bin/modules/_cpython_unicodedata<graalpy_ext:native>",
@@ -565,10 +566,11 @@
565566
"cmakeConfig" : {
566567
"TRUFFLE_H_INC": "<path:SULONG_LEGACY>/include",
567568
"CMAKE_C_COMPILER": "<toolchainGetToolPath:native,CC>",
569+
"LLVM_MODE" : "native",
568570
"GRAALPY_EXT" : "<graalpy_ext:native>",
569571
},
570572
"results" : [
571-
"bin/libpython<graalpy_ext:native>",
573+
"bin/<lib:python-native>",
572574
"bin/modules/_mmap<graalpy_ext:native>",
573575
"bin/modules/_cpython_sre<graalpy_ext:native>",
574576
"bin/modules/_cpython_unicodedata<graalpy_ext:native>",

0 commit comments

Comments
 (0)