Skip to content

Build(deps): bump org.beryx.jlink to 4.1.1-rc to fix jpackage - #7681

Merged
Vest merged 1 commit into
PCGen:masterfrom
Vest:bump-jlink-4.1.1-rc
Jul 30, 2026
Merged

Build(deps): bump org.beryx.jlink to 4.1.1-rc to fix jpackage#7681
Vest merged 1 commit into
PCGen:masterfrom
Vest:bump-jlink-4.1.1-rc

Conversation

@Vest

@Vest Vest commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Why

The straight 4.0.2 → 4.1.0 bump breaks fullJpackage, so it was merged and reverted twice already (#7670#7672, #7674#7677). This PR bumps to the upstream fix instead of retrying the broken version.

Root cause

jlink 4.1.0 added a blanket doNotTrackState to its jpackage tasks (beryx/badass-jlink-plugin@4854c9e7), so Gradle stopped tracking the app-image output directory. PCGen layers its own Copy tasks (assembleJpackageImage, and on macOS patchMacJpackage) into that same directory. Once the plugin stopped claiming ownership of it, Gradle's stale-output cleanup treated jpackage's files as orphans and deleted the .jpackage.xml marker before our copy ran — which breaks the :jpackage step.

This only surfaces in the nightly build (regular CI doesn't run jpackage), which is why the earlier bumps passed PR checks but broke master and had to be reverted.

The fix

4.1.1-rc fixes this upstream (beryx/badass-jlink-plugin@0d4bf7ec): it removes the doNotTrackState and marks the image/installer output directories @Optional instead. That restores the output tracking 4.0.2 had, so Gradle again knows jpackage owns the image directory and no longer deletes the marker. No PCGen-side workaround is needed — this PR is the version bump only.

Testing

Verified locally on macOS / JDK 25 with the bump alone (no build-script changes):

  • ./gradlew clean fullJpackagesucceeds
  • .jpackage.xml marker survives (the exact file the bug deleted)
  • app bundle stays validly signed (codesign --verify --deep --strict passes); pcgen-<version>.dmg is produced
  • repeated incremental rebuilds are stable

The nightly is the real regression gate here — once merged, the next nightly run exercises the full jpackage path on all platforms.

Notes

jlink 4.1.0 added a blanket doNotTrackState to its jpackage tasks, so
Gradle stopped tracking the app-image output dir. PCGen's
assembleJpackageImage/patchMacJpackage copy into that dir, and Gradle's
stale-output cleanup then deleted jpackage's .jpackage.xml marker,
breaking the :jpackage step. This only surfaced in the nightly (regular
CI does not run jpackage), so the bump was merged and reverted twice
(PCGen#7670/PCGen#7672, PCGen#7674/PCGen#7677).

4.1.1-rc fixes it upstream (beryx/badass-jlink-plugin@0d4bf7ec): it
removes the doNotTrackState and marks the image/installer output dirs
@optional, restoring the output tracking that 4.0.2 had. No PCGen-side
workaround is needed.

Verified locally on macOS/JDK 25: clean fullJpackage succeeds, the
.jpackage.xml marker survives, the bundle stays validly signed, and the
dmg is produced.
@Vest Vest self-assigned this Jul 30, 2026
@Vest Vest added bug dependencies Pull requests that update a dependency file java Pull requests that update java code labels Jul 30, 2026
@Vest
Vest merged commit 7005789 into PCGen:master Jul 30, 2026
4 checks passed
@Vest
Vest deleted the bump-jlink-4.1.1-rc branch July 30, 2026 10:45
@github-actions

Copy link
Copy Markdown

🚧 PCGen Code Coverage

Overall Project 25.85%

There is no coverage information present for the Files changed

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

Labels

bug dependencies Pull requests that update a dependency file java Pull requests that update java code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant