babashka 2026-10-24

Hi, I'm trying to build eca-emacs via bb debug-cli. And it's giving me this rather unexpected error (result of claude analysis of it) > What was wrong: One file in your Maven cache, ~/.m2/repository/org/codehaus/plexus/plexus/1.0.4/`plexus-1.0.4.pom`, has ø on line 150 (a name in the developer list). That is an HTML code for "ø". The XML reader inside bb does not know it, so it stops. The normal clojure CLI does not care. > > What I did: > - Changed ø to ø in that one file. I saved the old copy at /tmp/claude-1000/-home-brdloush-projects-eca/7be1ce9a-e665-4559-80cd-ed6f60669e2d/scratchpad/plexus-1.0.4.pom.bak. > - Ran bb debug-cli again. It worked. ./eca --version prints eca 0.163.1. Not sure whether ø should or should not be working, but it's a difference between clojure cli and bb cli. Worth reporting or not?

✅ 1

> ❯ what parser is used in bb and what in clojure cli variant? > > Ran 4 shell commands > > They use two different parsers. One is strict, and one is lenient (it accepts more). > > bb (strict) > - bb includes its own copy of tools.deps. It finds the dependencies inside the bb process and does not start a JVM. The failing file is src/babashka/clojure/tools/deps.clj. Inside the bb binary there is also src/babashka/clojure/tools/deps/extensions/pom.clj. > - It reads POM files with clojure.data.xml, which uses the JDK's standard XML stream reader (StAX, javax.xml.stream). The stack trace shows this: clojure.data.xml.jvm.parse/pull-seq → XMLStreamException. > - Standard XML knows only 5 named entities: < > & &quot; &apos;. So &oslash; is an error. > > Clojure CLI (lenient) > - It uses the real JVM tools.deps, which uses Maven Resolver and the Maven model code. > - Maven reads POM files with MavenXpp3Reader, which runs on Plexus MXParser from plexus-utils. > - plexus-utils has a built-in list of HTML entity names (EntityReplacementMap), and oslash is in it. I checked this in plexus-utils-3.6.1.jar. So the old Plexus POM loads without a problem. > > Why bb read the POM at all: bb debug-cli runs clojure -T:build ... through babashka.deps. In your bb version (1.13.222), the dependency step happens inside bb with its own copy of tools.deps, so bb's strict parser read the POM. > > This difference is probably a bug in bb. bb should accept every POM that Maven accepts. You could report it to babashka, with this POM as the example.

Yes please submit an issue. Read the changelogs for how to get back to the Java resolver which should also work as a workaround

@brdloush This problem was already fixed a few version ago. I should've asked you to upgrade first :)

Ah, sorry, totally missed that I'm not on latest version. And thanks for investigating it! 🙏