Subject: Re: bug#58591: Java packages do not appear to keep a reference to their inputs

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 18 Oct 2022 19:25:57 -0400

Hello,

Julien Lepiller <[email-masked]> writes:

> Hi, replying to a few emails at once.
>
> The ant-build-system uses zip -0 to produce an uncompressed
> archive. By default, jar produces a compressed one, so there's a
> repack phase for that:
>  http://git.savannah.nongnu.org/cgit/guix.git/tree/guix/build/ant-build-system.scm#n226

Ah, I had missed the -0 == uncompressed part.  Thank you.

> Embedding the classpath in the manifest is possible but would not have
> the expected effect. That's because a line in the manifest cannot
> exceed 72 bytes (see "line length" in
> https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Notes_on_Manifest_and_Signature_Files),
> so the classpath will look like:
>
> Class-Path: ../../../1234567891011
>  1213141516/share/java/foo.jar

Although it looks like the 72 bytes line width limitation may has to do
with binary data:

   Binary data of any form is represented as base64. Continuations are
   required for binary data which causes line length to exceed 72
   bytes. Examples of binary data are digests and signatures.

Worth a try in my opinion (I'm giving it a shot as I write this).

Thanks for the explanations!

Maxim