|
From: Vest <no...@gi...> - 2026-06-03 03:13:51
|
Branch: refs/heads/master Home: https://github.com/PCGen/pcgen Commit: 561a8b762ea6f7789be543e67010a1c71ebb17ac https://github.com/PCGen/pcgen/commit/561a8b762ea6f7789be543e67010a1c71ebb17ac Author: Vest <Ve...@us...> Date: 2026-06-03 (Wed, 03 Jun 2026) Changed paths: M .github/workflows/gradle-release-manual.yml M .github/workflows/gradle-release.yml Log Message: ----------- ci: collapse 5 sequential gradle invocations into 1 (#7575) * namegen: faster weighted picks and simpler DataValue sub-values - NameList/RuleSet: precompute a cumulative-weight array at construction so pick() is O(log n) via binarySearch instead of two linear passes. Zero-weight entries are filtered into a parallel positives array, which keeps binarySearch correct when duplicates would otherwise let it land on a zero-weight index. Both records become final classes since cached state can't live on a record. - DataValue: drop the hand-rolled DataSubValue linked list in favour of a lazily-allocated LinkedHashMap. putIfAbsent preserves the first-write-wins semantics the old recursive get() relied on. - NameGenLazyData.gendersForRuleset: read directly from the ruleset's RuleSetMeta.categoryTitles() instead of scanning every Sex: bucket. - NameGenerator.assemble: defer meaning/pronunciation StringBuilder allocation until a part actually overrides one, seeding from the name built so far. Avoids two builders' worth of churn on the common path where no part has sub-values. * jlink: drop explicit requires that jlink already auto-derives The jlink plugin's `additive = true` mode emits both the auto-derived and the user-listed `requires` blocks without dedup. asm 9.10 (pulled in by jlink 4.0.1) parses Java 25 class files that 9.9.1 silently skipped, growing the auto-derived set enough to collide with our explicit list and breaking `createMergedModule` with duplicate-requires errors. Bump to 4.0.2 and keep only the modules the scanner can't infer on its own. * namegen: javadoc the childElements helpers Brief description of each overload's contract (direct Element children, optional tag-name filter) so future readers don't have to re-derive it from the stream pipeline. * release: run fullJpackage on Windows too Drop the Os.FAMILY_MAC || Os.FAMILY_UNIX predicate that excluded Windows from fullJpackage. The carve-out dates from when Windows shipped via NSIS (`buildNsis`); that path was retired in be48763530 but the release-side hookup to invoke jpackage on Windows was never added, leaving Windows release artifacts as the runtime zip only. * release: produce native installers, not just runtime images fullJpackage was wired to assembleJpackageImage (Mac: patchMacJpackage), not the jpackage installer task — so each release shipped only the jlinkZip runtime image, never a .dmg/.deb/.exe. Make jpackage depend on the data-bundling step so it packages an image that already contains data/plugins/preview/outputsheets, then point fullJpackage at jpackage. Pin one installerType per OS (dmg / deb / exe) — without it jpackage emits both formats per platform, doubling build time and (on Linux) requiring rpmbuild that isn't installed on the Ubuntu runner. Add --win-shortcut / --win-menu so the .exe creates Start-menu and desktop entries; the existing --linux-shortcut and Mac-specific opts were already in place. WiX 3.14 needed for the .exe is preinstalled on the windows-latest runner. * release: add portable zip alongside the native installer Same self-contained app the installer ships, but as an unzip-and-run archive — useful for users who don't want to run an installer (USB sticks, locked-down environments, etc.). Per-platform: pcgen-<version>-<os>-<arch>-portable.zip. The zip captures whatever fullJpackage left in build/jpackage/PcGen[.app], so it includes data/plugins/preview/outputsheets and (on Mac) the patched Info.plist + MacDirLauncher. * release: include .deb in artifact upload glob jpackage names Debian packages pcgen_<version>_<arch>.deb (underscore), which the existing pcgen-*.* glob (hyphen) misses. Linux release runs were uploading everything except the .deb. Add a second include for the underscore form. .rpm uses pcgen-<version>.<arch>.rpm so it was already covered. * release: stop publishing image-*.zip and SHA-256 digest files The image-*.zip artifacts (output of jlinkZip) are a JVM runtime image, not a runnable PcGen — no launcher, no /data, /plugins, /preview, or /outputsheets. Users who tried to run them got the "missing required folders" dialog. Now that fullJpackage produces real installers and a portable zip with the same .app the installer ships, image-*.zip is just a confusing leftover. Drop it from the release upload (autobuild keeps it via buildDist). The SHA256-digests-*.txt files are also redundant: GitHub computes a SHA-256 for every release asset automatically and exposes it via the API. Anyone verifying integrity can shasum the file locally. * ci: collapse 5 sequential gradle invocations into 1 Each ./gradlew invocation pays ~5-10s of configuration overhead and ~2-3s of daemon startup, plus a fresh task-graph build. The release workflows ran 5 of them in series: ./gradlew clean build # `clean` does nothing on a fresh runner ./gradlew compileSlowtest datatest pfinttest ./gradlew allReports # = checkstyleMain + pmdMain + spotbugsMain, # all already executed by `build` ./gradlew buildDist # already a transitive dep of pcgenRelease ./gradlew pcgenRelease Collapse to one invocation, drop the redundant `clean` and `allReports`, and drop `buildDist` (which pcgenRelease already depends on transitively via assembleArtifacts → jlinkZip). Also set fail-fast: false on the matrix so a transient runner preemption (seen on the partner-supplied ubuntu-24.04-arm image) doesn't kill the other three OS jobs. To unsubscribe from these emails, change your notification settings at https://github.com/PCGen/pcgen/settings/notifications |