Subject: Re: bug#31721: “generate-jar-indices” phase fails on many packages

From: Gábor Boskovits <[email-masked]>
Date: Thu, 7 Jun 2018 10:27:43 +0200

2018-06-07 9:20 GMT+02:00 Ricardo Wurmus <[email-masked]>:

>
> Danny Milosavljevic <[email-masked]> writes:
>
> >> The errors are either about duplicates as in java-picard-2.10.3:
> >>
> >>     duplicate entry: htsjdk/samtools/AbstractBAMFileIndex$1.class
> >
> > That's... bad.  What if those files differed?  Which one would be used at
> > runtime?
>
> I wonder where they come from.  Is this from a dependency or are there
> actually two such classes?
>
>
Is it possible that these come from a package, where a renamed dependency is
used in the original build system, thus avoiding the name duplication? I
will have a
look at this package source... Will report back if I can confirm this
assumption.

> >> or about missing files as in dropseq-tools:
> >>
> >>     java.io.FileNotFoundException: /gnu/store/
> q76y0ximcziplgfpbn26kbw4h3s14f33-dropseq-tools-1.13/share/
> java/lib/biojava-alignment.jar
> >
> > That's also bad.  How does it run at all if its dependencies are missing?
>
> To satisfy the dropseq-tools build system the dependencies a symlinked
> to the build directory.  I suspect that the error is something to do
> with that.
>
> > The only thing I can think of that would improve things long term:
> >
> > The phase can add relative paths to all the dependencies to
> META-INF/MANIFEST.MF
> > before invoking "jar -i".
> > Then "jar -i" will index those - and all java packages can use regular
> inputs
> > instead of propagated inputs.  I've tested that locally already - and it
> > works fine.
>
> Is it correct that this would ensure that in case of duplicate class
> names this would pick the class from the current package?
>
> --
> Ricardo
>
>
>
>