all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* broken references in jar manifests
@ 2018-03-01 17:11 Ricardo Wurmus
  2018-03-01 18:32 ` Gábor Boskovits
  2018-03-02 13:18 ` Ludovic Courtès
  0 siblings, 2 replies; 18+ messages in thread
From: Ricardo Wurmus @ 2018-03-01 17:11 UTC (permalink / raw)
  To: guix-devel

Hi Guix,

we have a problem with jar manifests.  When we use the Class-Path
property to ensure that an executable can find its dependencies on the
class path at run-time, we end up with a manifest like this:

--8<---------------cut here---------------start------------->8---
Manifest-Version: 1.0
Class-Path: /gnu/store/i28vi94r8z9f0x02zgkrv87w16ibmqkw-java-htsjdk-2.
 10.1/share/java/htsjdk.jar
Created-By: 1.8.0_151 (Oracle Corporation)
Main-Class: picard.cmdline.PicardCommandLine
--8<---------------cut here---------------end--------------->8---

Note that the Class-Path property is broken into two lines.  This means
that the reference scanner will miss it and grafting will fail.

Breaking up lines longer than 70 characters is according to the manifest
specification, see
https://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html

We cannot just use a wrapper that sets CLASSPATH, because it appears to
be ignored when using a manifest with “Main-Class”.  “Main-Class” is
required for executables that can be run like this:

    java -jar whatever.jar

A possible work-around might be to patch the class loader of our JDKs to
look at a custom Guix-specific file, which we will include in each jar.
That file would be allowed to have longer lines.

There are two disadvantages:

1) we need to patch the JDK
2) the jars would not do the right thing when executed with a different
JDK (e.g. on a foreign distro).

What do you think?

--
Ricardo

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2018-05-06 18:09 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-01 17:11 broken references in jar manifests Ricardo Wurmus
2018-03-01 18:32 ` Gábor Boskovits
2018-03-01 18:54   ` Ricardo Wurmus
2018-03-01 19:08     ` Gábor Boskovits
2018-03-01 19:52       ` Ricardo Wurmus
2018-03-19  4:24       ` Chris Marusich
2018-03-19  4:47         ` Ricardo Wurmus
2018-03-02 13:18 ` Ludovic Courtès
2018-03-20 10:28   ` Danny Milosavljevic
2018-03-20 10:50     ` julien lepiller
2018-03-20 12:14       ` Danny Milosavljevic
2018-03-20 13:47         ` Ricardo Wurmus
2018-03-21 21:07         ` Danny Milosavljevic
2018-03-21 22:58           ` Ricardo Wurmus
2018-03-25 10:19           ` [PATCH] Create INDEX.LIST; Was: Fix " Danny Milosavljevic
2018-04-01 22:12             ` Chris Marusich
2018-04-18 13:25               ` Danny Milosavljevic
2018-05-06 18:09               ` Danny Milosavljevic

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.