unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#31719: icedtea-3 binaries contain references to icedtea-2
@ 2018-06-05 10:47 Ricardo Wurmus
  2018-06-05 11:49 ` Gábor Boskovits
                   ` (3 more replies)
  0 siblings, 4 replies; 27+ messages in thread
From: Ricardo Wurmus @ 2018-06-05 10:47 UTC (permalink / raw)
  To: 31719

Many binaries of the icedtea-3 package contain references to icedtea-2,
which was used to build it.  Because of these references users of
icedtea-3 have to *also* download icedtea-2.  And because icedtea-2
contains references to icedtea-1, they *also* need to download that
version.

It is possible that icedtea-1 contains references to the bootstrap JDK,
which will then also have to be downloaded.

We should figure out a way to remove all of these references.

-- 
Ricardo

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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2018-06-05 10:47 bug#31719: icedtea-3 binaries contain references to icedtea-2 Ricardo Wurmus
@ 2018-06-05 11:49 ` Gábor Boskovits
  2018-06-05 12:36   ` Ricardo Wurmus
  2018-06-05 12:45   ` Leo Famulari
  2018-09-10 21:00 ` Gábor Boskovits
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 27+ messages in thread
From: Gábor Boskovits @ 2018-06-05 11:49 UTC (permalink / raw)
  To: 31719, Ricardo Wurmus

