Subject: Re: [bug#60042] Julia dependency on Git

From: zimoun <[email-masked]>
Date: Fri, 30 Dec 2022 14:15:29 +0100

Hi Ludo,

On Sat, 24 Dec 2022 at 00:51, Ludovic Courtès <[email-masked]> wrote:

> Oh right.  I found that ‘julia-documenter’ depends on ‘git-minimal’; I
> changed it to depend on ‘git-minimal/fixed’.  (The purpose of ‘/fixed’
> variants, such as ‘guile-3.0/fixed’, is to avoid rebuilds of unrelated
> sub-graphs.)  A few other packages were in a similar situation:

Two things are really hard in computer science: naming and cache
invalidation. :-)

Here, the suffix /fixed is confusing because it is used for the both
cases:

 1) You use fixed to describe something which stays the same and does not
    or cannot vary.
 2) If you fix a problem or a bad situation, you deal with it and make it
    satisfactory.

For instance, it is the meaning #2,

--8<---------------cut here---------------start------------->8---
(define gnupg/fixed
  (package
    (inherit gnupg)
    (source (origin
              (inherit (package-source gnupg))
              (patches
                (append (origin-patches (package-source gnupg))
                        (search-patches "gnupg-CVE-2022-34903.patch")))))))
--8<---------------cut here---------------end--------------->8---

therefore, I expect that the package gnupg is replaced (grafted).  And
indeed,

--8<---------------cut here---------------start------------->8---
(define-public gnupg
  (package
    (name "gnupg")
    ;; Note: The 2.2.X releases are Long Term Support (LTS), so stick to it
    ;; for our stable 'gnupg'.
    ;; Note2: 2.2.33 currently suffers from regressions, so do not update to it
    ;; (see: https://dev.gnupg.org/T5742).
    (version "2.2.32")
    (replacement gnupg/fixed)
--8<---------------cut here---------------end--------------->8---

Well, the situation looks like:

version-control.scm:673:(define-public git-minimal/fixed  #1 stable
onc-rpc.scm:91:         (define libtirpc/fixed            #2
gnupg.scm:257:          (define libksba/fixed             #2
gnupg.scm:369:          (define gnupg/fixed               #2
linux.scm:2164:         (define-public util-linux/fixed   #2
linux.scm:7674:         (define-public libnftnl/fixed     #1 stable
tls.scm:601:            (define openssl/fixed             #2
samba.scm:295:          (define-public samba/fixed        #1 stable
xml.scm:159:            (define expat/fixed               #2
compression.scm:1890:   (define unzip/fixed               #2
guile.scm:424:          (define-public guile-3.0/fixed    #1 stable

Therefore, to avoid the confusion I would suggest to use /pinned instead
of /fixed for this stable meaning.  Hence, 4 renaming.  WDYT?

Cheers,
simon