Subject: Re: bug#25991: [PATCH] gnu: surf: Add 'dmenu' and 'xprop' to 'inputs'.

From: Leo Famulari <[email-masked]>
Date: Mon, 6 Mar 2017 13:38:28 -0500

On Sun, Mar 05, 2017 at 10:23:48PM -0500, Kei Kebreau wrote:
> Danny Milosavljevic <[email-masked]> writes:
> > It's not finished. http://git.suckless.org/surf/tree/config.def.h#n38
> > invokes xprop and dmenu - and these places would have to be
> > substituted by store references, like:
> >
> > (substitute* "tree/config.def.h"
> >   (("xprop") (string-append (assoc-ref inputs "xprop") "/bin/xprop"))
> >   (("dmenu") (string-append (assoc-ref inputs "dmenu") "/bin/dmenu")))
> >
> > I'm not sure whether Guix will retain the store references on the next
> > GC, though.
> 
> I'm sure Guix does, considering we use this trick for all sorts of
> packages, including important ones like shadow.

Basically, after building the package, Guix scans the built output for
store references. That is, strings like '/gnu/store/cabba9e...-foo-1.0/'.

If it finds them, they are recorded in a database in $localstatedir.

If the store references are obscured somehow [0], this method fails and
things break.

So, as long as 'tree/config.def.h' is included in the built output of
surf as plaintext, everything should work.

[0] For example, in cases like these:
https://bugs.gnu.org/24703
https://bugs.gnu.org/20765