Subject: [bug#53995] [PATCH 31/31] gnu: update rbw to 1.4.3.

From: Maxime Devos <[email-masked]>
Date: Tue, 15 Mar 2022 17:25:32 +0100

Nicolas Graves schreef op di 15-03-2022 om 14:26 [+0100]:
> > Wouldn't this be a problem of the 'rust-rsa' package?  I would move
> > this version relaxing to the 'rust-rsa' package, such that all
> > dependents of rust-rsa can benefit.
> 
> I don't think that necessarily applies to every package dependent on
> rust-rsa, I would rather keep it this way.

Some remarks:

  * while cargo-build-system creates a "guix-vendor" directory,
    this seems an implementation detail to me, maybe one day it will
    switch to a {CROSS_,}LIBRARY_PATH system like gcc uses.

  * IIUC it does necessarily apply to every package dependent on
    rust-rsa, at least those using #:cargo-inputs
    / #:cargo-development-inputs.

    Empirically: I searched for "rust-rsa" in the source code of Guix.
    Its only user 'rbw' apparently copies the 'substitute*'.

    Theoretically: suppose a package rust-foo depends on rust-rsa (and
    for simplicity, assume that rust-rsa is its only dependency), via
    #:cargo-inputs / #:cargo-development-inputs.

    Then currently, rust-rsa builds because of its 'relax-requirements'
    phase, but IIUC, this is forgotten when 'rust-foo' is being built,
    because 'expand-crate-sources' in (guix build-system cargo) just
    looks at the 'source' field of 'rust-rsa' and not the build result,
    so the build of rust-foo would fail (unverified).

  * even if it's not necessary for all dependents, but only for, say,
    20%, it seems more convenient to me to only have to do the
    substitute* in a single location (i.e., rust-rsa).  An additional
    benefit is that, if the version requirements change at some point
    in the future, then the 'substitute*' only has to be adjusted in a
    single place.

Greetings,
Maxime.