Subject: Re: bug#32347: gzip cannot be patched

From: [email-masked] (Ludovic Courtès)
Date: Sun, 19 Aug 2018 15:48:05 +0200

Hello,

Efraim Flashner <[email-masked]> skribis:

> On Thu, Aug 02, 2018 at 01:32:02PM +0200, Marius Bakke wrote:
>> Hello!
>> 
>> I'm trying to add a patch to 'gzip', but it causes an infinite loop and
>> eventually the system runs out of memory.
>> 
>> It can be reproduced by adding this hunk:
>> 
>
>> modified   gnu/packages/compression.scm
>> @@ -215,6 +215,7 @@ adding and extracting files to/from a tar archive.")
>>              (method url-fetch)
>>              (uri (string-append "mirror://gnu/gzip/gzip-"
>>                                  version ".tar.xz"))
>> +            (snippet '(#t))
>>              (sha256
>>               (base32
>>                "16h8g4acy7fgfxcjacr3wijjsnixwsfd2jhz3zwdi2qrzi262l5f"))))
>> 
>> [back]
>> 
>> I guess this is because gzip itself is a patch input.  Is this something
>> that can be fixed, or do we have to use "patching phases" in these cases?
>
> Its also in commencement.scm, so that might be the loop instead. You
> could try "unpatching" it there. It looks like it has a pseudo-package
> inside of glibc-utf8-locales-final, with grep-final a few packages lower
> being potential inspiration for undoing the modifications in "real
> gzip".

Indeed.  The ‘bootstrap-origin’ procedure, defined in (gnu packages
bootstrap), arranges to use the bootstrap binaries of gzip, patch,
guile, etc. when patching origins.

Perhaps we’re missing a use of ‘bootstrap-origin’ somewhere in (gnu
packages commencement)?

HTH,
Ludo’.