GNU bug report logs - #70339
Constructing hg-fetch fixed-output derivation requires Mercurial

Previous Next

Package: guix;

Reported by: Simon Tournier <zimon.toutoune <at> gmail.com>

Date: Thu, 11 Apr 2024 13:17:02 UTC

Severity: normal

Done: Simon Tournier <zimon.toutoune <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Simon Tournier <zimon.toutoune <at> gmail.com>
Subject: bug#70339: closed (Re: bug#70339: Constructing hg-fetch
 fixed-output derivation requires Mercurial)
Date: Mon, 22 Apr 2024 13:46:05 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#70339: Constructing hg-fetch fixed-output derivation requires Mercurial

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 70339 <at> debbugs.gnu.org.

-- 
70339: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=70339
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Simon Tournier <zimon.toutoune <at> gmail.com>
To: Ludovic Courtès <ludovic.courtes <at> inria.fr>
Cc: 70339-done <at> debbugs.gnu.org
Subject: Re: bug#70339: Constructing hg-fetch fixed-output derivation
 requires Mercurial
Date: Mon, 22 Apr 2024 02:22:00 +0200
Hi,

On ven., 12 avril 2024 at 16:05, Ludovic Courtès <ludovic.courtes <at> inria.fr> wrote:

> In this case, what’s happening is grafts: Guix downloads (or builds)
> Mercurial so it can compute its grafted derivation.

Ah indeed!  Damned. :-)

Closing.

Cheers,
simon

[Message part 3 (message/rfc822, inline)]
From: Simon Tournier <zimon.toutoune <at> gmail.com>
To: bug-guix <at> gnu.org
Subject: Constructing hg-fetch fixed-output derivation requires Mercurial
Date: Wed, 10 Apr 2024 18:18:14 +0200
Hi,

For instance,

--8<---------------cut here---------------start------------->8---
$ guix build -S -d hg-commitsigs
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
3,7 MB will be downloaded:
  /gnu/store/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2
substituting /gnu/store/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2...
downloading from https://ci.guix.gnu.org/nar/lzip/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2 ...
 mercurial-6.2.2  3.5MiB                                                   529KiB/s 00:07 ▕██████████████████▏ 100.0%

/gnu/store/pkb6zd9xfmxx6rsh4p7w3glh7xqg5sqy-hg-commitsigs-0.1.0-0.b53eb68-checkout.drv
--8<---------------cut here---------------end--------------->8---

and it is unexpected.  The construction of the fixed-output derivation
does not need to download stuff; it only needs to compose stuff
detailing how to do.  Any download (or build) must happen when running
the derivation itself.

The issue: later – say 1 or 2 years from now – the command:

   guix time-machone --commit=929ddec -- build -S -d hg-commitsigs

will start to build all what Mercurial needs (python etc.).  If for some
reasons*, only one of Mercurial dependencies fails then we are doomed.

    ( Context: I am working on a fixed-output translator; rely on
      current strategies for downloading and do not require all the past
      stack just for downloading source code. )

I think it comes from this part:

--8<---------------cut here---------------start------------->8---
                     (hg-fetch '#$(hg-reference-url ref)
                               '#$(hg-reference-changeset ref)
                               #$output
                               #:hg-command (string-append #+hg "/bin/hg")))
--8<---------------cut here---------------end--------------->8---

from ’hg-fetch’ in (guix hg-download).  Here the #+hg is not required
because just before there is:

            (set-path-environment-variable "PATH" '("bin")
                                           (match '#+inputs
                                             (((names dirs outputs ...) ...)
                                              dirs)))

So relying on string "hg" should be enough; as it is done in
’git-fetch/in-band*’ for one example.

Do I miss something?


Cheers,
simon

*reasons of failures: See
 https://guix.gnu.org/en/blog/2024/adventures-on-the-quest-for-long-term-reproducible-deployment



This bug report was last modified 1 year and 28 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.