Fork me on GitHub
#tools-build
<
2021-12-05
>
dominicm09:12:00

Just fyi, it seems that b/jar doesn't support sections for the manifest file. Sections are groups which start with Name: and have section-specific entries in them. I know Capsule uses this for having platform-specific information about how to start. Here's an example of use:

Main-Class: clojure.main

Name: Frank
Main-Class: frank.clojure.main
❯ clj       
Clojure 1.10.3
user=> (require '[ :as io])
nil
user=> (io/input-stream "/tmp/MANIFEST.MF")
#object[java.io.BufferedInputStream 0x69ce2f62 "java.io.BufferedInputStream@69ce2f62"]
user=> (def mf (java.util.jar.Manifest. (io/input-stream "/tmp/MANIFEST.MF")))
#'user/mf
user=> (.getAttributes mf "Frank")
{#object[java.util.jar.Attributes$Name 0x2e3a5237 "Main-Class"] "frank.clojure.main"}
user=> (.getMainAttributes mf)
{#object[java.util.jar.Attributes$Name 0x2e3a5237 "Main-Class"] "clojure.main"}
user=> (.getEntries mf)
{"Frank" {#object[java.util.jar.Attributes$Name 0x2e3a5237 "Main-Class"] "frank.clojure.main"}}

Alex Miller (Clojure team)14:12:07

Can you file a request on ask Clojure?

dominicm14:12:21

Absolutely 🙂

dominicm09:12:15

Capsule will look at something like this:

JVM-Args: -Xms256m

Name: Windows
JVM-Args: -Xmx1G

Name: Linux
JVM-Args: -Xmx2G
I'm not sure if it merges/overrides in that case off the top of my head.

dominicm12:12:07

https://clojure.github.io/tools.build/clojure.tools.build.api.html#var-create-basis I stopped reading the :user in pack (and very happy to see how easy this is now!) but one thing that did come up is users specifying :mvn/repos that only worked on their machine. e.g. a user behind a firewall trying to build an open source library might have to specify :mvn/repos to be a particular proxy.

Alex Miller (Clojure team)14:12:20

We support maven proxies in settings.xml

Alex Miller (Clojure team)14:12:48

That way it's external to what's in mvn/repos. Not sure if that covers what you're asking

dominicm14:12:52

Ah, that might not have been the case when I added that code N years ago. It's probably no longer relevant then 🙂