Subject: bug#28157: “r-minimal” retains no reference to “which”

From: Ricardo Wurmus <[email-masked]>
Date: Tue, 22 Aug 2017 11:19:45 +0200

Ludovic Courtès <[email-masked]> writes:

> Ricardo Wurmus <[email-masked]> skribis:
>
>> R provides a function “Sys.which”, which embeds the full path to “which”
>> at configure time.  The path it embeds is that of “which” *before*
>> grafts.
>
> Where’s that reference?  I couldn’t find it:

You can see the reference (before commit
a8cd352304807ef60d06c35da07c5456f036688c) within an R session.  If you
type “Sys.which” the code for “Sys.which” will be printed.

    $ /gnu/store/hzc1fnrjv8ys399glbzmhds21fm9zzva-r-minimal-3.4.0/bin/R -e 'Sys.which' | grep /gnu/store
    which <- "/gnu/store/ppyczjc1figwv6yb6brg938y49856avb-which-2.21/bin/which"

(The reference is the same as “guix build --no-grafts which”.)

> Normally the grafting code replaces all the store references, unless the
> reference is somehow obfuscated (which would be surprising here.)

Right.  In the case of R, the environment for a package is serialized to
a possibly compressed data file (.Rdb) with an index (.Rdx).
“Sys.which” is part of the “base” package and I cannot find a plain text
reference to “bin/which” in the binaries for “base”.

I don’t know if we can (or should) disable compression for Rdb files.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net