Repository navigation
·
46 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
Added
- Linux packages and package repositories: the native executable as
esj_<version>_<arch>.deb
andesj-<version>-1.<arch>.rpmfor x86_64 and arm64, built with nfpm (dist/packages.sh,
nfpm 2.47.0 pinned by SHA-256 indist/nfpm.sh), attached to the release with their checksums
and build provenance attestations, and published in an apt repository and a dnf repository at
https://apt.bsnsoft.de, served by GitHub Pages from the branchgh-pages:
apt-get install esjanddnf install esjafter adding a keyring and a source line or a
.repofile (docs/install.md). The executable is
installed under/usr/lib/esjbeside its shared libraries, with/usr/bin/esja link to it;
the packages require glibc 2.34 and zlib and nothing else, measured ondebian:12-slim,
ubuntu:22.04,ubuntu:24.04,fedora:latestandrockylinux:9(dist/packages-smoke.sh).
A release goes to the suitestable, a pre-release totestingas1.2.3~rc.1, which sorts
before1.2.3. The indices are signed with the release key, the key the artefacts on Maven
Central are signed with, inline and detached (InRelease,Release.gpg,repomd.xml.asc),
and so is every rpm; apt reads the indices by hash.dist/repositories.shregenerates both
repositories from the packages on the branch, which is their whole state; the job Package
repositories ofrelease.ymlruns it on a tag, anddist/repositories-test.shputs both
through apt and dnf end to end with a throwaway key and the commands of the install page, in
the CI and before a release attaches anything. dist/checks.shfails a native Linux executable, or a library beside it, that needs a glibc
symbol version newer thanESJ_GLIBC_FLOOR(2.34), the floor the packages require; the native
build anddist/packages.shrun the check.
Fixed
esj servekept the connection of an early refusal alive — an answer sent before the request
body was read to its end — though it closes that connection where the lingering read of the
rest ends at its time bound or at the bound of the door; a client that had already sent its
next request on it lost that answer (HTTP/1.1 header parser received no bytes: once in 420
requests on a CI runner, in a test run some 3.5 s longer than usual, past the test's 3 s
bounds; every time behind a chunked body past the bound). Such an answer now says
Connection: close, so the next request goes on a new connection; a request whose body was
read to its end keeps its connection.- The native executables ended
esj render --templatewith exit 5 on a JPEG letterhead or logo
(NoSuchMethodError: …JPEGImageReader.readInputData) and on every PNG that is not plain RGB or
a palette — with an ICC profile or ansRGBchunk, in grey, interlaced or with an alpha channel
(sun/java2d/Disposer,CMMException): no case had used such an image, so the native image
lacked the JNI and resource metadata of the JPEG decoder, of the rasters and colour models of
ImageIO and of the colour management of the Java runtime. Four template cases over
dist/artwork/record it, and the smoke compares their renderings with the jar's.