Remove dependency to JVMCI for JDK27+ backwards compatiblity for JDKs 21-26 #58
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Reflection API Unit Tests (no-GPU) [JDK 21/25/26/27] | |
| # Pure-JVM unit tests for the reflection JVMCI layer (tornado-runtime/src/test). These need no GPU, | |
| # so they run on a standard GitHub-hosted runner - the first no-GPU CI stage for TornadoVM. The full | |
| # build is still required first so the modular dependencies (tornado-api, tornado.graal, ...) are on | |
| # the module path for the reflection tests; the tests themselves touch no device. | |
| # | |
| # Matrixed across every JDK profile the project supports building on, because each one gives the | |
| # reflection layer a genuinely different jdk.internal.vm.ci to sit on top of: | |
| # jdk21 - native platform module, unmodified | |
| # jdk25/jdk26 - native module, patched at compile+runtime with the frozen graalJars/jvmci-21.0.2.jar | |
| # jdk27 - JVMCI removed from the platform entirely; supplied as the vendored tornado.jvmci | |
| # application module (bin/build_jvmci_module.py) | |
| # A regression specific to one of those shapes would stay green here forever if only jdk21 ran. | |
| on: | |
| push: | |
| branches: [master, develop, jdk27-jvmci-removal] | |
| pull_request: | |
| types: [opened, synchronize, reopened] | |
| workflow_dispatch: | |
| jobs: | |
| reflection-unit-tests: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 40 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| jdk: | |
| - profile: jdk21 | |
| setup_java_version: '21' | |
| # jdk25/26/27 also install JDK 21 alongside the target JDK: build_jvmci_module.py | |
| # (invoked by pull_graal_jars for these profiles) needs a JDK 21 runtime image to | |
| # source the frozen jdk.vm.ci.* SPI from. Listing 21 first and the target version | |
| # last matters -- actions/setup-java points JAVA_HOME at the *last* JDK installed, | |
| # and bin/compile's --jdk check requires JAVA_HOME to be the target JDK. | |
| - profile: jdk25 | |
| setup_java_version: | | |
| 21 | |
| 25 | |
| - profile: jdk26 | |
| setup_java_version: | | |
| 21 | |
| 26 | |
| - profile: jdk27 | |
| setup_java_version: | | |
| 21 | |
| 27-ea | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up JDK (${{ matrix.jdk.profile }}) | |
| uses: actions/setup-java@v4 | |
| with: | |
| distribution: temurin | |
| java-version: ${{ matrix.jdk.setup_java_version }} | |
| - name: Point JVMCI_SOURCE_JDK at the co-installed JDK 21 (jdk25/26/27 only) | |
| if: matrix.jdk.profile != 'jdk21' | |
| run: echo "JVMCI_SOURCE_JDK=$JAVA_HOME_21_X64" >> "$GITHUB_ENV" | |
| - name: Install native build dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y cmake ocl-icd-opencl-dev opencl-headers python3-venv | |
| - name: Build TornadoVM (opencl, ${{ matrix.jdk.profile }}) | |
| run: | | |
| python3 -m venv venv | |
| source venv/bin/activate | |
| pip install --upgrade pip tqdm psutil | |
| make ${{ matrix.jdk.profile }} BACKEND=opencl | |
| - name: Run reflection unit tests (${{ matrix.jdk.profile }}) | |
| run: make test-reflection JDK=${{ matrix.jdk.profile }} |