* which package gets built first? @ 2022-11-04 5:34 jgart 2022-11-04 5:35 ` jgart 2022-11-04 9:49 ` zimoun 0 siblings, 2 replies; 5+ messages in thread From: jgart @ 2022-11-04 5:34 UTC (permalink / raw) To: Guix Help What determines which package gets built first in the following invocation? `guix build emacs-zig-mode zig` ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: which package gets built first? 2022-11-04 5:34 which package gets built first? jgart @ 2022-11-04 5:35 ` jgart 2022-11-04 9:49 ` zimoun 1 sibling, 0 replies; 5+ messages in thread From: jgart @ 2022-11-04 5:35 UTC (permalink / raw) To: Guix Help On Fri, 04 Nov 2022 00:34:32 -0500 jgart <jgart@dismail.de> wrote: > What determines which package gets built first in the following invocation? > > `guix build emacs-zig-mode zig` The reason I ask is because zig got built first but I'm not sure why... ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: which package gets built first? 2022-11-04 5:34 which package gets built first? jgart 2022-11-04 5:35 ` jgart @ 2022-11-04 9:49 ` zimoun 2022-11-04 16:39 ` ( 1 sibling, 1 reply; 5+ messages in thread From: zimoun @ 2022-11-04 9:49 UTC (permalink / raw) To: jgart, Guix Help Hi, On Fri, 04 Nov 2022 at 00:34, jgart <jgart@dismail.de> wrote: > What determines which package gets built first in the following invocation? > > `guix build emacs-zig-mode zig` It depends. :-) Usually, something like guix thing stuff1 stuff2 is processed in that order: stuff2 then stuff1. Other said, the CLI is somehow parsed from right to left. For instance, see bug#43585 [1] or bug#50473. Well, compare: --8<---------------cut here---------------start------------->8--- $ guix package --show=emacs --show=zig | recsel -Cp name name: zig name: emacs $ guix package --show=zig --show=emacs | recsel -Cp name name: emacs name: zig --8<---------------cut here---------------end--------------->8--- (Note that “guix show” process from left to right since it is how most of us type and read.) That’s said, “guix build” is special. Because it somehow processes the topological order between stuff1 and stuff2. Other said, if stuff2 depends on stuff1, then it first builds stuff1 then second stuff2. 1: <http://issues.guix.gnu.org/issue/43585> 2: <http://issues.guix.gnu.org/issue/50473> Cheers, simon ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: which package gets built first? 2022-11-04 9:49 ` zimoun @ 2022-11-04 16:39 ` ( 2022-11-04 19:40 ` zimoun 0 siblings, 1 reply; 5+ messages in thread From: ( @ 2022-11-04 16:39 UTC (permalink / raw) To: zimoun, jgart, Guix Help Heya, On Fri Nov 4, 2022 at 9:49 AM GMT, zimoun wrote: > Other said, the CLI is somehow parsed from right to left. Probably because: args: (pkg1 pkg2 pkg3) cmds: () args: (pkg2 pkg3) cmds: ((install . pkg1)) args: (pkg3) cmds: ((install . pkg2) (install . pkg1)) args: () cmds: ((install . pkg3) (install . pkg2) (install . pkg1)) I suppose we could add a reverse in this procedure, defined within guix/scripts/package.scm's options->installable: (define to-install (filter-map (match-lambda (('install . (? package? p)) ;; When given a package via `-e', install the first of its ;; outputs (XXX). (package->manifest-entry* (transform p) "out")) (('install . (? string? spec)) (if (store-path? spec) (store-item->manifest-entry spec) (let-values (((package output) (specification->package+output spec))) (package->manifest-entry* (transform package) output)))) (('install . obj) (leave (G_ "cannot install non-package object: ~s~%") obj)) (_ #f)) opts)) -- ( ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: which package gets built first? 2022-11-04 16:39 ` ( @ 2022-11-04 19:40 ` zimoun 0 siblings, 0 replies; 5+ messages in thread From: zimoun @ 2022-11-04 19:40 UTC (permalink / raw) To: (, jgart, Guix Help Hi, On Fri, 04 Nov 2022 at 16:39, "(" <paren@disroot.org> wrote: > On Fri Nov 4, 2022 at 9:49 AM GMT, zimoun wrote: >> Other said, the CLI is somehow parsed from right to left. > > Probably because: Well, it is because ’parse-command-line’ from (guix scripts), no? > I suppose we could add a reverse in this procedure, defined within > guix/scripts/package.scm's options->installable: This would address a part of “guix package” but not “guix build” or “guix shell” or etc. From my point of view, the reverse should happen in ’parse-command-line’ and so all guix/scripts/<command>.scm would be consistent. BTW, it is somehow what “guix show” does with, (define opts (parse-command-line args %options (list (list)) #:build-options? #f #:argument-handler handle-argument)) [...] (guix-package* (reverse opts))) Assuming we would like to parse left-to-right. :-) Cheers, simon ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-11-04 21:28 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-11-04 5:34 which package gets built first? jgart 2022-11-04 5:35 ` jgart 2022-11-04 9:49 ` zimoun 2022-11-04 16:39 ` ( 2022-11-04 19:40 ` zimoun
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).