Subject: bug#22693: `guix refresh -u` updates other packages with same version

From: [email-masked] (Ludovic Courtès)
Date: Mon, 04 Apr 2016 22:57:09 +0200

Andy Wingo <[email-masked]> skribis:

> On Mon 04 Apr 2016 12:20, [email-masked] (宋文武) writes:
>
>> How to fix this?
>>
>> The procedure is ‘update-package-source’ in (guix upstream).
>> it find the file, then use ‘substitute’ to replace the version and
>> hash.  ‘substitute’ works line-by-line, it can’t match mutiple lines.
>>
>> I try:
>>  - use ‘package-location’ and ‘read’ to get the package object,
>>    but it lost all format and comments.
>
> One option:
>
>   1. open the source file for the package
>   2. Call (read) until port-line / port-column are beyond the
>      package-location of the package
>   3. At that point you have the ending location of the package.

Right.  ‘package-field-location’ does something along these lines.

> Then limit your substitute* to work within those lines.

A simpler yet less elegant trick used in ‘report-formatting-issues’ in
(guix scripts lint) is to have a maximum number of lines assumed to be
part of the ‘package’ form following its starting line.

Thanks,
Ludo’.