Skip to content

Notebook E2E in a macOS GraalVM native image (#191 milestone 1) #249

Closed

Description

@b-re-w

#191's first milestone (#242): the notebook E2E's 20 scenarios run inside a GraalVM native image on macOS. They draw PythonAppView offscreen into an ImageComposeScene, so no window and no AWT-free piece is needed. The binary must run on its own from its directory, with JAVA_HOME and PYTHONHOME unset and no libjvm.

Change, in python-multiplatform-compose/fixtures/notebook-e2e:

  • Runner. NotebookE2eMain runs the 20 scenarios by explicit calls, with each class's @BeforeTest and no JUnit or reflection. It prints PASS/FAIL per scenario, then NOTEBOOK_E2E: n passed, m failed of 20, and exits non-zero on any failure. The wheel's site-packages and the app directory default to site-packages/ and app/ beside the executable.
  • Tasks.
    • notebookE2eJvm: the runner on the JVM, the sanity check.
    • notebookE2eNativeAgent: the runner under native-image's tracing agent, writing the Compose/Skiko configuration into the module.
    • notebookE2eNativeCompile: native-image via the JDK 25 toolchain, with --no-fallback --enable-native-access=ALL-UNNAMED.
    • Staging beside the binary: stageNativeImagePythonHome (Desktop: find PYTHONHOME beside a native-image executable, and stage it there #246), the wheel and the app.
    • notebookE2eNativeRun: runs the binary with JAVA_HOME/PYTHONHOME removed, requires 20 passed, and checks otool -L for no libjvm.
  • Then a macOS CI job.

Completion: notebookE2eNativeRun prints NOTEBOOK_E2E: 20 passed, 0 failed of 20 locally and on CI.

Activity

  1. added a commit that references this issue on Oct 17, 2026
  2. b-re-w commented on Oct 17, 2026

    @b-re-w
    MemberAuthor

    Landed in develop via #250 (local: 20/20 in the native image; the CI job waits on the fork publishing its artefacts)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions