Subject: bug#69401: /etc/guix/machines.scm symlink can be garbage collected

From: Ludovic Courtès <[email-masked]>
Date: Sat, 06 Apr 2024 18:00:41 +0200

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

> root@hydra-guix-108 ~# guix gc -R $(readlink -f /run/current-system) |grep machines.scm
> /gnu/store/xg26iis3ydik6zxqk24cyk7h9zli1d25-machines.scm
> root@hydra-guix-108 ~# ls -l /etc/guix/machines.scm
> lrwxrwxrwx 1 root root 56 Mar  7 11:53 /etc/guix/machines.scm -> /gnu/store/1171q4xhph07ll3mlzlg7igcwg3c98i1-machines.scm

Turns out that both files are identical, but:

  • /gnu/store/1171q4xhph07ll3mlzlg7igcwg3c98i1-machines.scm is built
    with
    /gnu/store/g8p09w6r78hhkl2rv1747pcp9zbk6fxv-guile-3.0.9/bin/guile
    (‘guile-final’ ungrafted);

  • /gnu/store/xg26iis3ydik6zxqk24cyk7h9zli1d25-machines.scm is built
    with
    /gnu/store/g49b4v7dff8xwfi7wpi8pps1ixhld3n7-guile-3.0.9/bin/guile
    (‘guile-final’ grafted).

As it turns out, <scheme-file> (used for “machines.scm”) uses
‘gexp->file’, which, unlike ‘gexp->script’, does not default to
(default-guile).  That probably explains the difference.

Ludo’.