f native image, just build a jar
This commit is contained in:
31
README.md
31
README.md
@@ -1,24 +1,45 @@
|
||||
# jprototerm
|
||||
|
||||
JavaFX canvas terminal prototype using `jlibghostty` for terminal emulation, Nix for the build environment, and GluonFX/GraalVM Native Image for the Linux binary.
|
||||
JavaFX canvas terminal prototype using `jlibghostty` for terminal emulation and Nix for
|
||||
the build environment. It builds a plain JavaFX application (JDK 25, JavaFX 25 via Gradle)
|
||||
packaged as a Nix derivation — no GraalVM/GluonFX native image.
|
||||
|
||||
## Build
|
||||
|
||||
```sh
|
||||
nix build
|
||||
./result/bin/jprototerm
|
||||
```
|
||||
|
||||
The package build uses GluonFX through Gradle so JavaFX native-image metadata is generated by the toolchain that is designed for it. In a strict pure Nix sandbox, Gradle dependencies must be vendored first with `gradle2nix` or a checked-in Maven/Gradle cache.
|
||||
Install it into a profile (works on NixOS and on a plain Debian box with Nix installed):
|
||||
|
||||
```sh
|
||||
nix profile add .
|
||||
jprototerm
|
||||
```
|
||||
|
||||
The flake bundles everything the app needs — the JDK 25 runtime, the Maven JavaFX modules
|
||||
and their native libraries, and the gtk/glib/freetype/X11 libraries they load — **except**
|
||||
the system OpenGL/graphics drivers. `libGL` is supplied by the host at runtime through a GL
|
||||
shim in the launcher wrapper, so the same closure runs against NixOS, Mesa, or vendor
|
||||
(e.g. NVIDIA) GPU drivers.
|
||||
|
||||
Gradle dependencies are vendored in `deps.json` for the pure Nix sandbox. Regenerate it
|
||||
after changing dependencies in `build.gradle` (the update script writes `deps.json` in the
|
||||
current directory):
|
||||
|
||||
```sh
|
||||
$(nix build .#gradleDepsUpdateScript --no-link --print-out-paths)
|
||||
```
|
||||
|
||||
For development:
|
||||
|
||||
```sh
|
||||
nix develop
|
||||
gradle -PjlibghosttyMavenRepo="$JLIBGHOSTTY_MAVEN_REPO" run
|
||||
gradle -PjlibghosttyMavenRepo="$JLIBGHOSTTY_MAVEN_REPO" -Pgluonfx.mainClassName=com.gregor.jprototerm.Main nativeExecutable
|
||||
gradle run
|
||||
```
|
||||
|
||||
The Gradle project is the source of truth for native JavaFX builds.
|
||||
The Gradle project is the source of truth for the JavaFX build.
|
||||
|
||||
## Config
|
||||
|
||||
|
||||
Reference in New Issue
Block a user