8000 jreleaser: add 1.26.0 by bryan-minimal · Pull Request #923 · gominimal/pkgs · GitHub
[go: up one dir, main page]

Skip to content

jreleaser: add 1.26.0 - #923

Merged
bryan-minimal merged 3 commits into
mainfrom
add-jreleaser
Oct 30, 2026
Merged

bryan-minimal merged 3 commits into
mainfrom
add-jreleaser

Conversation

@bryan-minimal
@bryan-minimal bryan-minimal commented Oct 18, 2026 •
Copy link
Copy Markdown
Member

What

Adds packages/jreleaser, JReleaser 1.26.0 (jreleaser/jreleaser, 2026-08-31). JReleaser is release automation: changelogs, forge releases, packagers, Maven Central deploys and announcements. Java loadout, #899.

  • Artifact: the JVM distribution jreleaser-1.26.0.zip, which holds a bin/jreleaser launcher and 133 jars in lib/. It is one artifact for both arches. sha256 c821df22…8dec628 matches upstream's jreleaser-1.26.0.zip.sha256, checksums_sha256.txt and the release asset digest. I chose it over the per-arch GraalVM native zips: one sha256, no match target, and it runs on the same JDK as the rest of the Java tooling. The bytecode targets Java 8, so any packaged jdk runs it.
  • Layout: /usr/share/jreleaser/{bin/jreleaser,lib/*.jar,LICENSE,NOTICE,licenses/,SWIDTAG/} plus a /usr/bin/jreleaser wrapper that execs the upstream launcher. licenses/ carries the texts for the bundled jars' licences (BSD-2-Clause, BSD-2-Clause-FreeBSD, Bouncy Castle, CC0, EDL-1.0, MIT, jzlib), which BSD and MIT require on redistribution; SWIDTAG/ is the distribution's software ID tag. build.sh fails closed if either disappears. Outputs follow pmd and spotbugs: one OutputBin for the wrapper, and the whole tree, upstream launcher included, as data with allow_executable. The .bat launcher is dropped. The zip stores the jars as 0600, so build.sh installs them with explicit modes (0644, launcher 0755).
  • Launcher: the upstream bin/jreleaser is POSIX sh (#!/usr/bin/env sh). It resolves APP_HOME from its own path and runs java -classpath lib/* org.jreleaser.cli.Main. It uses $JAVA_HOME/bin/java if JAVA_HOME is set, otherwise java on PATH; the packaged jdk provides both. It honours JAVA_OPTS.
  • Runtime deps: jdk; bash (the sh scripts); coreutils (env, uname, ls, tr); findutils (xargs: the launcher dies with xargs is not available without it); sed (used to quote JAVA_OPTS).
  • Network: releasing means talking to git forges, Maven Central, registries and announcers. The package declares needs = { dns, internet } for consumers, as jbang (jbang: add 0.142.0 #903) does. Local steps such as init, config and assemble run offline, and the tests prove it.
  • Licence: Apache-2.0 for JReleaser's own code; the bundled jars carry the licences above (noted beside license_spdx). Provenance: GithubRepo jreleaser/jreleaser (tags v<version>).
  • Prebuilt for the same reason as maven / gradle / jdtls: the Gradle build resolves from Maven Central. binary_from records it.

Tests (Standalone)

  • jreleaser_version: one line of jreleaser --version is exactly jreleaser 1.26.0.
  • init: jreleaser init --format yml in an empty dir writes a jreleaser.yml stamped # Generated with JReleaser 1.26.0, with a project: block.
  • assemble: a real offline release step. The test creates a git repo (git is a test dep, as in emacs-site-lisp) with a jreleaser.yml that declares an archive assembler over src/hello.txt. jreleaser config --assembly must parse and validate the config. jreleaser assemble must succeed, and demo-1.2.3.tar.gz and demo-1.2.3.zip must each contain demo-1.2.3/hello.txt. The tar is listed with tar, the zip with the JDK's jar. JAVA_OPTS pins the JVM's HTTP(S) proxy to a closed local port, so any network attempt fails instead of reaching out. No forge token is involved.

Verified

I built it in a pkgbuild session (arm64) with min package build --rebuild --verbose jreleaser, then ran min check --packages jreleaser. Every checker passed, including standalone tests, output types valid and missing runtime_deps.

Re-verified after the review fixes (8f87adf, fresh session, --rebuild): every check passes.

Negative control (fresh session): I expected jreleaser 1.25.0 and demo-1.2.3/bye.txt in the zip. Both jreleaser_version and assemble failed. I restored the file and re-checked in a fresh session: it passed.

amd64 is left to CI; the distribution is architecture-independent.

Refs #899

🤖 Generated with Claude Code

Summary by CodeRabbit

  • New Features
    • Added a package for JReleaser 1.26.0, including its command-line launcher and supporting files.
    • The package supports initializing a project, validating assembly configuration, and creating ZIP and TAR.GZ archives, including offline archive assembly.

Release automation. Ships the architecture-independent JVM distribution
(bin/ launcher + lib/ jars) on jdk, with the launcher's sh/coreutils/
findutils/sed deps. Consumers inherit needs = { dns, internet }; tests run
init and an archive assemble offline.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bryan-minimal
bryan-minimal requested a review from a team as a code owner October 18, 2026 00:50
@coderabbitai
coderabbitai Bot commented Oct 18, 2026 •
Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Repository: gominimal/pkgs/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Essentials
  • Run ID: 87a49f8f-09c9-407f-946d-d90984d90c36
📥 Commits

Reviewing files that changed from the base of the PR and between c56e4dc and 57cdca3.

📒 Files selected for processing: 2
  • packages/jreleaser/build.ncl
  • packages/jreleaser/build.sh

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 2 reviews per hour.

📝 Walkthrough

Adds a JReleaser 1.26.0 package built from its upstream ZIP. The package installs the launcher and distribution files, and tests cover version reporting, starter configuration, and offline archive assembly.

Changes: JReleaser package

Layer / File(s) Summary
Package definition and installation
packages/jreleaser/build.ncl, packages/jreleaser/build.sh
Defines the upstream distribution, dependencies, outputs, and package attributes. The build script installs the distribution files and creates a wrapper at /usr/bin/jreleaser.
Package tests
packages/jreleaser/build.ncl
Tests version reporting and generated YAML. An offline assembly test validates a sample project and checks that its input file appears in ZIP and TAR.GZ outputs.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant PackageBuild
  participant buildsh as build.sh
  participant InstalledWrapper
  participant DistributionLauncher
  PackageBuild->>buildsh: Run build with package version
  buildsh->>InstalledWrapper: Create /usr/bin/jreleaser wrapper
  InstalledWrapper->>DistributionLauncher: Forward arguments
Loading

Suggested reviewers: 0chroma

Merge Risk: ⚪ Minimal · up to 57cdc

No merge-blocking issue is established; the package is ready for normal checks.

Pre-merge checks: Passed 5
Check name Status Explanation
Docstring Coverage Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly identifies the package added and the exact JReleaser version, which matches the main change.
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 1 files. (1 skipped: 1 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Comment @coderabbitai help to get the list of available commands.

@norrietaylor norrietaylor left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nicely done overall: explicit install -m fixes the zip's 0000 jar modes, the test -s layout guard is good, and the offline assemble test is thorough.

  • Third-party license texts are dropped (build.sh:14-17). Only bin/, lib/*.jar, LICENSE and NOTICE are installed. The upstream zip also ships licenses/ (BSD-2-Clause, BSD-2-Clause-FreeBSD, Bouncy-Castle, CC0, EDL-1.0, MIT, jzlib) covering the 133 bundled jars, and BSD/MIT require shipping the license text on redistribution. PMD and SpotBugs keep everything with cp -r. Please install licenses/, and probably SWIDTAG/ too.
  • Question, build.ncl:59-60. launcher declares usr/share/jreleaser/bin/jreleaser as a bin, and jreleaser_home (usr/share/jreleaser/**) also captures it. PMD and SpotBugs leave their launcher in the data output with allow_executable. Either add a comment saying why the extra output is needed, or drop it for consistency.
  • Minor, build.ncl:66: license_spdx = "Apache-2.0" covers only JReleaser's own code. A comment like SpotBugs' about bundled jars carrying other licenses would help.
  • Nit (line 44): mentions jbang, which isn't packaged yet (#903 adds it).

On prebuilt jars vs building from source, see my comment on the JVM batch; that's a policy call being settled separately.


Generated by Claude Code

bryan-minimal added a commit that referenced this pull request Oct 22, 2026
Review nit: cp left the jar mode to however it was fetched; install -m
0644 makes it deterministic, as #922 and #923 do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bryan-minimal added a commit that referenced this pull request Oct 22, 2026
Review nit: cp left the jar mode to however it was fetched; install -m
0644 makes it deterministic, as #922 and #923 do.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the tree

Review fixes: install licenses/ (BSD/MIT/CC0/EDL/Bouncy Castle/jzlib texts
for the bundled jars, which BSD and MIT require on redistribution) and
SWIDTAG/, with fail-closed guards. Drop the separate `launcher` bin output
and keep upstream's bin/jreleaser in the data tree with allow_executable,
as pmd and spotbugs do. Note the bundled-jar licenses beside license_spdx.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@bryan-minimal
Copy link
Copy Markdown
Member Author

Thanks @norrietaylor. Addressed in 8f87adf, on top of a merge of main (6b82cc6):

  • License texts: licenses/ (the 7 texts listed in the 1.26.0 zip) and SWIDTAG/swid-tag.xml are now installed with explicit modes. The build has test -s guards so it fails closed if either goes missing. I checked them against the zip's listing; its sha256 still matches.
  • Launcher output: dropped the separate launcher bin. Upstream's bin/jreleaser stays in the data tree with allow_executable, as in pmd and spotbugs, with a comment saying why. /usr/bin/jreleaser is the only OutputBin.
  • Bundled-jar licences: there's now a comment beside license_spdx saying it covers JReleaser's own code, listing the bundled jars' licences and pointing at licenses/.
  • jbang nit: jbang: add 0.142.0 #903 is on main now, so the reference is no longer dangling. I left it.

Verified in a fresh pkgbuild session (min package build --rebuild jreleaser, then min check --packages jreleaser): every check passes, including standalone tests. nickel format --check, bash -n and mip dump are clean. Main is merged in, so CI builds and tests on Temurin 25.

🤖 Generated with Claude Code

@mitodrummer mitodrummer left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All four points in norrietaylor's CHANGES_REQUESTED review are fixed in 8f87adf. licenses/ and SWIDTAG/ are installed with test -s guards, the separate launcher output is gone, and there is a comment on the bundled jars' licenses and a link to #903, which is on main. The sha256 matches the release asset digest and upstream's jreleaser-1.26.0.zip.sha256. The offline assemble test exercises a real release step.

@norrietaylor norrietaylor left a comment
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My earlier points are all fixed in 8f87adf. licenses/ and SWIDTAG/ are installed and guarded by test -s, /usr/bin/jreleaser is the only bin, and there is a comment on the bundled-jar licenses. I checked the sha256 against the v1.26.0 release asset digest, and it matches. The runtime deps line up with what the launcher calls and with jbang/maven. CI is green.


Generated by Claude Code

@bryan-minimal
bryan-minimal added this pull request to the merge queue Oct 30, 2026
Merged via the queue into main with commit b2bdb09 Oct 30, 2026
11 checks passed
@bryan-minimal
bryan-minimal deleted the add-jreleaser branch October 30, 2026 17:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

0