Subject: bug#31085: closed (Re: bug#31085: Unexpected behaviour when running `guix build lilypond')

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 23 Apr 2018 13:27:02 +0000

Your bug report

#31085: Unexpected behaviour when running `guix build lilypond'

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
31085: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=31085
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#31085: Unexpected behaviour when running `guix build lilypond'
From: [email-masked] (Ludovic Courtès)
To: Diego Nicola Barbato <[email-masked]>
Cc: [email-masked]
Date: Mon, 23 Apr 2018 15:26:24 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Diego Nicola Barbato <[email-masked]> skribis:

> [email-masked] (Ludovic Courtès) writes:
>
>> Hello,
>>
>> Diego Nicola Barbato <[email-masked]> skribis:
>>
>>> I have experienced some unexpected behaviour when running `guix build
>>> lilypond':
>>> After verifying that there was a substitute available with `guix weather
>>> -m m.scm' (Where m.scm evaluates to a manifest containing only lilypond)
>>> I ran `guix build lilypond --dry-run' which claimed that a substitute
>>> would be downloaded.  I then ran `guix build lilypond' which proceeded
>>> to build lilypond from source (instead of downloading the substitute).
>>>
>>> Upon explaining this on IRC it was suggested that I try running `guix
>>> build --no-grafts lilypond' (which actually downloaded the substitute)
>>> then deleting the locally built lilypond with `guix gc --delete
>>> /gnu/store/...' and finally running `guix build lilypond' again (which,
>>> this time, grafted the substituted lilypond instead of building it from
>>> source again).  While this fixed the issue I was told that this
>>> behaviour was indeed unexpected.
>>
>> We’d have to see if this is still reproducible, but I have a plausible
>> explanation.
>
> I can consistently reproduce this in a VM with the following steps:
>
> First I run:
>
>  $ qemu-system-x86_64 -enable-kvm -snapshot -m 4G $(guix system vm-image bare-bones.scm --image-size=8G)
>
> (Where bare-bones.scm is the bare-bones.tmpl after replacing /dev/sdX
> with /dev/sda.)
>
> Then after logging in as root:
>
>  # guix pull --commit=872bda5de52a8f0514230ebc4e9680aab74f509a
>  # guix build --dry-run lilypond
>
> Which returns:
>
> 52.1 MB would be downloaded:
>    /gnu/store/0amx7bcbs518lkqwfh2azmqrp2yqib0g-lilypond-2.19.80
>    /gnu/store/7b5ykfl6jbrdl8j7xp630fga4as3234z-ghostscript-9.22
>    /gnu/store/j4vj7h3wyb532g2j0axzjj43z2a0dg81-python-2.7.14
>    /gnu/store/k2ak44m0miind785x22mmpbcwi0mq7hq-freetype-2.8.1
>    /gnu/store/mkhfqx7m7pniyic0kh0lnafmajymn4dr-guile-1.8.8
>    /gnu/store/pwbx5fhjrq9crr1c0d2x08ch0l6vr3cv-pango-1.40.14
>    /gnu/store/qm8ri32n0rkh749v3jb3x8s8ksjl7yd3-fontconfig-2.12.6
>    /gnu/store/sm37m59gq3smxxz8gs4jikn50qg0g7xh-glib-2.54.2
>
> Then:
>
>  # guix build lilypond
>
> Which, after downloading the dependencies, starts to build lilypond from
> source.

I could reproduce it.  This is fixed by commit
5e5d6613a3837586ccab51cd988b44c7df99253b.

The story is quite surprising: the ‘font-tex-gyre’ packages uses
‘url-fetch/zipbomb’.  ‘url-fetch/zipbomb’ refers to unzip to do its
job.  With grafts enabled, ‘url-fetch/zipbomb’ would use a grafted
unzip, leading to a different /gnu/store/…-tg-2.005otf.zip than when
grafts are disabled.

Consequently, the base lilypond.drv would already depend on whether or
not grafts are enabled.  When grafts are enabled, you would end up
having to build a lilypond that’s different from what “guix build
lilypond --no-grafts” builds because of this.

I hope this explanation makes any sense but anyway, it’s fixed now.  :-)

Thanks,
Ludo’.

Subject: Unexpected behaviour when running `guix build lilypond'
From: Diego Nicola Barbato <[email-masked]>
To: [email-masked]
Date: Fri, 06 Apr 2018 22:22:07 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hello Guix

I have experienced some unexpected behaviour when running `guix build
lilypond':
After verifying that there was a substitute available with `guix weather
-m m.scm' (Where m.scm evaluates to a manifest containing only lilypond)
I ran `guix build lilypond --dry-run' which claimed that a substitute
would be downloaded.  I then ran `guix build lilypond' which proceeded
to build lilypond from source (instead of downloading the substitute).

Upon explaining this on IRC it was suggested that I try running `guix
build --no-grafts lilypond' (which actually downloaded the substitute)
then deleting the locally built lilypond with `guix gc --delete
/gnu/store/...' and finally running `guix build lilypond' again (which,
this time, grafted the substituted lilypond instead of building it from
source again).  While this fixed the issue I was told that this
behaviour was indeed unexpected.

I run GuixSD (commit: ae81bf4f995466a4650e2756d2763b8a163d2f63) on an
x86-64 machine.

Greetings

Diego