Subject: Re: [bug#61363] [PATCH v3] self: Apply grafts to the outputs of the guix derivation.

From: Simon Tournier <[email-masked]>
Date: Tue, 16 May 2023 15:25:37 +0200

Hi Chris,

I am late to the party and probably do not well understand all that
part.  Just a quick comment in the same direction as Ludo.

On Mon, 17 Apr 2023 at 15:59, Christopher Baines <[email-masked]> wrote:

> diff --git a/guix/self.scm b/guix/self.scm
> index 74c953bd50..bbc0beaca8 100644
> --- a/guix/self.scm
> +++ b/guix/self.scm

[...]

> +           (if graft?
> +               (explicit-grafting obj
> +                                  (map (compose force cdr) %packages))
> +               obj)))

[...]

> +           (if graft?
> +               (explicit-grafting obj
> +                                  (map (compose force cdr) %packages))
> +               obj)))

It means that the grafts are only applied to %packages, right?

Other said, defined by:

--8<---------------cut here---------------start------------->8---
(define %packages
  (let ((ref (lambda (module variable)
               (delay
                 (module-ref (resolve-interface
                              `(gnu packages ,module))
                             variable)))))
    `(("guile"              . ,(ref 'guile 'guile-3.0-latest))
      ("guile-avahi"        . ,(ref 'guile-xyz 'guile-avahi))
      ("guile-json"         . ,(ref 'guile 'guile-json-4))
      ("guile-ssh"          . ,(ref 'ssh   'guile-ssh))
      ("guile-git"          . ,(ref 'guile 'guile-git))
      ("guile-semver"       . ,(ref 'guile-xyz 'guile-semver))
      ("guile-lib"          . ,(ref 'guile-xyz 'guile-lib))
      ("guile-sqlite3"      . ,(ref 'guile 'guile-sqlite3))
      ("guile-zlib"         . ,(ref 'guile 'guile-zlib))
      ("guile-lzlib"        . ,(ref 'guile 'guile-lzlib))
      ("guile-zstd"         . ,(ref 'guile 'guile-zstd))
      ("guile-gcrypt"       . ,(ref 'gnupg 'guile-gcrypt))
      ("guile-gnutls"       . ,(ref 'tls 'guile-gnutls))
      ("guix-daemon"        . ,(ref 'package-management 'guix-daemon))
      ("disarchive"         . ,(ref 'backup 'disarchive))
      ("guile-lzma"         . ,(ref 'guile 'guile-lzma))
      ("gzip"               . ,(ref 'compression 'gzip))
      ("bzip2"              . ,(ref 'compression 'bzip2))
      ("xz"                 . ,(ref 'compression 'xz))
      ("po4a"               . ,(ref 'gettext 'po4a))
      ("gettext-minimal"    . ,(ref 'gettext 'gettext-minimal))
      ("gcc-toolchain"      . ,(ref 'commencement 'gcc-toolchain))
      ("glibc-utf8-locales" . ,(ref 'base 'glibc-utf8-locales))
      ("graphviz"           . ,(ref 'graphviz 'graphviz))
      ("texinfo"            . ,(ref 'texinfo 'texinfo)))))
--8<---------------cut here---------------end--------------->8---

tweaked by e5c33837cbee98d460d9ae09b463501de6f15d97.  And there is a
slippery slope: the manual addition.  These had been added with
e5c33837cbee98d460d9ae09b463501de6f15d97:

    + ("glibc-utf8-locales" . ,(ref 'base               'glibc-utf8-locales))
    + ("graphviz"           . ,(ref 'graphviz           'graphviz))
    + ("guix-daemon"        . ,(ref 'package-management 'guix-daemon))
    + ("texinfo"            . ,(ref 'texinfo            'texinfo)))))

Other said, what does it happen if we forget to manually update this
list?

Cheers,
simon