Skip to content

Commit ecb56b5

Browse files
committed
[GR-52500] Set maven.repo.local for gate jobs.
PullRequest: graalpython/3225
2 parents 94550a7 + 9984abe commit ecb56b5

File tree

2 files changed

+43
-14
lines changed

2 files changed

+43
-14
lines changed

graalpython/com.oracle.graal.python.test/src/tests/standalone/test_jbang_integration.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ def setUpClass(self):
7474
return
7575
self.ensureProxy()
7676
self.ensureLocalMavenRepo()
77+
self.clearCache()
7778
self.catalog_file = self.getCatalogFile()
7879
self.registerCatalog(self.catalog_file)
7980

@@ -115,6 +116,10 @@ def ensureLocalMavenRepo(self):
115116
if MAVEN_REPO_LOCAL_URL is None:
116117
self.fail("'org.graalvm.maven.downloader.repository' is not defined")
117118

119+
def clearCache(self):
120+
command = [JBANG_CMD, "cache", "clear"]
121+
out, result = run_cmd(command)
122+
118123
def getCatalogFile(self):
119124
catalog_dir = os.path.dirname(os.path.abspath(__file__))
120125
for _ in range(5):

mx.graalpython/mx_graalpython.py

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -944,11 +944,25 @@ def graalvm_jdk():
944944
mx.run_mx(mx_args + ["graalvm-home"], out=out)
945945
return out.data.splitlines()[-1].strip()
946946

947+
def get_maven_cache():
948+
buildnr = os.environ.get('BUILD_NUMBER')
949+
# don't worry about maven.repo.local if not running on gate
950+
return os.path.join(SUITE.get_mx_output_dir(), 'm2_cache_' + buildnr) if buildnr else None
947951

948952
def deploy_local_maven_repo():
953+
env = os.environ.copy()
954+
m2_cache = get_maven_cache()
955+
if m2_cache:
956+
mvn_repo_local = f'-Dmaven.repo.local={m2_cache}'
957+
maven_opts = env.get('MAVEN_OPTS')
958+
maven_opts = maven_opts + " " + mvn_repo_local if maven_opts else mvn_repo_local
959+
env['MAVEN_OPTS'] = maven_opts
960+
mx.log(f'Added {mvn_repo_local} to MAVEN_OPTS={maven_opts}')
961+
949962
if not DISABLE_REBUILD:
950963
# build GraalPy and all the necessary dependencies, so that we can deploy them
951-
mx.run_mx(["build"])
964+
mx.run_mx(["build"], env=env)
965+
952966
# deploy maven artifacts
953967
version = GRAAL_VERSION
954968
path = os.path.join(SUITE.get_mx_output_dir(), 'public-maven-repo')
@@ -964,11 +978,16 @@ def deploy_local_maven_repo():
964978
'local',
965979
pathlib.Path(path).as_uri(),
966980
]
981+
967982
if not DISABLE_REBUILD:
968983
mx.rmtree(path, ignore_errors=True)
969984
os.mkdir(path)
970-
mx.maven_deploy(deploy_args)
971-
return path, version
985+
if m2_cache:
986+
with set_env(MAVEN_OPTS = maven_opts):
987+
mx.maven_deploy(deploy_args)
988+
else:
989+
mx.maven_deploy(deploy_args)
990+
return path, version, env
972991

973992

974993
def python_jvm(_=None):
@@ -1406,7 +1425,7 @@ def graalpython_gate_runner(args, tasks):
14061425
# JUnit tests with Maven
14071426
with Task('GraalPython integration JUnit with Maven', tasks, tags=[GraalPythonTags.junit_maven]) as task:
14081427
if task:
1409-
mvn_repo_path, artifacts_version = deploy_local_maven_repo()
1428+
mvn_repo_path, artifacts_version, env = deploy_local_maven_repo()
14101429
mvn_repo_path = pathlib.Path(mvn_repo_path).as_uri()
14111430
central_override = mx_urlrewrites.rewriteurl('https://repo1.maven.org/maven2/')
14121431
pom_path = os.path.join(SUITE.dir, 'graalpython/com.oracle.graal.python.test.integration/pom.xml')
@@ -1420,9 +1439,10 @@ def graalpython_gate_runner(args, tasks):
14201439
mx.run_maven(mvn_cmd_base + ['dependency:purge-local-repository', '-DreResolve=false'])
14211440

14221441
mx.log("Running integration JUnit tests on GraalVM SDK")
1423-
env = extend_os_env(JAVA_HOME=graalvm_jdk())
1442+
env['JAVA_HOME'] = graalvm_jdk()
14241443
mx.run_maven(mvn_cmd_base + ['-U', 'clean', 'test'], env=env)
14251444

1445+
env['JAVA_HOME'] = os.environ['JAVA_HOME']
14261446
mx.log(f"Running integration JUnit tests on vanilla JDK: {os.environ.get('JAVA_HOME', 'system java')}")
14271447
mx.run_maven(mvn_cmd_base + ['-U', '-Dpolyglot.engine.WarnInterpreterOnly=false', 'clean', 'test'])
14281448

@@ -1481,13 +1501,15 @@ def graalpython_gate_runner(args, tasks):
14811501

14821502
with Task('GraalPython standalone module tests', tasks, tags=[GraalPythonTags.unittest_standalone]) as task:
14831503
if task:
1484-
env = {
1485-
'ENABLE_STANDALONE_UNITTESTS': 'true',
1486-
'ENABLE_JBANG_INTEGRATION_UNITTESTS': 'false',
1487-
'JAVA_HOME': graalvm_jdk(),
1488-
'PYTHON_STANDALONE_HOME': graalpy_standalone_home('jvm')
1489-
}
1490-
mvn_repo_path, version = deploy_local_maven_repo()
1504+
gvm_jdk = graalvm_jdk()
1505+
standalone_home = graalpy_standalone_home('jvm')
1506+
mvn_repo_path, version, env = deploy_local_maven_repo()
1507+
1508+
env['ENABLE_STANDALONE_UNITTESTS'] = 'true'
1509+
env['ENABLE_JBANG_INTEGRATION_UNITTESTS'] ='true'
1510+
env['JAVA_HOME'] = gvm_jdk
1511+
env['PYTHON_STANDALONE_HOME'] = standalone_home
1512+
14911513
# setup maven downloader overrides
14921514
env['MAVEN_REPO_OVERRIDE'] = ",".join([
14931515
f"{pathlib.Path(mvn_repo_path).as_uri()}/",
@@ -1498,13 +1520,15 @@ def graalpython_gate_runner(args, tasks):
14981520

14991521
# setup JBang executable
15001522
env["JBANG_CMD"] = _prepare_jbang()
1523+
m2_cache = get_maven_cache()
1524+
if m2_cache:
1525+
env["JBANG_REPO"] = m2_cache
15011526

15021527
# run the test
15031528
mx.logv(f"running with os.environ extended with: {env=}")
1504-
full_env = extend_os_env(**env)
15051529
mx.run([sys.executable, _graalpytest_driver(), "-v",
15061530
"graalpython/com.oracle.graal.python.test/src/tests/standalone/test_jbang_integration.py",
1507-
"graalpython/com.oracle.graal.python.test/src/tests/standalone/test_standalone.py"], env=full_env)
1531+
"graalpython/com.oracle.graal.python.test/src/tests/standalone/test_standalone.py"], env=env)
15081532

15091533
with Task('GraalPython Python tests', tasks, tags=[GraalPythonTags.tagged]) as task:
15101534
if task:

0 commit comments

Comments
 (0)