AGENDA ====== Introductions ============= ehashman: Clojure packaging lead, BoF runner What is Clojure? ================ A dialect of Lisp, inspired by Common Lisp, that runs on the JVM (as well as Node, CLR, and Graal) What is the state of current Clojure packages in Debian? ======================================================== -> Overview by ehashman What work needs to be done? =========================== -> List of current release goals: https://wiki.debian.org/Clojure/Goals -> deps/clj CLI (ehashman/rlb?) -> Clojure 1.11? Reproducibility? ================ -> from puppet-team: no debhelper integration for clojure packages; suggestion: invest time on integrating leiningen, it will save a lot of time down the road Clojure Packaging Resources and Q&A =================================== -> Wiki: https://wiki.debian.org/Clojure/ -> Packaging tutorial: https://wiki.debian.org/Clojure/PackagingTutorial -> clj-helper: https://salsa.debian.org/ehashman/clj-helper -> Team DDPO: https://qa.debian.org/developer.php?email=pkg-clojure-maintainers%40lists.alioth.debian.org&comaint=yes Other ===== ClojurePhant - Gradle plugin for building Clojure(Script) apps https://github.com/clojurephant/clojurephant === Session Comments/Notes/Q&A === ================================== MODERATOR: From below "She speaks too quickly. Almost impossible to understand for those who are not native English speakers. I'll see again later with reduced speed. It seems to have been an interesting talk." Direct linking: https://clojure.org/reference/compilation#directlinking Q: How does one tell if a dependency in a project.clj is a java or clojure dependency - hard to tell. One has to manually read project.clj and do some manual work. Q: what are the causes of non-reproducibility in Clojure? A: " https://ask.clojure.org is our preferred place to ask questions or possible bugs", and irc:alelx-miller will create ticket. If you are interested in chat, I hang out mostly in https://clojurians.net Slack channel, particularly #tools-deps for build / clj stuff some appear to be classic "timestamps in jar files", others more complicated and discussed... timestamps in jar files can be addressed by using strip-nondeterminism but we turned that off because it would occasionally cause perf regressions/builds were nonreproducible anyways: https://salsa.debian.org/clojure-team/clojure/-/blob/0af9fb3ba19e126751587f137e2619107a1a921c/debian/rules#L40 Q: Can you explain how the debian/poms.xml gets generated by clj-helper? - clj-helper is calling leiningen, see clj-helper code itself, it's pretty readable Q: What do you suggest to check on a freshly new package? What should I do to make sure my package is in shape for uploading? : [extended-comment] I suppose the autopkgtest should be enough to know if things are in order? (like a quick smoke-test \o/) Q: Why do we have to specify all the .jar in the debian/.classpath? Can't this be found out of dependencies? - it's fine to generate these by hand - it can be checked by runing java -jar Q: Would you be open for changing a little bit the team's "git tag" workflow? I've been using git tags myself, and found that the team's way could be simplified (like getting rid of pristine-tar all together) - E.Hashman is open to change and improvements, that's very nice, thanks! :) COMMENT: just as an FYI, coming soon.... I've been working on a build tool (tools.build) that integrates with the clj tool and can create jars, compile java, clj, uberjar, make poms, and custom tasks. at some point, it might be a simpler way to create clojure libs (Alex Miller)