@@ -680,6 +680,8 @@ class GraalPythonTags(object):
680680 unittest_hpy_sandboxed = 'python-unittest-hpy-sandboxed'
681681 unittest_posix = 'python-unittest-posix'
682682 unittest_standalone = 'python-unittest-standalone'
683+ unittest_gradle_plugin = 'python-unittest-gradle-plugin'
684+ unittest_maven_plugin = 'python-unittest-maven-plugin'
683685 ginstall = 'python-ginstall'
684686 tagged = 'python-tagged-unittest'
685687 svmunit = 'python-svm-unittest'
@@ -764,7 +766,7 @@ def graalpy_standalone_home(standalone_type, enterprise=False, dev=False, build=
764766 python_home = os .path .abspath (glob .glob (python_home )[0 ])
765767 mx .log ("Using GraalPy standalone from GRAALPY_HOME: " + python_home )
766768 # Try to verify that we're getting what we expect:
767- has_java = os .path .exists (os .path .join (python_home , 'jvm' , 'bin' , 'java' ))
769+ has_java = os .path .exists (os .path .join (python_home , 'jvm' , 'bin' , 'java.exe' if WIN32 else 'java ' ))
768770 if has_java != (standalone_type == 'jvm' ):
769771 mx .abort (f"GRAALPY_HOME is not compatible with the requested distribution type.\n "
770772 f"jvm/bin/java exists?: { has_java } , requested type={ standalone_type } ." )
@@ -855,6 +857,48 @@ def graalpy_standalone_native_enterprise():
855857
856858
857859def graalvm_jdk ():
860+ jdk_version = mx .get_jdk ().version
861+
862+ # Check if GRAAL_JDK_HOME points to some compatible pre-built gvm
863+ graal_jdk_home = os .environ .get ("GRAAL_JDK_HOME" , None )
864+ if graal_jdk_home and "*" in graal_jdk_home :
865+ graal_jdk_home = os .path .abspath (glob .glob (graal_jdk_home )[0 ])
866+ if sys .platform == "darwin" :
867+ graal_jdk_home = os .path .join (graal_jdk_home , 'Contents' , 'Home' )
868+ mx .log ("Using GraalPy standalone from GRAAL_JDK_HOME: " + graal_jdk_home )
869+
870+ # Try to verify that we're getting what we expect:
871+ has_java = os .path .exists (os .path .join (graal_jdk_home , 'bin' , 'java.exe' if WIN32 else 'java' ))
872+ if not has_java :
873+ mx .abort (f"GRAAL_JDK_HOME does not contain java executable." )
874+
875+ release = os .path .join (graal_jdk_home , 'release' )
876+ if not os .path .exists (release ):
877+ mx .abort (f"No 'release' file in GRAAL_JDK_HOME." )
878+
879+ java_version = None
880+ implementor = None
881+ with open (release , 'r' ) as f :
882+ while not (java_version and implementor ):
883+ line = f .readline ()
884+ if 'JAVA_VERSION=' in line :
885+ java_version = line
886+ if 'IMPLEMENTOR=' in line :
887+ implementor = line
888+
889+ if not java_version :
890+ mx .abort (f"Could not check Java version in GRAAL_JDK_HOME 'release' file." )
891+ actual_jdk_version = mx .VersionSpec (java_version .strip ('JAVA_VERSION=' ).strip (' "\n \r ' ))
892+ if actual_jdk_version != jdk_version :
893+ mx .abort (f"GRAAL_JDK_HOME is not compatible with the requested JDK version.\n "
894+ f"actual version: '{ actual_jdk_version } ', version string: { java_version } , requested version: { jdk_version } ." )
895+
896+ if not implementor :
897+ mx .abort (f"Could not check implementor in GRAAL_JDK_HOME 'release' file." )
898+ if 'GraalVM' not in implementor :
899+ mx .abort (f"GRAAL_JDK_HOME 'releases' has an unexpected implementor: '{ implementor } '." )
900+ return graal_jdk_home
901+
858902 jdk_major_version = mx .get_jdk ().version .parts [0 ]
859903 mx_args = ['-p' , os .path .join (mx .suite ('truffle' ).dir , '..' , 'vm' ), '--env' , 'ce' ]
860904 if not DISABLE_REBUILD :
@@ -1379,12 +1423,7 @@ def graalpython_gate_runner(args, tasks):
13791423 standalone_home = graalpy_standalone_home ('jvm' )
13801424 mvn_repo_path , version , env = deploy_local_maven_repo ()
13811425
1382- # in order to run gradle we need a jdk <= 22
1383- env ['GRADLE_JAVA_HOME' ] = env .get ('JAVA_HOME' )
1384-
13851426 env ['ENABLE_STANDALONE_UNITTESTS' ] = 'true'
1386- env ['ENABLE_GRADLE_PLUGIN_UNITTESTS' ] = 'true'
1387- env ['ENABLE_MAVEN_PLUGIN_UNITTESTS' ] = 'true'
13881427 env ['ENABLE_JBANG_INTEGRATION_UNITTESTS' ] = 'true'
13891428 env ['JAVA_HOME' ] = gvm_jdk
13901429 env ['PYTHON_STANDALONE_HOME' ] = standalone_home
@@ -1395,14 +1434,6 @@ def graalpython_gate_runner(args, tasks):
13951434 mx_urlrewrites .rewriteurl ('https://repo1.maven.org/maven2/' ),
13961435 ])
13971436
1398- urls = get_wrapper_urls ("graalpython/com.oracle.graal.python.test/src/tests/standalone/mvnw/.mvn/wrapper/maven-wrapper.properties" , ["distributionUrl" ])
1399- if "distributionUrl" in urls :
1400- env ["MAVEN_DISTRIBUTION_URL_OVERRIDE" ] = mx_urlrewrites .rewriteurl (urls ["distributionUrl" ])
1401-
1402- urls = get_wrapper_urls ("graalpython/com.oracle.graal.python.test/src/tests/standalone/gradle/gradle-test-project/gradle/wrapper/gradle-wrapper.properties" , ["distributionUrl" ])
1403- if "distributionUrl" in urls :
1404- env ["GRADLE_DISTRIBUTION_URL_OVERRIDE" ] = mx_urlrewrites .rewriteurl (urls ["distributionUrl" ])
1405-
14061437 env ["org.graalvm.maven.downloader.version" ] = version
14071438 env ["org.graalvm.maven.downloader.repository" ] = f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /"
14081439
@@ -1416,7 +1447,74 @@ def graalpython_gate_runner(args, tasks):
14161447 mx .logv (f"running with os.environ extended with: { env = } " )
14171448 run_python_unittests (
14181449 os .path .join (standalone_home , 'bin' , _graalpy_launcher ()),
1419- paths = ["graalpython/com.oracle.graal.python.test/src/tests/standalone" ],
1450+ paths = ["graalpython/com.oracle.graal.python.test/src/tests/standalone/test_jbang_integration.py" ,
1451+ "graalpython/com.oracle.graal.python.test/src/tests/standalone/test_standalone.py" ],
1452+ env = env ,
1453+ parallel = 3 ,
1454+ )
1455+
1456+ with Task ('GraalPython gradle plugin tests' , tasks , tags = [GraalPythonTags .unittest_gradle_plugin ]) as task :
1457+ if task :
1458+ gvm_jdk = graalvm_jdk ()
1459+ standalone_home = graalpy_standalone_home ('jvm' )
1460+ mvn_repo_path , version , env = deploy_local_maven_repo ()
1461+
1462+ env ['ENABLE_GRADLE_PLUGIN_UNITTESTS' ] = 'true'
1463+ env ['JAVA_HOME' ] = gvm_jdk
1464+ env ['PYTHON_STANDALONE_HOME' ] = standalone_home
1465+
1466+ # setup maven downloader overrides
1467+ env ['MAVEN_REPO_OVERRIDE' ] = "," .join ([
1468+ f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /" ,
1469+ mx_urlrewrites .rewriteurl ('https://repo1.maven.org/maven2/' ),
1470+ ])
1471+
1472+ urls = get_wrapper_urls ("graalpython/com.oracle.graal.python.test/src/tests/standalone/gradle/gradle-test-project/gradle/wrapper/gradle-wrapper.properties" , ["distributionUrl" ])
1473+ if "distributionUrl" in urls :
1474+ env ["GRADLE_DISTRIBUTION_URL_OVERRIDE" ] = mx_urlrewrites .rewriteurl (urls ["distributionUrl" ])
1475+
1476+ env ["org.graalvm.maven.downloader.version" ] = version
1477+ env ["org.graalvm.maven.downloader.repository" ] = f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /"
1478+
1479+ # run the test
1480+ mx .logv (f"running with os.environ extended with: { env = } " )
1481+
1482+ run_python_unittests (
1483+ os .path .join (standalone_home , 'bin' , _graalpy_launcher ()),
1484+ paths = ["graalpython/com.oracle.graal.python.test/src/tests/standalone/test_gradle_plugin.py" ],
1485+ env = env ,
1486+ parallel = 3 ,
1487+ )
1488+
1489+ with Task ('GraalPython maven plugin tests' , tasks , tags = [GraalPythonTags .unittest_maven_plugin ]) as task :
1490+ if task :
1491+ gvm_jdk = graalvm_jdk ()
1492+ standalone_home = graalpy_standalone_home ('jvm' )
1493+ mvn_repo_path , version , env = deploy_local_maven_repo ()
1494+
1495+ env ['ENABLE_MAVEN_PLUGIN_UNITTESTS' ] = 'true'
1496+ env ['JAVA_HOME' ] = gvm_jdk
1497+ env ['PYTHON_STANDALONE_HOME' ] = standalone_home
1498+
1499+ # setup maven downloader overrides
1500+ env ['MAVEN_REPO_OVERRIDE' ] = "," .join ([
1501+ f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /" ,
1502+ mx_urlrewrites .rewriteurl ('https://repo1.maven.org/maven2/' ),
1503+ ])
1504+
1505+ urls = get_wrapper_urls ("graalpython/com.oracle.graal.python.test/src/tests/standalone/mvnw/.mvn/wrapper/maven-wrapper.properties" , ["distributionUrl" ])
1506+ if "distributionUrl" in urls :
1507+ env ["MAVEN_DISTRIBUTION_URL_OVERRIDE" ] = mx_urlrewrites .rewriteurl (urls ["distributionUrl" ])
1508+
1509+ env ["org.graalvm.maven.downloader.version" ] = version
1510+ env ["org.graalvm.maven.downloader.repository" ] = f"{ pathlib .Path (mvn_repo_path ).as_uri ()} /"
1511+
1512+ # run the test
1513+ mx .logv (f"running with os.environ extended with: { env = } " )
1514+
1515+ run_python_unittests (
1516+ os .path .join (standalone_home , 'bin' , _graalpy_launcher ()),
1517+ paths = ["graalpython/com.oracle.graal.python.test/src/tests/standalone/test_maven_plugin.py" ],
14201518 env = env ,
14211519 parallel = 3 ,
14221520 )
0 commit comments