Skip to content

Commit d10869e

Browse files
committed
Pull and build graalpy-extensions as part of standalone tests
1 parent 89e7cce commit d10869e

File tree

3 files changed

+41
-439
lines changed

3 files changed

+41
-439
lines changed

ci/python-gate.libsonnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@
100100
},
101101
windows: {
102102
common: {
103-
MAVEN_HOME: {name: 'maven', version: '3.3.9', platformspecific: false},
103+
MAVEN_HOME: {name: 'maven', version: '3.9.10', platformspecific: false},
104104
},
105105
amd64: {},
106106
aarch64: {},

mx.graalpython/mx_graalpython.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,6 @@
6767
# re-export custom mx project classes so they can be used from suite.py
6868
from mx import MavenProject #pylint: disable=unused-import
6969
from mx_cmake import CMakeNinjaProject #pylint: disable=unused-import
70-
from mx_graalpython_gradleproject import GradlePluginProject #pylint: disable=unused-import
7170

7271
from mx_gate import Task
7372
from mx_graalpython_bench_param import PATH_MESO
@@ -989,6 +988,45 @@ def deploy_local_maven_repo(env=None):
989988
return path, version, env
990989

991990

991+
def deploy_graalpy_extensions_to_local_maven_repo(env=None):
992+
env = {**os.environ.copy(), **(env or {})}
993+
m2_cache = get_maven_cache()
994+
if m2_cache:
995+
mvn_repo_local = f'-Dmaven.repo.local={m2_cache}'
996+
maven_opts = env.get('MAVEN_OPTS')
997+
maven_opts = maven_opts + " " + mvn_repo_local if maven_opts else mvn_repo_local
998+
env['MAVEN_OPTS'] = maven_opts
999+
mx.log(f'Added {mvn_repo_local} to MAVEN_OPTS={maven_opts}')
1000+
1001+
gradle_java_home = os.environ.get('GRADLE_JAVA_HOME')
1002+
if not gradle_java_home:
1003+
def abortCallback(msg):
1004+
mx.abort("Could not find a JDK of version between 17 and 21 to build a Gradle plugin from graalpy-extensions.\n"
1005+
"Export GRADLE_JAVA_HOME pointing to a suitable JDK or use the generic MX mechanism explained below:\n" + msg)
1006+
gradle_java_home = mx.get_tools_jdk('17..21', abortCallback=abortCallback).home
1007+
1008+
graalpy_extensions_path = os.environ.get('GRAALPY_EXTENSIONS_PATH')
1009+
if not graalpy_extensions_path:
1010+
mx.log("Cloning graalpy-extensions. If you want to use custom local clone, set env variable GRAALPY_EXTENSIONS_PATH")
1011+
graalpy_extensions_path = os.path.join(SUITE.get_mx_output_dir(), 'graalpy-extensions')
1012+
if os.path.exists(graalpy_extensions_path):
1013+
shutil.rmtree(graalpy_extensions_path)
1014+
mx.run(['git', 'clone', '--depth=1', 'https://github.com/oracle/graalpy-extensions.git', graalpy_extensions_path])
1015+
1016+
local_repo_path = os.path.join(SUITE.get_mx_output_dir(), 'public-maven-repo')
1017+
version = GRAAL_VERSION
1018+
# Note: running the maven wrapper causes some issues in the CI around MAVEN_OPTS
1019+
mx.run_maven(['-f', os.path.join(graalpy_extensions_path, 'pom.xml'),
1020+
'-Pmxurlrewrite', '-DskipJavainterfacegen', '-DskipTests', '-DdeployAtEnd=true',
1021+
f'-Drevision={version}',
1022+
f'-Dlocal.repo.url=' + pathlib.Path(local_repo_path).as_uri(),
1023+
f'-DaltDeploymentRepository=local::default::file:{local_repo_path}',
1024+
f"-Dgradle.java.home={gradle_java_home}",
1025+
'deploy'], env=env, cwd=graalpy_extensions_path)
1026+
1027+
return local_repo_path, version, env
1028+
1029+
9921030
def deploy_local_maven_repo_wrapper(*_):
9931031
p, _, _ = deploy_local_maven_repo()
9941032
print(f"local Maven repo path: {p}")
@@ -1437,6 +1475,7 @@ def graalpython_gate_runner(_, tasks):
14371475
gvm_jdk = graalvm_jdk()
14381476
standalone_home = graalpy_standalone_home('jvm')
14391477
mvn_repo_path, version, env = deploy_local_maven_repo()
1478+
deploy_graalpy_extensions_to_local_maven_repo()
14401479

14411480
if RUNNING_ON_LATEST_JAVA:
14421481
# our standalone python binary is meant for standalone graalpy

0 commit comments

Comments
 (0)