GNU bug report logs -
#70339
Constructing hg-fetch fixed-output derivation requires Mercurial
Previous Next
Full log
Message #11 received at 70339 <at> debbugs.gnu.org (full text, mbox):
Hi Ludo,
On Fri, 12 Apr 2024 at 11:30, Ludovic Courtès <ludovic.courtes <at> inria.fr> wrote:
> > $ 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
> >
> > and it is unexpected.
>
> That running ‘hg clone’ requires Mercurial isn’t totally unexpected to
> me. :-)
There is a misunderstanding, I guess.
Running 'hg clone' requires to have a local copy of Mercurial, yes for sure. :-)
However, just ask what it will run (please note the dash d in guix
build -S -d hg-commitsigs) must not require to have a local copy of
Mercurial (binary). If you still think yes, why is it not the case
for fixed-output derivations relying on the old Git builder?
> > I think it comes from this part:
> >
> > (hg-fetch '#$(hg-reference-url ref)
> > '#$(hg-reference-changeset ref)
> > #$output
> > #:hg-command (string-append #+hg "/bin/hg")))
> >
> > from ’hg-fetch’ in (guix hg-download). Here the #+hg is not required
> > because just before there is:
[...]
> Maybe, but one way or another, Mercurial is necessary.
Again, I think it is a bug from #+hg instead of plain "hg". Having a
local copy of Mercurial (binary) must not be required to just display
the fixed-output derivation. For running this fixed-output
derivation, yes for sure.
> Now, the ‘guix recover’ tool (or whatever you call it) you’re working on
> could create a different fixed-output derivation producing the same
> result but without using Mercurial; typically, the builder of that
> derivation would download from SWH.
>
> Does that make sense?
Yes, it makes sense; see my very first attempt in [1] :-).
But you cannot apply this strategy for fixed-output derivations
relying on Mercurial. You need first to build Mercurial (and thus all
the Python stack) just to display the fixed-output derivation. Then,
yes once you have this fixed-output derivation, it is possible to
manipulate it for getting another one.
This report is about #+hg that needs to be fixed for the future.
And because of that, the strategy above for fixed-output derivations
relying on Mercurial is doomed for the past, IMHO. Except if you have
an idea. ;-)
Cheers,
simon
1: https://gitlab.com/zimoun/guix-drv
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.