Only PRs to packages in pkgs/by-name can be merged with the merge bot, so
this is what lets the package's maintainers act on r-ryantm's bumps.
Both callPackage calls took empty argument sets, so no .override interface
changes. simpleBuildTool stays in all-packages.nix, being an alias rather
than a definition.
Assisted-by: Claude Code (Claude Opus 5)
All three variants build a derivation called ammonite-3.0.9, so the
description is what tells them apart in nix search and nix profile list.
Assisted-by: Claude Code (Claude Opus 5)
ammonite.AmmoniteMain is class-file 55, so an older jre failed the install
check with UnsupportedClassVersionError buried in a build log rather than
saying why.
Assisted-by: Claude Code (Claude Opus 5)
The repl pinned its own jvm but handed subprocesses whatever the shell
had. makeWrapper is not usable here because the launcher passes itself as
the classpath with -cp "$0", so the exports go ahead of the exec instead,
and the result is checked rather than assumed.
Assisted-by: Claude Code (Claude Opus 5)
The sed behind it looks for ammonite.Main', but the 3.x launcher runs
ammonite.AmmoniteMain, so it has matched nothing for some time and the
flag was never added: the default build contains no --no-remote-logging.
Upstream removed the feature as well, and answers the flag with "Option
--no-remote-logging is deprecated (remote logging has been removed)".
So the argument only ever chose between two identical launchers, except
that passing it false also skipped the shebang.
The built output is unchanged. This does drop the argument from the
.override interface, so `ammonite.override { disableRemoteLogging = false; }`
now fails to evaluate rather than quietly doing nothing; nothing in the
tree passes it.
Assisted-by: Claude Code (Claude Opus 5)
Upstream ships a .bat/.sh polyglot with no interpreter directive, and the
sed adding one sat inside the disableRemoteLogging block, so building with
that argument false produced a launcher execve cannot start: shells retry
it under /bin/sh, but anything calling execve directly gets ENOEXEC.
The default build is byte-identical; only the --no-remote-logging flag
stays conditional.
Assisted-by: Claude Code (Claude Opus 5)
The launcher carries an appended jar, so sourceProvenance is
binaryBytecode rather than the fromSource default.
Assisted-by: Claude Code (Claude Opus 5)
It refreshed ammonite_2_12 and ammonite_2_13 only, so a bump left
ammonite_3_3 - which is what the plain ammonite attribute points at - on
the new version with its old hash. The variants are now one table the
script is generated from, so none can be missed.
It also drove git ls-remote off git@github.com:..., which needs an ssh key
and so could never have run for r-ryantm.
The rest is the shape the other Scala packages use: shellcheck at build
time, a downgrade guard, prose on stderr, package.nix restored if a
refresh fails partway, and the commit feature declared.
Assisted-by: Claude Code (Claude Opus 5)
The launcher picks $JAVA_HOME over its own default when set, and only the
default was being patched, so `override { jre = ... }` had no effect in any
shell that exports JAVA_HOME - which is most of them. Ammonite 3 needs
Java 11, so on an older JAVA_HOME it crashed in the launcher instead.
sed rather than substituteInPlace because the launcher carries an appended
jar, and null bytes make substituteInPlace refuse the file. Since sed is
silent when it matches nothing, which is how this went unnoticed, the
result is checked.
Assisted-by: Claude Code (Claude Opus 5)