Subject: bug#20067: fix interpretation of grub configuration

From: [email-masked] (Ludovic Courtès)
Date: Tue, 23 Feb 2016 14:45:36 +0100

Tomáš Čech <[email-masked]> skribis:

> Grub configuration interpretes `linux' as directory where is located
> bzImage. If I enter file name instead, result configuration will be
> wrong.

The solution will be to not automatically append “/bzImage” (and
likewise for the initrd.)

We could change places where ‘menu-entry’ is instantiated to:

  #~(string-append #$kernel "/bzImage")

However, there’s the problem that the image name appears in the
‘parameters’ file of the system (as seen in the output of ‘guix system
build foo.scm’), where it is unevaluated.  If we use ‘string-append’ as
above, a raw (string-append …) sexp will appear in there, which is not
nice.

To address this, an idea is to add “expanders” for gexps: gexps already
have “compilers”, and expanders would be similar except that they would
produce something possibly different from just the derivation’s output
file name.  For instance, we could write:

  (file-append kernel "/bzImage")

and that would expand directly to:

  "/gnu/store/…/bzImage"

Ludo’.