|
67 | 67 | # re-export custom mx project classes so they can be used from suite.py |
68 | 68 | from mx import MavenProject #pylint: disable=unused-import |
69 | 69 | from mx_cmake import CMakeNinjaProject #pylint: disable=unused-import |
70 | | -from mx_graalpython_gradleproject import GradlePluginProject #pylint: disable=unused-import |
71 | 70 |
|
72 | 71 | from mx_gate import Task |
73 | 72 | from mx_graalpython_bench_param import PATH_MESO |
@@ -941,16 +940,20 @@ def get_maven_cache(): |
941 | 940 | # don't worry about maven.repo.local if not running on gate |
942 | 941 | return os.path.join(SUITE.get_mx_output_dir(), 'm2_cache_' + buildnr) if buildnr else None |
943 | 942 |
|
944 | | -def deploy_local_maven_repo(env=None): |
945 | | - env = {**os.environ.copy(), **(env or {})} |
| 943 | +def update_maven_opts(env): |
946 | 944 | m2_cache = get_maven_cache() |
947 | 945 | if m2_cache: |
948 | 946 | mvn_repo_local = f'-Dmaven.repo.local={m2_cache}' |
949 | 947 | maven_opts = env.get('MAVEN_OPTS') |
950 | 948 | maven_opts = maven_opts + " " + mvn_repo_local if maven_opts else mvn_repo_local |
| 949 | + if mx.is_windows(): |
| 950 | + maven_opts = maven_opts.replace("|", "^|") |
951 | 951 | env['MAVEN_OPTS'] = maven_opts |
952 | | - mx.log(f'Added {mvn_repo_local} to MAVEN_OPTS={maven_opts}') |
| 952 | + mx.log(f"Added '{mvn_repo_local}' to MAVEN_OPTS={maven_opts}") |
| 953 | + return env |
953 | 954 |
|
| 955 | +def deploy_local_maven_repo(env=None): |
| 956 | + env = update_maven_opts({**os.environ.copy(), **(env or {})}) |
954 | 957 | run_mx_args = [ |
955 | 958 | '-p', |
956 | 959 | os.path.join(mx.suite('truffle').dir, '..', 'vm'), |
@@ -986,6 +989,37 @@ def deploy_local_maven_repo(env=None): |
986 | 989 | return path, version, env |
987 | 990 |
|
988 | 991 |
|
| 992 | +def deploy_graalpy_extensions_to_local_maven_repo(env=None): |
| 993 | + env = update_maven_opts({**os.environ.copy(), **(env or {})}) |
| 994 | + |
| 995 | + gradle_java_home = os.environ.get('GRADLE_JAVA_HOME') |
| 996 | + if not gradle_java_home: |
| 997 | + def abortCallback(msg): |
| 998 | + mx.abort("Could not find a JDK of version between 17 and 21 to build a Gradle plugin from graalpy-extensions.\n" |
| 999 | + "Export GRADLE_JAVA_HOME pointing to a suitable JDK or use the generic MX mechanism explained below:\n" + msg) |
| 1000 | + gradle_java_home = mx.get_tools_jdk('17..21', abortCallback=abortCallback).home |
| 1001 | + |
| 1002 | + graalpy_extensions_path = os.environ.get('GRAALPY_EXTENSIONS_PATH') |
| 1003 | + if not graalpy_extensions_path: |
| 1004 | + mx.log("Cloning graalpy-extensions. If you want to use custom local clone, set env variable GRAALPY_EXTENSIONS_PATH") |
| 1005 | + graalpy_extensions_path = os.path.join(SUITE.get_mx_output_dir(), 'graalpy-extensions') |
| 1006 | + if os.path.exists(graalpy_extensions_path): |
| 1007 | + shutil.rmtree(graalpy_extensions_path) |
| 1008 | + mx.run(['git', 'clone', '--depth=1', 'https://github.com/oracle/graalpy-extensions.git', graalpy_extensions_path]) |
| 1009 | + |
| 1010 | + local_repo_path = os.path.join(SUITE.get_mx_output_dir(), 'public-maven-repo') |
| 1011 | + version = GRAAL_VERSION |
| 1012 | + mx.run([os.path.join(graalpy_extensions_path, mx.cmd_suffix('mvnw')), |
| 1013 | + '-Pmxurlrewrite', '-DskipJavainterfacegen', '-DskipTests', '-DdeployAtEnd=true', |
| 1014 | + f'-Drevision={version}', |
| 1015 | + f'-Dlocal.repo.url=' + pathlib.Path(local_repo_path).as_uri(), |
| 1016 | + f'-DaltDeploymentRepository=local::default::file:{local_repo_path}', |
| 1017 | + f"-Dgradle.java.home={gradle_java_home}", |
| 1018 | + 'deploy'], env=env, cwd=graalpy_extensions_path) |
| 1019 | + |
| 1020 | + return local_repo_path, version, env |
| 1021 | + |
| 1022 | + |
989 | 1023 | def deploy_local_maven_repo_wrapper(*_): |
990 | 1024 | p, _, _ = deploy_local_maven_repo() |
991 | 1025 | print(f"local Maven repo path: {p}") |
@@ -1434,6 +1468,7 @@ def graalpython_gate_runner(_, tasks): |
1434 | 1468 | gvm_jdk = graalvm_jdk() |
1435 | 1469 | standalone_home = graalpy_standalone_home('jvm') |
1436 | 1470 | mvn_repo_path, version, env = deploy_local_maven_repo() |
| 1471 | + deploy_graalpy_extensions_to_local_maven_repo() |
1437 | 1472 |
|
1438 | 1473 | if RUNNING_ON_LATEST_JAVA: |
1439 | 1474 | # our standalone python binary is meant for standalone graalpy |
|
0 commit comments