Repository navigation
jreleaser: add 1.26.0 - #923
Conversation
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>
There was a problem hiding this comment.
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). Onlybin/,lib/*.jar,LICENSEandNOTICEare installed. The upstream zip also shipslicenses/(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 withcp -r. Please installlicenses/, and probablySWIDTAG/too. - Question,
build.ncl:59-60.launcherdeclaresusr/share/jreleaser/bin/jreleaseras a bin, andjreleaser_home(usr/share/jreleaser/**) also captures it. PMD and SpotBugs leave their launcher in the data output withallow_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
…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>
|
Thanks @norrietaylor. Addressed in 8f87adf, on top of a merge of main (6b82cc6):
Verified in a fresh 🤖 Generated with Claude Code |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
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.jreleaser-1.26.0.zip, which holds abin/jreleaserlauncher and 133 jars inlib/. It is one artifact for both arches. sha256c821df22…8dec628matches upstream'sjreleaser-1.26.0.zip.sha256,checksums_sha256.txtand the release asset digest. I chose it over the per-arch GraalVM native zips: one sha256, nomatch 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./usr/share/jreleaser/{bin/jreleaser,lib/*.jar,LICENSE,NOTICE,licenses/,SWIDTAG/}plus a/usr/bin/jreleaserwrapper 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.shfails closed if either disappears. Outputs follow pmd and spotbugs: oneOutputBinfor the wrapper, and the whole tree, upstream launcher included, as data withallow_executable. The.batlauncher is dropped. The zip stores the jars as0600, sobuild.shinstalls them with explicit modes (0644, launcher0755).bin/jreleaseris POSIX sh (#!/usr/bin/env sh). It resolvesAPP_HOMEfrom its own path and runsjava -classpath lib/* org.jreleaser.cli.Main. It uses$JAVA_HOME/bin/javaifJAVA_HOMEis set, otherwisejavaon PATH; the packagedjdkprovides both. It honoursJAVA_OPTS.jdk;bash(theshscripts);coreutils(env,uname,ls,tr);findutils(xargs: the launcher dies withxargs is not availablewithout it);sed(used to quoteJAVA_OPTS).needs = { dns, internet }for consumers, as jbang (jbang: add 0.142.0 #903) does. Local steps such asinit,configandassemblerun offline, and the tests prove it.license_spdx). Provenance:GithubRepojreleaser/jreleaser (tagsv<version>).maven/gradle/jdtls: the Gradle build resolves from Maven Central.binary_fromrecords it.Tests (Standalone)
jreleaser_version: one line ofjreleaser --versionis exactlyjreleaser 1.26.0.init:jreleaser init --format ymlin an empty dir writes ajreleaser.ymlstamped# Generated with JReleaser 1.26.0, with aproject:block.assemble: a real offline release step. The test creates a git repo (gitis a test dep, as inemacs-site-lisp) with ajreleaser.ymlthat declares anarchiveassembler oversrc/hello.txt.jreleaser config --assemblymust parse and validate the config.jreleaser assemblemust succeed, anddemo-1.2.3.tar.gzanddemo-1.2.3.zipmust each containdemo-1.2.3/hello.txt. The tar is listed withtar, the zip with the JDK'sjar.JAVA_OPTSpins 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
pkgbuildsession (arm64) withmin package build --rebuild --verbose jreleaser, then ranmin check --packages jreleaser. Every checker passed, includingstandalone tests,output types validandmissing runtime_deps.Re-verified after the review fixes (8f87adf, fresh session,
--rebuild): every check passes.Negative control (fresh session): I expected
jreleaser 1.25.0anddemo-1.2.3/bye.txtin the zip. Bothjreleaser_versionandassemblefailed. 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