[-- Attachment #1: Type: text/plain, Size: 301 bytes --]

Do you think we can do something like rebuild icedtea3 with icedtea3, and
then rewrite the references? I guess this way the dependency loop could be
broken, as we could detach the last icedtea3 build from the packages used
for bootstrapping.
We could even make on more rebuilding, if necessary. WDYT?

[-- Attachment #2: Type: text/html, Size: 348 bytes --]

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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2018-06-05 11:49 ` Gábor Boskovits
@ 2018-06-05 12:36   ` Ricardo Wurmus
  2018-06-05 12:45   ` Leo Famulari
  1 sibling, 0 replies; 27+ messages in thread
From: Ricardo Wurmus @ 2018-06-05 12:36 UTC (permalink / raw)
  To: Gábor Boskovits; +Cc: 31719


Gábor Boskovits <boskovits@gmail.com> writes:

> Do you think we can do something like rebuild icedtea3 with icedtea3, and
> then rewrite the references? I guess this way the dependency loop could be
> broken, as we could detach the last icedtea3 build from the packages used
> for bootstrapping.
> We could even make on more rebuilding, if necessary. WDYT?

Yes, that’s an option, but I’m not sure it is the best option.  Icedtea
builds already take a very long time.  Rebuilding the JDK after the
“build” phase would almost double the build time.

I would be happier if we could prevent references to the bootstrap JDK
from ending up in the binaries.  Before we can do that we need to
understand why they are there.  Are they necessary or are they just
accidental?

--
Ricardo

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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2018-06-05 11:49 ` Gábor Boskovits
  2018-06-05 12:36   ` Ricardo Wurmus
@ 2018-06-05 12:45   ` Leo Famulari
  2018-06-05 14:45     ` Gábor Boskovits
  1 sibling, 1 reply; 27+ messages in thread
From: Leo Famulari @ 2018-06-05 12:45 UTC (permalink / raw)
  To: Gábor Boskovits; +Cc: 31719

[-- Attachment #1: Type: text/plain, Size: 571 bytes --]

On Tue, Jun 05, 2018 at 01:49:12PM +0200, Gábor Boskovits wrote:
> Do you think we can do something like rebuild icedtea3 with icedtea3, and
> then rewrite the references? I guess this way the dependency loop could be
> broken, as we could detach the last icedtea3 build from the packages used
> for bootstrapping.

If the references are not important (that is, if they are not used), we
could also rewrite them to something that doesn't exist. Currently the
go-build-system does this so that Go executables don't refer to the Go
compiler, which is very large.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2018-06-05 12:45   ` Leo Famulari
@ 2018-06-05 14:45     ` Gábor Boskovits
  0 siblings, 0 replies; 27+ messages in thread
From: Gábor Boskovits @ 2018-06-05 14:45 UTC (permalink / raw)
  To: Leo Famulari; +Cc: 31719

[-- Attachment #1: Type: text/plain, Size: 803 bytes --]

2018-06-05 14:45 GMT+02:00 Leo Famulari <leo@famulari.name>:

> On Tue, Jun 05, 2018 at 01:49:12PM +0200, Gábor Boskovits wrote:
> > Do you think we can do something like rebuild icedtea3 with icedtea3, and
> > then rewrite the references? I guess this way the dependency loop could
> be
> > broken, as we could detach the last icedtea3 build from the packages used
> > for bootstrapping.
>
> If the references are not important (that is, if they are not used), we
> could also rewrite them to something that doesn't exist. Currently the
> go-build-system does this so that Go executables don't refer to the Go
> compiler, which is very large.
>

Ok, I will have a look at his, and try to isolate these references. This
looks like a
good first step to evaluate what can be done next.

[-- Attachment #2: Type: text/html, Size: 1238 bytes --]

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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2018-06-05 10:47 bug#31719: icedtea-3 binaries contain references to icedtea-2 Ricardo Wurmus
  2018-06-05 11:49 ` Gábor Boskovits
@ 2018-09-10 21:00 ` Gábor Boskovits
  2020-05-14 18:02 ` Ricardo Wurmus
  2021-02-27 11:17 ` bug#31719: Chains of dependencies getting longer Andreas Enge
  3 siblings, 0 replies; 27+ messages in thread
From: Gábor Boskovits @ 2018-09-10 21:00 UTC (permalink / raw)
  To: 31719, Ricardo Wurmus, Leo Famulari

[-- Attachment #1: Type: text/plain, Size: 127 bytes --]

It seems that this is caused by having the files in a directory that is not
stripped.
I will try to have another look at that.

[-- Attachment #2: Type: text/html, Size: 158 bytes --]

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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2018-06-05 10:47 bug#31719: icedtea-3 binaries contain references to icedtea-2 Ricardo Wurmus
  2018-06-05 11:49 ` Gábor Boskovits
  2018-09-10 21:00 ` Gábor Boskovits
@ 2020-05-14 18:02 ` Ricardo Wurmus
  2021-02-27 11:17 ` bug#31719: Chains of dependencies getting longer Andreas Enge
  3 siblings, 0 replies; 27+ messages in thread
From: Ricardo Wurmus @ 2020-05-14 18:02 UTC (permalink / raw)
  To: 31719

This seems to affect the openjdk packages as well, so a user of OpenJDK
12 will have to download *all* JDKs.

Gábor, have you been able to identify locations that retain references
to the build JDK?

-- 
Ricardo




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

* bug#31719: Chains of dependencies getting longer
  2018-06-05 10:47 bug#31719: icedtea-3 binaries contain references to icedtea-2 Ricardo Wurmus
                   ` (2 preceding siblings ...)
  2020-05-14 18:02 ` Ricardo Wurmus
@ 2021-02-27 11:17 ` Andreas Enge
  2021-03-01 10:04   ` Ludovic Courtès
  3 siblings, 1 reply; 27+ messages in thread
From: Andreas Enge @ 2021-02-27 11:17 UTC (permalink / raw)
  To: 31719

Hello,

trying a "guix build openjdk", I see this:
2136.0 MB would be downloaded:
   /gnu/store/243algr6h60j46spn5dqhjc4mhkd0a0p-libelf-0.8.13
   /gnu/store/ymyvcc0871lwbnkv5acf5lldv0ahm5z1-openjdk-9.181-jdk
   /gnu/store/3hb80r2l48ix8pq2kvcsr1i9aj76d681-openjdk-9.181
   /gnu/store/52bp22jrvwfqa5fmlv2y5vxcir74m8jb-openjdk-10.46-jdk
   /gnu/store/bp86qd2vgaqahqam3n89xl1wz02g0srs-openjdk-10.46
   /gnu/store/a8f5ksk3gb4i1wrn7m5fm5ijc0zwwg2w-openjdk-11.28-jdk
   /gnu/store/9ni61z4nhvkrxbzj6gwip8zrb7zbkx6l-openjdk-11.28
   /gnu/store/837pl2vmq9haiw3kmsnh72fkwvcljipk-openjdk-12.33-jdk
   /gnu/store/ll5dgf42x9smclrc1mx4gyk3dl683m77-openjdk-13.0-jdk
   /gnu/store/bjvy5ab6f0gff52m808vzcn3rw55yxjn-openjdk-14.0-doc
   /gnu/store/r8kxk031fighc4dxr57nl0wirzhk8v08-openjdk-14.0-jdk
   /gnu/store/25kx1vna763xh4mpszp4p4sy4j6iifs3-openjdk-14.0

So the problem is getting worse and worse over time, which makes a solution
more important.

Andreas





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

* bug#31719: Chains of dependencies getting longer
  2021-02-27 11:17 ` bug#31719: Chains of dependencies getting longer Andreas Enge
@ 2021-03-01 10:04   ` Ludovic Courtès
  2021-03-01 12:00     ` Andreas Enge
  0 siblings, 1 reply; 27+ messages in thread
From: Ludovic Courtès @ 2021-03-01 10:04 UTC (permalink / raw)
  To: Andreas Enge; +Cc: 31719

Hi,

Andreas Enge <andreas@enge.fr> skribis:

> trying a "guix build openjdk", I see this:
> 2136.0 MB would be downloaded:
>    /gnu/store/243algr6h60j46spn5dqhjc4mhkd0a0p-libelf-0.8.13
>    /gnu/store/ymyvcc0871lwbnkv5acf5lldv0ahm5z1-openjdk-9.181-jdk
>    /gnu/store/3hb80r2l48ix8pq2kvcsr1i9aj76d681-openjdk-9.181
>    /gnu/store/52bp22jrvwfqa5fmlv2y5vxcir74m8jb-openjdk-10.46-jdk
>    /gnu/store/bp86qd2vgaqahqam3n89xl1wz02g0srs-openjdk-10.46
>    /gnu/store/a8f5ksk3gb4i1wrn7m5fm5ijc0zwwg2w-openjdk-11.28-jdk
>    /gnu/store/9ni61z4nhvkrxbzj6gwip8zrb7zbkx6l-openjdk-11.28
>    /gnu/store/837pl2vmq9haiw3kmsnh72fkwvcljipk-openjdk-12.33-jdk
>    /gnu/store/ll5dgf42x9smclrc1mx4gyk3dl683m77-openjdk-13.0-jdk
>    /gnu/store/bjvy5ab6f0gff52m808vzcn3rw55yxjn-openjdk-14.0-doc
>    /gnu/store/r8kxk031fighc4dxr57nl0wirzhk8v08-openjdk-14.0-jdk
>    /gnu/store/25kx1vna763xh4mpszp4p4sy4j6iifs3-openjdk-14.0

Weird.  I see this:

--8<---------------cut here---------------start------------->8---
$ guix build openjdk -n
369.8 MB would be downloaded:
   /gnu/store/676kcvxnnjfcy960fy4xkr10fbn3ciay-openjdk-14.0-doc
   /gnu/store/dk8rkrfkdgsmy1a33n0sc39fhqggy1nh-openjdk-14.0-jdk
   /gnu/store/ylakfs5fwq5sqsk5zbkwwf2d1lp0jfxs-openjdk-14.0
$ guix build openjdk@13 -n
358.0 MB would be downloaded:
   /gnu/store/hipy0g8zpnicqcwhx5ygx9fmmkbgbw6w-openjdk-13.0-doc
   /gnu/store/ff9nn7ipbpnrrvsg0djdrzm0a8v1jx5j-openjdk-13.0-jdk
   /gnu/store/nb6p8aqjjw923vwd7safbh0w5q3mr9fq-openjdk-13.0
$ guix size openjdk@14 | grep openjdk
/gnu/store/ylakfs5fwq5sqsk5zbkwwf2d1lp0jfxs-openjdk-14.0           389.3   295.8  76.0%
$ guix describe
Generacio 175   Feb 04 2021 22:52:40    (nuna)
  guix 5ae09d7
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 5ae09d7979a0696d862b9555314eab199f7ce576
--8<---------------cut here---------------end--------------->8---

What this shows is that the compiled openjdk 14 does not depend on
previous versions; likewise for version 13.

So the long dependency chain is a built-time-only dependency chain.
It’s a problem when building from source but not when using substitutes.

Ludo’.




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

* bug#31719: Chains of dependencies getting longer
  2021-03-01 10:04   ` Ludovic Courtès
@ 2021-03-01 12:00     ` Andreas Enge
  2021-03-01 21:33       ` Ludovic Courtès
  0 siblings, 1 reply; 27+ messages in thread
From: Andreas Enge @ 2021-03-01 12:00 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 31719

Hello,

Am Mon, Mar 01, 2021 at 11:04:02AM +0100 schrieb Ludovic Courtès:
> Andreas Enge <andreas@enge.fr> skribis:
> > trying a "guix build openjdk", I see this:
> > 2136.0 MB would be downloaded
...
> >    /gnu/store/ymyvcc0871lwbnkv5acf5lldv0ahm5z1-openjdk-9.181-jdk
> >    /gnu/store/3hb80r2l48ix8pq2kvcsr1i9aj76d681-openjdk-9.181
...
> >    /gnu/store/bjvy5ab6f0gff52m808vzcn3rw55yxjn-openjdk-14.0-doc
> >    /gnu/store/r8kxk031fighc4dxr57nl0wirzhk8v08-openjdk-14.0-jdk
> >    /gnu/store/25kx1vna763xh4mpszp4p4sy4j6iifs3-openjdk-14.0
> 
> Weird.  I see this:
> 
> --8<---------------cut here---------------start------------->8---
> $ guix build openjdk -n
> 369.8 MB would be downloaded:
>    /gnu/store/676kcvxnnjfcy960fy4xkr10fbn3ciay-openjdk-14.0-doc
>    /gnu/store/dk8rkrfkdgsmy1a33n0sc39fhqggy1nh-openjdk-14.0-jdk
>    /gnu/store/ylakfs5fwq5sqsk5zbkwwf2d1lp0jfxs-openjdk-14.0

It is strange we do not see the same thing! I just tried it again, and am
getting the same result as above. Notice that openjdk@14 is available as a
substitute, but still all previous versions are downloaded, while nothing
is built. The same with the most recent master commit (7ca43b0a1e).

Andreas





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

* bug#31719: Chains of dependencies getting longer
  2021-03-01 12:00     ` Andreas Enge
@ 2021-03-01 21:33       ` Ludovic Courtès
  2021-03-01 22:15         ` Björn Höfling
  0 siblings, 1 reply; 27+ messages in thread
From: Ludovic Courtès @ 2021-03-01 21:33 UTC (permalink / raw)
  To: Andreas Enge; +Cc: 31719

Hi!

Andreas Enge <andreas@enge.fr> skribis:

> Am Mon, Mar 01, 2021 at 11:04:02AM +0100 schrieb Ludovic Courtès:
>> Andreas Enge <andreas@enge.fr> skribis:
>> > trying a "guix build openjdk", I see this:
>> > 2136.0 MB would be downloaded
> ...
>> >    /gnu/store/ymyvcc0871lwbnkv5acf5lldv0ahm5z1-openjdk-9.181-jdk
>> >    /gnu/store/3hb80r2l48ix8pq2kvcsr1i9aj76d681-openjdk-9.181
> ...
>> >    /gnu/store/bjvy5ab6f0gff52m808vzcn3rw55yxjn-openjdk-14.0-doc
>> >    /gnu/store/r8kxk031fighc4dxr57nl0wirzhk8v08-openjdk-14.0-jdk
>> >    /gnu/store/25kx1vna763xh4mpszp4p4sy4j6iifs3-openjdk-14.0
>> 
>> Weird.  I see this:
>> 
>> --8<---------------cut here---------------start------------->8---
>> $ guix build openjdk -n
>> 369.8 MB would be downloaded:
>>    /gnu/store/676kcvxnnjfcy960fy4xkr10fbn3ciay-openjdk-14.0-doc
>>    /gnu/store/dk8rkrfkdgsmy1a33n0sc39fhqggy1nh-openjdk-14.0-jdk
>>    /gnu/store/ylakfs5fwq5sqsk5zbkwwf2d1lp0jfxs-openjdk-14.0
>
> It is strange we do not see the same thing! I just tried it again, and am
> getting the same result as above. Notice that openjdk@14 is available as a
> substitute, but still all previous versions are downloaded, while nothing
> is built.

Wait, with a newer commit, I get the whole chain as well:

--8<---------------cut here---------------start------------->8---
$ guix build openjdk -n
2,135.0 MB would be downloaded:
   /gnu/store/ymyvcc0871lwbnkv5acf5lldv0ahm5z1-openjdk-9.181-jdk
   /gnu/store/3hb80r2l48ix8pq2kvcsr1i9aj76d681-openjdk-9.181
   /gnu/store/52bp22jrvwfqa5fmlv2y5vxcir74m8jb-openjdk-10.46-jdk
   /gnu/store/bp86qd2vgaqahqam3n89xl1wz02g0srs-openjdk-10.46
   /gnu/store/a8f5ksk3gb4i1wrn7m5fm5ijc0zwwg2w-openjdk-11.28-jdk
   /gnu/store/9ni61z4nhvkrxbzj6gwip8zrb7zbkx6l-openjdk-11.28
   /gnu/store/837pl2vmq9haiw3kmsnh72fkwvcljipk-openjdk-12.33-jdk
   /gnu/store/ll5dgf42x9smclrc1mx4gyk3dl683m77-openjdk-13.0-jdk
   /gnu/store/bjvy5ab6f0gff52m808vzcn3rw55yxjn-openjdk-14.0-doc
   /gnu/store/r8kxk031fighc4dxr57nl0wirzhk8v08-openjdk-14.0-jdk
   /gnu/store/25kx1vna763xh4mpszp4p4sy4j6iifs3-openjdk-14.0
$ guix describe
Generacio 176   Mar 01 2021 11:39:49    (nuna)
  guix 7ca43b0
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: master
    commit: 7ca43b0a1e2215abe0df0708f31decace8e68911
--8<---------------cut here---------------end--------------->8---

But again, from that Feb. 4th commit, everything looks fine:

--8<---------------cut here---------------start------------->8---
$ guix time-machine --commit=5ae09d7979a0696d862b9555314eab199f7ce576 -- build openjdk -n
369.8 MB would be downloaded:
   /gnu/store/676kcvxnnjfcy960fy4xkr10fbn3ciay-openjdk-14.0-doc
   /gnu/store/dk8rkrfkdgsmy1a33n0sc39fhqggy1nh-openjdk-14.0-jdk
   /gnu/store/ylakfs5fwq5sqsk5zbkwwf2d1lp0jfxs-openjdk-14.0
--8<---------------cut here---------------end--------------->8---

It must be a recent regression.  I think this is an unintended
side-effect of 44425e1f2a96aee39a21dff634abb9b77b44261e and
84805ef205b7fa12bfaa7b23da06993cab64c40b (see
<https://issues.guix.gnu.org/41177>):

--8<---------------cut here---------------start------------->8---
$ guix time-machine --commit=44425e1f2a96aee39a21dff634abb9b77b44261e -- build openjdk -n
2,135.9 MB would be downloaded:
   /gnu/store/wd9jyzy7i2dxbxahc0pa8mq22any08zx-openjdk-9.181-jdk
   /gnu/store/7zxhm2xmyqds8hvlhifi9d16p9ln9k4b-openjdk-9.181
   /gnu/store/j5sh6c7qhm6vis6fvjyxs2jch9dhz085-openjdk-10.46-jdk
   /gnu/store/7w3vd4y0jac7d74gw62qmfv7br11k64r-openjdk-10.46
   /gnu/store/0sb9z8ds8ly7pwmviaqixq9wq1rp13g5-openjdk-11.28-jdk
   /gnu/store/4nf35d4v363bxrfmp85sk671swzmbj5k-openjdk-11.28
   /gnu/store/iwi28gcfxrsq541367m4hnp44jnnrkdq-openjdk-12.33-jdk
   /gnu/store/2w5gg7v9sy54s1jfnymgvg6qwqnkzr8h-openjdk-13.0-jdk
   /gnu/store/sgqw343zlqqn4vpdq4v9m4jy6ar9i99f-openjdk-14.0-doc
   /gnu/store/8l4pb8rh9zbqjn14ipbps7nn8wd0jg4w-openjdk-14.0-jdk
   /gnu/store/1d5bzdzrir8k13bkclx3a9cq59gw5j4h-openjdk-14.0
--8<---------------cut here---------------end--------------->8---

Björn, WDYT?  I suppose we need to filter out some library names in
‘patch-jni-libs’?

While at it, we should add a #:disallowed-references keyword to prevent
that from popping up in the future.

Thanks,
Ludo’.




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

* bug#31719: Chains of dependencies getting longer
  2021-03-01 21:33       ` Ludovic Courtès
@ 2021-03-01 22:15         ` Björn Höfling
  2021-04-14  7:36           ` Ricardo Wurmus
  0 siblings, 1 reply; 27+ messages in thread
From: Björn Höfling @ 2021-03-01 22:15 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 31719

[-- Attachment #1: Type: text/plain, Size: 1819 bytes --]

On Mon, 01 Mar 2021 22:33:55 +0100
Ludovic Courtès <ludo@gnu.org> wrote:

> It must be a recent regression.  I think this is an unintended
> side-effect of 44425e1f2a96aee39a21dff634abb9b77b44261e and
> 84805ef205b7fa12bfaa7b23da06993cab64c40b (see
> <https://issues.guix.gnu.org/41177>):
> 
> --8<---------------cut here---------------start------------->8---
> $ guix time-machine --commit=44425e1f2a96aee39a21dff634abb9b77b44261e
> -- build openjdk -n 2,135.9 MB would be downloaded:
>    /gnu/store/wd9jyzy7i2dxbxahc0pa8mq22any08zx-openjdk-9.181-jdk
>    /gnu/store/7zxhm2xmyqds8hvlhifi9d16p9ln9k4b-openjdk-9.181
>    /gnu/store/j5sh6c7qhm6vis6fvjyxs2jch9dhz085-openjdk-10.46-jdk
>    /gnu/store/7w3vd4y0jac7d74gw62qmfv7br11k64r-openjdk-10.46
>    /gnu/store/0sb9z8ds8ly7pwmviaqixq9wq1rp13g5-openjdk-11.28-jdk
>    /gnu/store/4nf35d4v363bxrfmp85sk671swzmbj5k-openjdk-11.28
>    /gnu/store/iwi28gcfxrsq541367m4hnp44jnnrkdq-openjdk-12.33-jdk
>    /gnu/store/2w5gg7v9sy54s1jfnymgvg6qwqnkzr8h-openjdk-13.0-jdk
>    /gnu/store/sgqw343zlqqn4vpdq4v9m4jy6ar9i99f-openjdk-14.0-doc
>    /gnu/store/8l4pb8rh9zbqjn14ipbps7nn8wd0jg4w-openjdk-14.0-jdk
>    /gnu/store/1d5bzdzrir8k13bkclx3a9cq59gw5j4h-openjdk-14.0
> --8<---------------cut here---------------end--------------->8---
> 
> Björn, WDYT?  I suppose we need to filter out some library names in
> ‘patch-jni-libs’?

Ouch. While installing a JDK last week, I had the same feeling that the
dependency chain down was a bit too long, but then forgot to look at it
again. 

When I read today Andreas' email, it popped up again ... I will have a
look at it.

> While at it, we should add a #:disallowed-references keyword to
> prevent that from popping up in the future.

I wasn't aware of this and will also have a look.

Björn

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#31719: Chains of dependencies getting longer
  2021-03-01 22:15         ` Björn Höfling
@ 2021-04-14  7:36           ` Ricardo Wurmus
  2021-04-16 19:22             ` Björn Höfling
  0 siblings, 1 reply; 27+ messages in thread
From: Ricardo Wurmus @ 2021-04-14  7:36 UTC (permalink / raw)
  To: Björn Höfling; +Cc: 31719


Hi Björn,

> On Mon, 01 Mar 2021 22:33:55 +0100
> Ludovic Courtès <ludo@gnu.org> wrote:
>
>> It must be a recent regression.  I think this is an unintended
>> side-effect of 44425e1f2a96aee39a21dff634abb9b77b44261e and
>> 84805ef205b7fa12bfaa7b23da06993cab64c40b (see
>> <https://issues.guix.gnu.org/41177>):
>> 
>> --8<---------------cut 
>> here---------------start------------->8---
>> $ guix time-machine 
>> --commit=44425e1f2a96aee39a21dff634abb9b77b44261e
>> -- build openjdk -n 2,135.9 MB would be downloaded:
>>    /gnu/store/wd9jyzy7i2dxbxahc0pa8mq22any08zx-openjdk-9.181-jdk
>>    /gnu/store/7zxhm2xmyqds8hvlhifi9d16p9ln9k4b-openjdk-9.181
>>    /gnu/store/j5sh6c7qhm6vis6fvjyxs2jch9dhz085-openjdk-10.46-jdk
>>    /gnu/store/7w3vd4y0jac7d74gw62qmfv7br11k64r-openjdk-10.46
>>    /gnu/store/0sb9z8ds8ly7pwmviaqixq9wq1rp13g5-openjdk-11.28-jdk
>>    /gnu/store/4nf35d4v363bxrfmp85sk671swzmbj5k-openjdk-11.28
>>    /gnu/store/iwi28gcfxrsq541367m4hnp44jnnrkdq-openjdk-12.33-jdk
>>    /gnu/store/2w5gg7v9sy54s1jfnymgvg6qwqnkzr8h-openjdk-13.0-jdk
>>    /gnu/store/sgqw343zlqqn4vpdq4v9m4jy6ar9i99f-openjdk-14.0-doc
>>    /gnu/store/8l4pb8rh9zbqjn14ipbps7nn8wd0jg4w-openjdk-14.0-jdk
>>    /gnu/store/1d5bzdzrir8k13bkclx3a9cq59gw5j4h-openjdk-14.0
>> --8<---------------cut 
>> here---------------end--------------->8---
>> 
>> Björn, WDYT?  I suppose we need to filter out some library 
>> names in
>> ‘patch-jni-libs’?
>
> Ouch. While installing a JDK last week, I had the same feeling 
> that the
> dependency chain down was a bit too long, but then forgot to 
> look at it
> again. 
>
> When I read today Andreas' email, it popped up again ... I will 
> have a
> look at it.
>
>> While at it, we should add a #:disallowed-references keyword to
>> prevent that from popping up in the future.
>
> I wasn't aware of this and will also have a look.

Have you been able to identify what’s wrong with the JDK chain? 
I’d like us to drop these extra references soon so that they don’t 
appear in the upcoming release.

-- 
Ricardo




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

* bug#31719: Chains of dependencies getting longer
  2021-04-14  7:36           ` Ricardo Wurmus
@ 2021-04-16 19:22             ` Björn Höfling
  2021-04-16 22:26               ` Carlo Zancanaro
  0 siblings, 1 reply; 27+ messages in thread
From: Björn Höfling @ 2021-04-16 19:22 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: 31719

[-- Attachment #1: Type: text/plain, Size: 390 bytes --]

Hi Ricardo,

On Wed, 14 Apr 2021 09:36:23 +0200
Ricardo Wurmus <rekado@elephly.net> wrote:

> Have you been able to identify what’s wrong with the JDK chain? 
> I’d like us to drop these extra references soon so that they don’t 
> appear in the upcoming release.

Sorry, I currently don't find the time to look at the problem. Would
someone else give it a try?

Björn


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

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

* bug#31719: Chains of dependencies getting longer
  2021-04-16 19:22             ` Björn Höfling
@ 2021-04-16 22:26               ` Carlo Zancanaro
  2021-04-17  7:11                 ` Carlo Zancanaro
  0 siblings, 1 reply; 27+ messages in thread
From: Carlo Zancanaro @ 2021-04-16 22:26 UTC (permalink / raw)
  To: Björn Höfling; +Cc: rekado, 31719

On Sat, Apr 17 2021, Björn Höfling wrote:
> Sorry, I currently don't find the time to look at the problem. 
> Would someone else give it a try?

I just had a quick look, and I think we can resolve it by changing 
the patch-jni-libs to not rewrite references to "mlib_image" and 
"splashscreen". It looks like they're provided as part of the JVM 
built itself, but our build phase hard codes a reference to the 
previous JVM's build result instead of using the current JVM's 
build result. They're the only dependencies I've found so far, but 
I've only looked at openjdk10 and openjdk14.

I'll put together a patch later today, if I haven't been beaten to 
it by then.

Carlo




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

* bug#31719: Chains of dependencies getting longer
  2021-04-16 22:26               ` Carlo Zancanaro
@ 2021-04-17  7:11                 ` Carlo Zancanaro
  2021-04-17  9:38                   ` Carlo Zancanaro
  0 siblings, 1 reply; 27+ messages in thread
From: Carlo Zancanaro @ 2021-04-17  7:11 UTC (permalink / raw)
  Cc: rekado, 31719

[-- Attachment #1: Type: text/plain, Size: 827 bytes --]

Here's a patch that should clean up these runtime dependencies. 
It's a bit specific to this particular case, but I think that 
might be fine for now.

I think it would make more sense for native inputs to not have 
their paths included in LIBRARY_PATH. Does it even make sense for 
them to be there? I thought LIBRARY_PATH was for compilers to find 
dependencies when compiling so they can link their output binaries 
against them. Having native inputs show up there seems wrong.

I'm in the process of rebuilding Java from icedtea-8 upwards to 
check, but I have already tested that modifying openjdk 9 and 10 
leads to "guix gc --references" show that openjdk 10 does not 
depend on openjdk 9. I have also tested that I can run some 
complex Java programs on my machine using the openjdk 10 built 
using this patch.

Carlo


[-- Attachment #2: 0001-gnu-Clean-up-runtime-dependencies-between-Java-versi.patch --]
[-- Type: text/x-diff, Size: 4380 bytes --]

From f98dc5ad5662cc62f198d8f50e7dd719cf941315 Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro <carlo@zancanaro.id.au>
Date: Sat, 17 Apr 2021 16:33:06 +1000
Subject: [PATCH] gnu: Clean up runtime dependencies between Java versions.

* gnu/packages/java.scm (icedtea-8, openjdk9, openjdk11): Don't consider
icedtea/openjdk input paths when rewriting JNI libraries.
---
 gnu/packages/java.scm | 36 ++++++++++++++++++++++++++----------
 1 file changed, 26 insertions(+), 10 deletions(-)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 207f136513..3c4013ab6f 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -2,7 +2,7 @@
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
-;;; Copyright © 2017, 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
+;;; Copyright © 2017, 2019, 2021 Carlo Zancanaro <carlo@zancanaro.id.au>
 ;;; Copyright © 2017-2020 Julien Lepiller <julien@lepiller.eu>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
@@ -1792,8 +1792,13 @@ new Date();"))
                  (add-after 'unpack 'patch-jni-libs
                    ;; Hardcode dynamically loaded libraries.
                    (lambda _
-                     (let* ((library-path (search-path-as-string->list
-                                           (getenv "LIBRARY_PATH")))
+                     (use-modules (srfi srfi-1))
+                     (define (icedtea-or-openjdk? path)
+                       (or (string-contains path "openjdk")
+                           (string-contains path "icedtea")))
+                     (let* ((library-path (remove icedtea-or-openjdk?
+                                                  (search-path-as-string->list
+                                                   (getenv "LIBRARY_PATH"))))
                             (find-library (lambda (name)
                                             (search-path
                                              library-path
@@ -1931,12 +1936,18 @@ new Date();"))
          (add-after 'unpack 'patch-jni-libs
            ;; Hardcode dynamically loaded libraries.
            (lambda _
-             (let* ((library-path (search-path-as-string->list
-                                   (getenv "LIBRARY_PATH")))
+             (use-modules (srfi srfi-1))
+             (define (icedtea-or-openjdk? path)
+               (or (string-contains path "openjdk")
+                   (string-contains path "icedtea")))
+             (let* ((library-path (remove icedtea-or-openjdk?
+                                          (search-path-as-string->list
+                                           (getenv "LIBRARY_PATH"))))
                     (find-library (lambda (name)
-                                    (search-path
-                                     library-path
-                                     (string-append "lib" name ".so")))))
+                                    (or (search-path
+                                         library-path
+                                         (string-append "lib" name ".so"))
+                                        (string-append "lib" name ".so")))))
                (for-each
                 (lambda (file)
                   (catch 'decoding-error
@@ -2139,8 +2150,13 @@ new Date();"))
          (add-after 'unpack 'patch-jni-libs
            ;; Hardcode dynamically loaded libraries.
            (lambda _
-             (let* ((library-path (search-path-as-string->list
-                                   (getenv "LIBRARY_PATH")))
+             (use-modules (srfi srfi-1))
+             (define (icedtea-or-openjdk? path)
+               (or (string-contains path "openjdk")
+                   (string-contains path "icedtea")))
+             (let* ((library-path (remove icedtea-or-openjdk?
+                                          (search-path-as-string->list
+                                           (getenv "LIBRARY_PATH"))))
                     (find-library (lambda (name)
                                     (search-path
                                      library-path
-- 
2.31.1


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

* bug#31719: Chains of dependencies getting longer
  2021-04-17  7:11                 ` Carlo Zancanaro
@ 2021-04-17  9:38                   ` Carlo Zancanaro
  2021-04-19 16:22                     ` Andreas Enge
  0 siblings, 1 reply; 27+ messages in thread
From: Carlo Zancanaro @ 2021-04-17  9:38 UTC (permalink / raw)
  Cc: rekado, 31719

On Sat, Apr 17 2021, Carlo Zancanaro wrote:
> I'm in the process of rebuilding Java from icedtea-8 upwards to 
> check,

I've now built and checked the JRE/JDKs from 10 to 14, and none of 
them retain a reference to any other JRE/JDK according to "guix gc 
--references".

Carlo




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

* bug#31719: Chains of dependencies getting longer
  2021-04-17  9:38                   ` Carlo Zancanaro
@ 2021-04-19 16:22                     ` Andreas Enge
  2021-04-19 18:18                       ` Ricardo Wurmus
  0 siblings, 1 reply; 27+ messages in thread
From: Andreas Enge @ 2021-04-19 16:22 UTC (permalink / raw)
  To: Carlo Zancanaro; +Cc: rekado, 31719

Hello Carlo,

Am Sat, Apr 17, 2021 at 07:38:11PM +1000 schrieb Carlo Zancanaro:
> On Sat, Apr 17 2021, Carlo Zancanaro wrote:
> > I'm in the process of rebuilding Java from icedtea-8 upwards to check,
> 
> I've now built and checked the JRE/JDKs from 10 to 14, and none of them
> retain a reference to any other JRE/JDK according to "guix gc --references".

thanks a lot for your patch! I am not very knowledgeable on this matter, but
after updating my system am right now once again bitten by the problem:
The following derivations would be built:
   /gnu/store/0bxpgqps79007jky37dwzgm08wlsgj02-openjdk-10.46.drv
   /gnu/store/2xwsm2plrbk7l4510hrqp9y7b5vv9v5j-module-import-compiled.drv
1683.5 MB would be downloaded:
   /gnu/store/0gzv5208m2prqbnsqdffcnz7mwfqa684-openjdk-10.46.tar.xz
   /gnu/store/5g6ng9a2ifgrv57mzdaysf2lq9rkixxk-make-4.2.1
   /gnu/store/243algr6h60j46spn5dqhjc4mhkd0a0p-libelf-0.8.13
   /gnu/store/crc4cgsdls10isy8prjdddvsp21wafx6-openjdk-9.181-jdk
   /gnu/store/6amc3php7qyqxagak5xnmv2k81wm7w26-openjdk-9.181
   /gnu/store/bms6jg5qwn927qmbh9xi30ifhsxxdazq-openjdk-11.28-jdk
   /gnu/store/lylv6ng5gwqpi930c6y7sglh2k8byjn6-openjdk-11.28
   /gnu/store/z27mhqpylrbmwkcgrb100p6jbflxhq5h-openjdk-12.33-jdk
   /gnu/store/xz500ry11dihwn9kij1kmzkci1lmnqjf-openjdk-13.0-jdk
   /gnu/store/a1s66hlj10nkkcxlk6s2dzq4iip4mh4k-openjdk-14.0-doc
   /gnu/store/cyssia0a5lh8mb5czd7155y7sl31aryl-openjdk-14.0-jdk
   /gnu/store/630lvja8vak1bkf9vsbbh29cp79j4pwp-openjdk-14.0
guix build: warning: at least 5922.4 MB needed but only 3539.4 MB available in /gnu/store

So I would have to download lots of openjdk and even build one in the middle
of the chain myself.

So unless someone else objects, I intend to apply the patch, build the
latest openjdk, and push it if everything goes well.

Notice that the original problem reported by Ricardo seems to have been
fixed independently - "guix build icedtea" only downloads icedtea@3, and
not @2 on current master.

Thanks,

Andreas





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

* bug#31719: Chains of dependencies getting longer
  2021-04-19 16:22                     ` Andreas Enge
@ 2021-04-19 18:18                       ` Ricardo Wurmus
  2021-04-20  8:34                         ` Andreas Enge
  2021-04-20  9:01                         ` bug#31719: Chains of dependencies getting longer Carlo Zancanaro
  0 siblings, 2 replies; 27+ messages in thread
From: Ricardo Wurmus @ 2021-04-19 18:18 UTC (permalink / raw)
  To: Andreas Enge; +Cc: 31719


Andreas Enge <andreas@enge.fr> writes:

> So unless someone else objects, I intend to apply the patch, 
> build the
> latest openjdk, and push it if everything goes well.

Sounds good.

I just looked over the patch, and while I’m not sure it’s the best 
way to do things (matching “openjdk” or “icedtea” in the package 
name seems a little error prone in the presence of packages whose 
names might include these strings), but I think it’s a definite 
improvement.

Thank you Carlo!

-- 
Ricardo




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

* bug#31719: Chains of dependencies getting longer
  2021-04-19 18:18                       ` Ricardo Wurmus
@ 2021-04-20  8:34                         ` Andreas Enge
  2021-04-20  9:24                           ` bug#31719: icedtea-3 binaries contain references to icedtea-2 Ludovic Courtès
  2021-04-20  9:01                         ` bug#31719: Chains of dependencies getting longer Carlo Zancanaro
  1 sibling, 1 reply; 27+ messages in thread
From: Andreas Enge @ 2021-04-20  8:34 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: 31719

Hello,

Am Mon, Apr 19, 2021 at 08:18:03PM +0200 schrieb Ricardo Wurmus:
> I just looked over the patch, and while I’m not sure it’s the best way to do
> things (matching “openjdk” or “icedtea” in the package name seems a little
> error prone in the presence of packages whose names might include these
> strings), but I think it’s a definite improvement.

I just pushed the patch to master. Thanks a lot, Carlo! It has definitely
solved my problem: I can now compile an Android project after downloading
a single openjdk package.

It would be nice if someone else could close the bug if you feel the problem
is solved, or otherwise leave it open to discuss further possible improvements.

Andreas





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

* bug#31719: Chains of dependencies getting longer
  2021-04-19 18:18                       ` Ricardo Wurmus
  2021-04-20  8:34                         ` Andreas Enge
@ 2021-04-20  9:01                         ` Carlo Zancanaro
  1 sibling, 0 replies; 27+ messages in thread
From: Carlo Zancanaro @ 2021-04-20  9:01 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: 31719



On 20 April 2021 4:18:03 am AEST, Ricardo Wurmus <rekado@elephly.net> wrote:
>I just looked over the patch, and while I’m not sure it’s the best way to do things (matching “openjdk” or “icedtea” in the package name seems a little error prone in the presence of packages whose names might include these strings), but I think it’s a definite improvement.

Yeah, I'm agreed on that. I tried for a while to find a way to exclude native inputs, but as far as I could tell they all ended up as inputs within the build phases. I'd be happy to change it if somebody can give me a hint about how to pick out the native inputs.

Carlo




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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2021-04-20  8:34                         ` Andreas Enge
@ 2021-04-20  9:24                           ` Ludovic Courtès
  2021-04-20  9:36                             ` Andreas Enge
  2021-04-20 11:32                             ` Carlo Zancanaro
  0 siblings, 2 replies; 27+ messages in thread
From: Ludovic Courtès @ 2021-04-20  9:24 UTC (permalink / raw)
  To: Andreas Enge; +Cc: Ricardo Wurmus, 31719

[-- Attachment #1: Type: text/plain, Size: 949 bytes --]

Hi,

Andreas Enge <andreas@enge.fr> skribis:

> Am Mon, Apr 19, 2021 at 08:18:03PM +0200 schrieb Ricardo Wurmus:
>> I just looked over the patch, and while I’m not sure it’s the best way to do
>> things (matching “openjdk” or “icedtea” in the package name seems a little
>> error prone in the presence of packages whose names might include these
>> strings), but I think it’s a definite improvement.
>
> I just pushed the patch to master. Thanks a lot, Carlo! It has definitely
> solved my problem: I can now compile an Android project after downloading
> a single openjdk package.
>
> It would be nice if someone else could close the bug if you feel the problem
> is solved, or otherwise leave it open to discuss further possible improvements.

I think we can close it.  I have the attached improvements that I can
commit to ‘staging’ (or ‘core-updates’?) to avoid another rebuild.

Thanks!

Ludo’.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: the patch --]
[-- Type: text/x-patch, Size: 4535 bytes --]

From 253d0485a9307c4e08afc058d7dafcd56025f9a6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= <ludo@gnu.org>
Date: Tue, 20 Apr 2021 00:26:01 +0200
Subject: [PATCH] java fixlet

---
 gnu/packages/java.scm | 35 +++++++++++++++++++++++++++--------
 1 file changed, 27 insertions(+), 8 deletions(-)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 3c4013ab6f..b780f7a85f 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1749,6 +1749,9 @@ IcedTea build harness.")
          ((guix build ant-build-system)
           (guix build syscalls)
           ,@%gnu-build-system-modules)
+
+         #:disallowed-references ((,icedtea-7 "jdk"))
+
          ,@(substitute-keyword-arguments (package-arguments icedtea-7)
              ((#:modules modules)
               `((guix build utils)
@@ -1792,10 +1795,13 @@ new Date();"))
                  (add-after 'unpack 'patch-jni-libs
                    ;; Hardcode dynamically loaded libraries.
                    (lambda _
-                     (use-modules (srfi srfi-1))
+                     (define remove
+                       (@ (srfi srfi-1) remove))
+
                      (define (icedtea-or-openjdk? path)
                        (or (string-contains path "openjdk")
                            (string-contains path "icedtea")))
+
                      (let* ((library-path (remove icedtea-or-openjdk?
                                                   (search-path-as-string->list
                                                    (getenv "LIBRARY_PATH"))))
@@ -1898,6 +1904,9 @@ new Date();"))
        #:imported-modules
        ((guix build syscalls)
         ,@%gnu-build-system-modules)
+
+       #:disallowed-references (,icedtea-8 (,icedtea-8 "jdk"))
+
        #:phases
        (modify-phases %standard-phases
          (add-after 'patch-source-shebangs 'fix-java-shebangs
@@ -1936,18 +1945,20 @@ new Date();"))
          (add-after 'unpack 'patch-jni-libs
            ;; Hardcode dynamically loaded libraries.
            (lambda _
-             (use-modules (srfi srfi-1))
+             (define remove
+               (@ (srfi srfi-1) remove))
+
              (define (icedtea-or-openjdk? path)
                (or (string-contains path "openjdk")
                    (string-contains path "icedtea")))
+
              (let* ((library-path (remove icedtea-or-openjdk?
                                           (search-path-as-string->list
                                            (getenv "LIBRARY_PATH"))))
                     (find-library (lambda (name)
-                                    (or (search-path
-                                         library-path
-                                         (string-append "lib" name ".so"))
-                                        (string-append "lib" name ".so")))))
+                                    (search-path
+                                     library-path
+                                     (string-append "lib" name ".so")))))
                (for-each
                 (lambda (file)
                   (catch 'decoding-error
@@ -2090,7 +2101,9 @@ new Date();"))
                        "--with-libjpeg=system"
                        "--with-native-debug-symbols=zipped"
                        (string-append "--prefix=" (assoc-ref outputs "out")))
-               #t))))))
+               #t))))
+       ((#:disallowed-references _ '())
+        `(,openjdk9 (,openjdk9 "jdk")))))
     (native-inputs
      `(("openjdk9" ,openjdk9)
        ("openjdk9:jdk" ,openjdk9 "jdk")
@@ -2120,6 +2133,9 @@ new Date();"))
     (arguments
      `(#:imported-modules ((guix build syscalls)
                            ,@%gnu-build-system-modules)
+
+       #:disallowed-references (,openjdk10 (,openjdk10 "jdk"))
+
        #:tests? #f; requires jtreg
        ;; TODO package jtreg
        #:configure-flags
@@ -2150,10 +2166,13 @@ new Date();"))
          (add-after 'unpack 'patch-jni-libs
            ;; Hardcode dynamically loaded libraries.
            (lambda _
-             (use-modules (srfi srfi-1))
+             (define remove
+               (@ (srfi srfi-1) remove))
+
              (define (icedtea-or-openjdk? path)
                (or (string-contains path "openjdk")
                    (string-contains path "icedtea")))
+
              (let* ((library-path (remove icedtea-or-openjdk?
                                           (search-path-as-string->list
                                            (getenv "LIBRARY_PATH"))))
-- 
2.31.1


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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2021-04-20  9:24                           ` bug#31719: icedtea-3 binaries contain references to icedtea-2 Ludovic Courtès
@ 2021-04-20  9:36                             ` Andreas Enge
  2021-04-20 11:32                             ` Carlo Zancanaro
  1 sibling, 0 replies; 27+ messages in thread
From: Andreas Enge @ 2021-04-20  9:36 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Ricardo Wurmus, 31719

Am Tue, Apr 20, 2021 at 11:24:59AM +0200 schrieb Ludovic Courtès:
> I think we can close it.  I have the attached improvements that I can
> commit to ‘staging’ (or ‘core-updates’?) to avoid another rebuild.

I think they can easily go to master; the time for rebuilds is not very
high, I just ran into trouble since I had little space left on the device
so some manual intervention was required to gc intermediate packages.

There also seem to be very few dependencies if "guix refresh -l openjdk"
is to be trusted.

Andreas





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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2021-04-20  9:24                           ` bug#31719: icedtea-3 binaries contain references to icedtea-2 Ludovic Courtès
  2021-04-20  9:36                             ` Andreas Enge
@ 2021-04-20 11:32                             ` Carlo Zancanaro
  2021-04-20 16:38                               ` Ludovic Courtès
  1 sibling, 1 reply; 27+ messages in thread
From: Carlo Zancanaro @ 2021-04-20 11:32 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: Ricardo Wurmus, 31719

[-- Attachment #1: Type: text/plain, Size: 1152 bytes --]

Hi Ludo!

On Tue, Apr 20 2021, Ludovic Courtès wrote:
>                      (find-library (lambda (name)
> -                                    (or (search-path
> -                                         library-path
> -                                         (string-append "lib" 
> name ".so"))
> -                                        (string-append "lib" 
> name ".so")))))
> +                                    (search-path
> +                                     library-path
> +                                     (string-append "lib" name 
> ".so")))))
>                 (for-each

As discussed on IRC, the "or" is actually important here to avoid 
substituting #f as the library name. I've attached a patch on top 
of yours that adds the "or" back (including the other two that I 
missed in my earlier patch), and also switches to "string-append" 
which is less sensitive to this problem.

I have built up to openjdk11 with this patch, and I see less #f's 
in the result. There are still some in the compiled libraries, but 
I haven't investigated thoroughly as to whether they're correct or 
not.

Carlo


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-gnu-Fix-openjdk-library-substitution-when-libraries-.patch --]
[-- Type: text/x-diff, Size: 5205 bytes --]

From 60101b27543b7cc41a052d5bec95234ea4977d35 Mon Sep 17 00:00:00 2001
From: Carlo Zancanaro <carlo@zancanaro.id.au>
Date: Tue, 20 Apr 2021 21:22:20 +1000
Subject: [PATCH] gnu: Fix openjdk library substitution when libraries aren't
 found

* gnu/packages/java.scm (icedtea-8, openjdk9, openjdk11): Fix JNI library
substitution to not substitute #f if the library can't be found.
---
 gnu/packages/java.scm | 33 ++++++++++++++++++---------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index b780f7a85f..8a1ba5f262 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1806,9 +1806,10 @@ new Date();"))
                                                   (search-path-as-string->list
                                                    (getenv "LIBRARY_PATH"))))
                             (find-library (lambda (name)
-                                            (search-path
-                                             library-path
-                                             (string-append "lib" name ".so")))))
+                                            (or (search-path
+                                                 library-path
+                                                 (string-append "lib" name ".so"))
+                                                (string-append "lib" name ".so")))))
                        (for-each
                         (lambda (file)
                           (catch 'decoding-error
@@ -1816,9 +1817,9 @@ new Date();"))
                               (substitute* file
                                 (("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
                                   _ name version)
-                                 (format #f "\"~a\""  (find-library name)))
+                                 (string-append "\"" (find-library name) "\""))
                                 (("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
-                                 (format #f "\"~a\"" (find-library name)))))
+                                 (string-append "\"" (find-library name) "\""))))
                             (lambda _
                               ;; Those are safe to skip.
                               (format (current-error-port)
@@ -1956,9 +1957,10 @@ new Date();"))
                                           (search-path-as-string->list
                                            (getenv "LIBRARY_PATH"))))
                     (find-library (lambda (name)
-                                    (search-path
-                                     library-path
-                                     (string-append "lib" name ".so")))))
+                                    (or (search-path
+                                         library-path
+                                         (string-append "lib" name ".so"))
+                                        (string-append "lib" name ".so")))))
                (for-each
                 (lambda (file)
                   (catch 'decoding-error
@@ -1966,9 +1968,9 @@ new Date();"))
                       (substitute* file
                         (("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
                           _ name version)
-                         (format #f "\"~a\""  (find-library name)))
+                         (string-append "\"" (find-library name) "\""))
                         (("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
-                         (format #f "\"~a\"" (find-library name)))))
+                         (string-append "\"" (find-library name) "\""))))
                     (lambda _
                       ;; Those are safe to skip.
                       (format (current-error-port)
@@ -2177,9 +2179,10 @@ new Date();"))
                                           (search-path-as-string->list
                                            (getenv "LIBRARY_PATH"))))
                     (find-library (lambda (name)
-                                    (search-path
-                                     library-path
-                                     (string-append "lib" name ".so")))))
+                                    (or (search-path
+                                         library-path
+                                         (string-append "lib" name ".so"))
+                                        (string-append "lib" name ".so")))))
                (for-each
                 (lambda (file)
                   (catch 'decoding-error
@@ -2187,9 +2190,9 @@ new Date();"))
                       (substitute* file
                         (("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
                           _ name version)
-                         (format #f "\"~a\""  (find-library name)))
+                         (string-append "\"" (find-library name) "\""))
                         (("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
-                         (format #f "\"~a\"" (find-library name)))))
+                         (string-append "\"" (find-library name) "\""))))
                     (lambda _
                       ;; Those are safe to skip.
                       (format (current-error-port)
-- 
2.31.1


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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2021-04-20 11:32                             ` Carlo Zancanaro
@ 2021-04-20 16:38                               ` Ludovic Courtès
  2021-04-20 21:00                                 ` Carlo Zancanaro
  0 siblings, 1 reply; 27+ messages in thread
From: Ludovic Courtès @ 2021-04-20 16:38 UTC (permalink / raw)
  To: Carlo Zancanaro; +Cc: Ricardo Wurmus, 31719

Hi Carlo,

Carlo Zancanaro <carlo@zancanaro.id.au> skribis:

> From 60101b27543b7cc41a052d5bec95234ea4977d35 Mon Sep 17 00:00:00 2001
> From: Carlo Zancanaro <carlo@zancanaro.id.au>
> Date: Tue, 20 Apr 2021 21:22:20 +1000
> Subject: [PATCH] gnu: Fix openjdk library substitution when libraries aren't
>  found
>
> * gnu/packages/java.scm (icedtea-8, openjdk9, openjdk11): Fix JNI library
> substitution to not substitute #f if the library can't be found.

Thanks for the update patch!  Please mention ‘find-library’ in the
commit log, for clarity.

I think you can go and push it to master given that OpenJDK is probably
broken due to those #f right now.  However, please push an additional
commit at the same time that adds those #:disallowed-references I
proposed.  (Though you’ll have to rebuild openjdk@11 to be sure.)

Sounds good?

Ludo’.




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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2021-04-20 16:38                               ` Ludovic Courtès
@ 2021-04-20 21:00                                 ` Carlo Zancanaro
  2021-04-21 12:40                                   ` Ludovic Courtès
  0 siblings, 1 reply; 27+ messages in thread
From: Carlo Zancanaro @ 2021-04-20 21:00 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 31719



On 21 April 2021 2:38:56 am AEST, "Ludovic Courtès" <ludo@gnu.org> wrote:
>Sounds good?

Sounds good, except I don't have commit privileges. 😊 Can someone else push it for me?




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

* bug#31719: icedtea-3 binaries contain references to icedtea-2
  2021-04-20 21:00                                 ` Carlo Zancanaro
@ 2021-04-21 12:40                                   ` Ludovic Courtès
  0 siblings, 0 replies; 27+ messages in thread
From: Ludovic Courtès @ 2021-04-21 12:40 UTC (permalink / raw)
  To: Carlo Zancanaro; +Cc: 31719-done

Hi,

Carlo Zancanaro <carlo@zancanaro.id.au> skribis:

> On 21 April 2021 2:38:56 am AEST, "Ludovic Courtès" <ludo@gnu.org> wrote:
>>Sounds good?
>
> Sounds good, except I don't have commit privileges. 😊 Can someone else push it for me?

Oops!  I adjusted the patch so it would apply to ‘master’, and followed
up with two commits:

  f8acd1aeef gnu: openjdk: Disallow references to the JDK used for build.
  e511a1d327 gnu: openjdk: Avoid non-top-level 'use-modules'.
  698c4365ba gnu: openjdk: Fix library substitution when libraries aren't found.

I rebuilt everything up to openjdk@11.

Thanks!

Ludo’.




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

end of thread, other threads:[~2021-04-21 12:49 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-06-05 10:47 bug#31719: icedtea-3 binaries contain references to icedtea-2 Ricardo Wurmus
2018-06-05 11:49 ` Gábor Boskovits
2018-06-05 12:36   ` Ricardo Wurmus
2018-06-05 12:45   ` Leo Famulari
2018-06-05 14:45     ` Gábor Boskovits
2018-09-10 21:00 ` Gábor Boskovits
2020-05-14 18:02 ` Ricardo Wurmus
2021-02-27 11:17 ` bug#31719: Chains of dependencies getting longer Andreas Enge
2021-03-01 10:04   ` Ludovic Courtès
2021-03-01 12:00     ` Andreas Enge
2021-03-01 21:33       ` Ludovic Courtès
2021-03-01 22:15         ` Björn Höfling
2021-04-14  7:36           ` Ricardo Wurmus
2021-04-16 19:22             ` Björn Höfling
2021-04-16 22:26               ` Carlo Zancanaro
2021-04-17  7:11                 ` Carlo Zancanaro
2021-04-17  9:38                   ` Carlo Zancanaro
2021-04-19 16:22                     ` Andreas Enge
2021-04-19 18:18                       ` Ricardo Wurmus
2021-04-20  8:34                         ` Andreas Enge
2021-04-20  9:24                           ` bug#31719: icedtea-3 binaries contain references to icedtea-2 Ludovic Courtès
2021-04-20  9:36                             ` Andreas Enge
2021-04-20 11:32                             ` Carlo Zancanaro
2021-04-20 16:38                               ` Ludovic Courtès
2021-04-20 21:00                                 ` Carlo Zancanaro
2021-04-21 12:40                                   ` Ludovic Courtès
2021-04-20  9:01                         ` bug#31719: Chains of dependencies getting longer Carlo Zancanaro

Code repositories for project(s) associated with this public inbox

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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).