* bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial @ 2024-04-10 16:18 Simon Tournier 2024-04-12 9:30 ` Ludovic Courtès 0 siblings, 1 reply; 5+ messages in thread From: Simon Tournier @ 2024-04-10 16:18 UTC (permalink / raw) To: 70339 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 ^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial 2024-04-10 16:18 bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial Simon Tournier @ 2024-04-12 9:30 ` Ludovic Courtès 2024-04-12 12:42 ` Simon Tournier 0 siblings, 1 reply; 5+ messages in thread From: Ludovic Courtès @ 2024-04-12 9:30 UTC (permalink / raw) To: Simon Tournier; +Cc: 70339 Hello! Simon Tournier <zimon.toutoune@gmail.com> skribis: > $ 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. :-) > 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: > > (set-path-environment-variable "PATH" '("bin") > (match '#+inputs > (((names dirs outputs ...) ...) > dirs))) Maybe, but one way or another, Mercurial is necessary. 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? HTH, Ludo’. ^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial 2024-04-12 9:30 ` Ludovic Courtès @ 2024-04-12 12:42 ` Simon Tournier 2024-04-12 14:05 ` Ludovic Courtès 0 siblings, 1 reply; 5+ messages in thread From: Simon Tournier @ 2024-04-12 12:42 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 70339 Hi Ludo, On Fri, 12 Apr 2024 at 11:30, Ludovic Courtès <ludovic.courtes@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 ^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial 2024-04-12 12:42 ` Simon Tournier @ 2024-04-12 14:05 ` Ludovic Courtès 2024-04-22 0:22 ` Simon Tournier 0 siblings, 1 reply; 5+ messages in thread From: Ludovic Courtès @ 2024-04-12 14:05 UTC (permalink / raw) To: Simon Tournier; +Cc: 70339 Simon Tournier <zimon.toutoune@gmail.com> skribis: > Hi Ludo, > > On Fri, 12 Apr 2024 at 11:30, Ludovic Courtès <ludovic.courtes@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? Oh sorry, I had missed the ‘-d’ bit. In this case, what’s happening is grafts: Guix downloads (or builds) Mercurial so it can compute its grafted derivation. >> 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] :-). [...] > 1: https://gitlab.com/zimoun/guix-drv Nice! Thanks, Ludo’. ^ permalink raw reply [flat|nested] 5+ messages in thread
* bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial 2024-04-12 14:05 ` Ludovic Courtès @ 2024-04-22 0:22 ` Simon Tournier 0 siblings, 0 replies; 5+ messages in thread From: Simon Tournier @ 2024-04-22 0:22 UTC (permalink / raw) To: Ludovic Courtès; +Cc: 70339-done Hi, On ven., 12 avril 2024 at 16:05, Ludovic Courtès <ludovic.courtes@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 ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-04-22 14:18 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-04-10 16:18 bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial Simon Tournier 2024-04-12 9:30 ` Ludovic Courtès 2024-04-12 12:42 ` Simon Tournier 2024-04-12 14:05 ` Ludovic Courtès 2024-04-22 0:22 ` Simon Tournier
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).