Skip to content

Commit 3922ef6

Browse files
committed
Enabling GraalPy on GraalOS
1 parent 0e34d95 commit 3922ef6

File tree

5 files changed

+76
-9
lines changed

5 files changed

+76
-9
lines changed

graalpython/com.oracle.graal.python.shell/src/com/oracle/graal/python/shell/GraalPythonMain.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -992,11 +992,16 @@ private void findAndApplyVenvCfg(Builder contextBuilder, String executable) {
992992
}
993993
if (Files.exists(baseExecutable)) {
994994
contextBuilder.option("python.BaseExecutable", baseExecutable.toString());
995-
/*
996-
* This is needed to support the legacy GraalVM layout where the
997-
* executable is a symlink into the 'languages' directory.
998-
*/
999-
contextBuilder.option("python.PythonHome", baseExecutable.getParent().getParent().toString());
995+
if ("/app".equals(baseExecutable.toString())) {
996+
// GraalOS case
997+
contextBuilder.option("python.PythonHome", "/");
998+
} else {
999+
/*
1000+
* This is needed to support the legacy GraalVM layout where the
1001+
* executable is a symlink into the 'languages' directory.
1002+
*/
1003+
contextBuilder.option("python.PythonHome", baseExecutable.getParent().getParent().toString());
1004+
}
10001005
}
10011006
} catch (NullPointerException | InvalidPathException ex) {
10021007
// NullPointerException covers the possible null result of getParent()

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/Python3Core.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112
import com.oracle.graal.python.builtins.modules.StringModuleBuiltins;
113113
import com.oracle.graal.python.builtins.modules.StructModuleBuiltins;
114114
import com.oracle.graal.python.builtins.modules.SysModuleBuiltins;
115+
import com.oracle.graal.python.builtins.modules.SysconfigModuleBuiltins;
115116
import com.oracle.graal.python.builtins.modules.ThreadModuleBuiltins;
116117
import com.oracle.graal.python.builtins.modules.TimeModuleBuiltins;
117118
import com.oracle.graal.python.builtins.modules.TokenizeModuleBuiltins;
@@ -568,6 +569,7 @@ private static PythonBuiltins[] initializeBuiltins(TruffleLanguage.Env env) {
568569
new WeakRefModuleBuiltins(),
569570
new ReferenceTypeBuiltins(),
570571
new TracemallocModuleBuiltins(),
572+
new SysconfigModuleBuiltins(),
571573
// contextvars
572574
new ContextVarBuiltins(),
573575
new ContextBuiltins(),
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright (c) 2025, Oracle and/or its affiliates. All rights reserved.
3+
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4+
*
5+
* The Universal Permissive License (UPL), Version 1.0
6+
*
7+
* Subject to the condition set forth below, permission is hereby granted to any
8+
* person obtaining a copy of this software, associated documentation and/or
9+
* data (collectively the "Software"), free of charge and under any and all
10+
* copyright rights in the Software, and any and all patent rights owned or
11+
* freely licensable by each licensor hereunder covering either (i) the
12+
* unmodified Software as contributed to or provided by such licensor, or (ii)
13+
* the Larger Works (as defined below), to deal in both
14+
*
15+
* (a) the Software, and
16+
*
17+
* (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
18+
* one is included with the Software each a "Larger Work" to which the Software
19+
* is contributed by such licensors),
20+
*
21+
* without restriction, including without limitation the rights to copy, create
22+
* derivative works of, display, perform, and distribute the Software and make,
23+
* use, sell, offer for sale, import, export, have made, and have sold the
24+
* Software and the Larger Work(s), and to sublicense the foregoing rights on
25+
* either these or other terms.
26+
*
27+
* This license is subject to the following condition:
28+
*
29+
* The above copyright notice and either this complete permission notice or at a
30+
* minimum a reference to the UPL must be included in all copies or substantial
31+
* portions of the Software.
32+
*
33+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
35+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
37+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
38+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
39+
* SOFTWARE.
40+
*/
41+
package com.oracle.graal.python.builtins.modules;
42+
43+
import static com.oracle.graal.python.nodes.BuiltinNames.J__SYSCONFIG;
44+
45+
import java.util.Collections;
46+
import java.util.List;
47+
48+
import com.oracle.graal.python.builtins.CoreFunctions;
49+
import com.oracle.graal.python.builtins.PythonBuiltins;
50+
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
51+
import com.oracle.truffle.api.dsl.NodeFactory;
52+
53+
@CoreFunctions(defineModule = J__SYSCONFIG, isEager = true)
54+
public final class SysconfigModuleBuiltins extends PythonBuiltins {
55+
@Override
56+
protected List<? extends NodeFactory<? extends PythonBuiltinBaseNode>> getNodeFactories() {
57+
return Collections.emptyList();
58+
}
59+
}

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,8 @@ private static TruffleString tsLiteral(String s) {
426426
public static final String J__SSL = "_ssl";
427427
public static final TruffleString T__SSL = tsLiteral(J__SSL);
428428

429-
public static final TruffleString T__SYSCONFIG = tsLiteral("_sysconfig");
429+
public static final String J__SYSCONFIG = "_sysconfig";
430+
public static final TruffleString T__SYSCONFIG = tsLiteral(J__SYSCONFIG);
430431

431432
public static final String J_READLINE = "readline";
432433
public static final TruffleString T_READLINE = tsLiteral(J_READLINE);

scripts/generate-fsmappings.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,17 +93,17 @@ cat <<EOF>> $OUTFILE
9393
{
9494
"concrete": "${MUSL_TOOLCHAIN}/lib/libc++.so.1.0",
9595
"verif": true,
96-
"virt": "/proc/lib/libc++.so.1.0"
96+
"virt": "/lib/libc++.so.1.0"
9797
},
9898
{
9999
"concrete": "${MUSL_TOOLCHAIN}/lib/libc++abi.so.1.0",
100100
"verif": true,
101-
"virt": "/proc/lib/libc++abi.so.1.0"
101+
"virt": "/lib/libc++abi.so.1.0"
102102
},
103103
{
104104
"concrete": "${MUSL_TOOLCHAIN}/lib/libunwind.so.1.0",
105105
"verif": true,
106-
"virt": "/proc/lib/libunwind.so.1.0"
106+
"virt": "/lib/libunwind.so.1.0"
107107
}
108108
]
109109
}

0 commit comments

Comments
 (0)