Message ID | 0ee5ee05ea81374342740f06915e9dadb1a92a63.1691767568.git.ludo@gnu.org |
---|---|
State | New |
Headers | show |
Series | Add '-q' for 'pull' and 'time-machine'; support loading from pipes | expand |
Hi Ludo, Cool addition! On Fri, 11 Aug 2023 at 17:34, Ludovic Courtès <ludo@gnu.org> wrote: > -As for @command{guix pull}, the absence of any options means that the > -latest commit on the master branch will be used. The command > +As for @command{guix pull}, in the absence of any options, > +@command{time-machine} fetches the latest commits of the channels > +specified in @file{~/.config/guix/channels.scm}, > +@file{/etc/guix/channels.scm}, or the default channels; the @option{-q} > +option lets you ignore these configuration files. The command: > > @example > -guix time-machine -- build hello > +guix time-machine -q -- build hello > @end example > > -will thus build the package @code{hello} as defined in the master branch, > -which is in general a newer revision of Guix than you have installed. > -Time travel works in both directions! > +will thus build the package @code{hello} as defined in the main branch Why not the master branch? Is the branch renamed from ’master’ to ’main’? If not, I would keep the explicit master branch in order to avoid confusion. > +of Guix, without any additional channel, which is in general a newer > +revision of Guix than you have installed. Time travel works in both > +directions! Well, I would keep the previous example because the behaviour appears to me more prone-error. I mean, by default, there is no channels.scm file under ~/.config/guix/ or /etc/guix, therefore an explanation of the behaviour without any option at all appears to me worth. Moreover, since there is no channels.scm file by default, i.e., the default is %default-channels, it appears to me weird to explain the specific behaviour (without any option and reaching new revision) using an option turning off the channels.scm file. > diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm > + (display (G_ " > + -q inhibit loading of user and system 'channels.scm'")) [...] > diff --git a/guix/scripts/time-machine.scm b/guix/scripts/time-machine.scm > + (display (G_ " > + -q inhibit loading of user and system 'channels.scm'")) No long option? As --no-channel-files or --ignore-channel-files ? Cheers, simon
Re, On Wed, 16 Aug 2023 at 14:59, Simon Tournier <zimon.toutoune@gmail.com> wrote: > Well, I would keep the previous example because the behaviour appears to > me more prone-error. I mean, by default, there is no channels.scm file > under ~/.config/guix/ or /etc/guix, therefore an explanation of the > behaviour without any option at all appears to me worth. Moreover, > since there is no channels.scm file by default, i.e., the default is > %default-channels, it appears to me weird to explain the specific > behaviour (without any option and reaching new revision) using an option > turning off the channels.scm file. Somehow, I would keep something like [1]: --8<---------------cut here---------------start------------->8--- Similarly as @command{guix pull}, the absence of any options means that either the user's @file{~/.config/guix/channels.scm} file, or either the system-wide @file{/etc/guix/channels.scm} file, or either the built-in default channels specified in the @code{%default-channels} will be honored, in that order. The command @example guix time-machine -- build hello @end example will thus build the package @code{hello} as defined by the previous @dfn{channels} file (@pxref{Channels}). In general, it builds a newer revision of Guix than you have installed. Time travel works in both directions! --8<---------------cut here---------------end--------------->8--- 1: https://yhetil.org/guix/87r0qyrlm0.fsf@gmail.com Cheers, simon
Hi, Simon Tournier <zimon.toutoune@gmail.com> skribis: > On Fri, 11 Aug 2023 at 17:34, Ludovic Courtès <ludo@gnu.org> wrote: [...] >> -will thus build the package @code{hello} as defined in the master branch, >> -which is in general a newer revision of Guix than you have installed. >> -Time travel works in both directions! >> +will thus build the package @code{hello} as defined in the main branch > > Why not the master branch? Is the branch renamed from ’master’ to > ’main’? If not, I would keep the explicit master branch in order to > avoid confusion. The “main branch” is the branch currently called ‘master’ (I think we should rename it to ‘main’ eventually, but I’d have written @code{main} if I wanted to imply it’s called that way). >> +of Guix, without any additional channel, which is in general a newer >> +revision of Guix than you have installed. Time travel works in both >> +directions! > > Well, I would keep the previous example because the behaviour appears to > me more prone-error. I mean, by default, there is no channels.scm file > under ~/.config/guix/ or /etc/guix, therefore an explanation of the > behaviour without any option at all appears to me worth. Moreover, > since there is no channels.scm file by default, i.e., the default is > %default-channels, it appears to me weird to explain the specific > behaviour (without any option and reaching new revision) using an option > turning off the channels.scm file. I thought that we cannot easily describe what ‘guix time-machine -- build hello’ does, precisely because it depends on whether ‘channels.scm’ files are present and on what they do. Conversely, explaining what happens with ‘-q’ is trivial because it doesn’t depend on external state. Anyway, I’ll try and reword that. >> diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm > >> + (display (G_ " >> + -q inhibit loading of user and system 'channels.scm'")) > > [...] > >> diff --git a/guix/scripts/time-machine.scm b/guix/scripts/time-machine.scm > >> + (display (G_ " >> + -q inhibit loading of user and system 'channels.scm'")) > > No long option? As --no-channel-files or --ignore-channel-files ? Yeah, I thought we’d follow ‘guix repl’ and ‘guile’, which have no long option, but maybe we should add ‘--no-channel-files’. Thanks you; I’ll send a new version. Ludo’.
Hi Ludo, On Thu, 17 Aug 2023 at 10:57, Ludovic Courtès <ludo@gnu.org> wrote: > >> -will thus build the package @code{hello} as defined in the master branch, > >> -which is in general a newer revision of Guix than you have installed. > >> -Time travel works in both directions! > >> +will thus build the package @code{hello} as defined in the main branch > > > > Why not the master branch? Is the branch renamed from ’master’ to > > ’main’? If not, I would keep the explicit master branch in order to > > avoid confusion. > > The “main branch” is the branch currently called ‘master’ (I think we > should rename it to ‘main’ eventually, but I’d have written @code{main} > if I wanted to imply it’s called that way). I think the term "main branch" is confusing because many forges as Gitlab propose by default to rename from @code{master} to @code{main}. Well, if instead of @code{main}, these forges were proposing @code{trunk} or @code{primary} or whatever else, it would be fine. Therefore, I propose the wording: defined in the main branch of Guix (currently called @code{master}), without any additional channel, [...] Cheers, simon
diff --git a/doc/guix.texi b/doc/guix.texi index 409ca2ad62..ec36159de1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4801,9 +4801,11 @@ Invoking guix pull @item the @option{--channels} option; @item -the user's @file{~/.config/guix/channels.scm} file; +the user's @file{~/.config/guix/channels.scm} file, unless @option{-q} +is passed; @item -the system-wide @file{/etc/guix/channels.scm} file; +the system-wide @file{/etc/guix/channels.scm} file, unless @option{-q} +is passed; @item the built-in default channels specified in the @code{%default-channels} variable. @@ -4905,6 +4907,10 @@ Invoking guix pull evaluates to a list of channel objects. @xref{Channels}, for more information. +@item -q +Inhibit loading of the user and system channel files, +@file{~/.config/guix/channels.scm} and @file{/etc/guix/channels.scm}. + @cindex channel news @item --news @itemx -N @@ -5092,18 +5098,26 @@ Invoking guix time-machine Read the list of channels from @var{file}. @var{file} must contain Scheme code that evaluates to a list of channel objects. @xref{Channels} for more information. + +@item -q +Inhibit loading of the user and system channel files, +@file{~/.config/guix/channels.scm} and @file{/etc/guix/channels.scm}. @end table -As for @command{guix pull}, the absence of any options means that the -latest commit on the master branch will be used. The command +As for @command{guix pull}, in the absence of any options, +@command{time-machine} fetches the latest commits of the channels +specified in @file{~/.config/guix/channels.scm}, +@file{/etc/guix/channels.scm}, or the default channels; the @option{-q} +option lets you ignore these configuration files. The command: @example -guix time-machine -- build hello +guix time-machine -q -- build hello @end example -will thus build the package @code{hello} as defined in the master branch, -which is in general a newer revision of Guix than you have installed. -Time travel works in both directions! +will thus build the package @code{hello} as defined in the main branch +of Guix, without any additional channel, which is in general a newer +revision of Guix than you have installed. Time travel works in both +directions! Note that @command{guix time-machine} can trigger builds of channels and their dependencies, and these are controlled by the standard build diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index ecd264d3fa..f0d4ff36e6 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -84,6 +84,8 @@ (define (show-help) Download and deploy the latest version of Guix.\n")) (display (G_ " -C, --channels=FILE deploy the channels defined in FILE")) + (display (G_ " + -q inhibit loading of user and system 'channels.scm'")) (display (G_ " --url=URL download \"guix\" channel from the Git repository at URL")) (display (G_ " @@ -133,6 +135,9 @@ (define %options (cons* (option '(#\C "channels") #t #f (lambda (opt name arg result) (alist-cons 'channel-file arg result))) + (option '(#\q) #f #f + (lambda (opt name arg result) + (alist-cons 'ignore-channel-files? #t result))) (option '(#\l "list-generations") #f #t (lambda (opt name arg result) (cons `(query list-generations ,arg) @@ -735,6 +740,9 @@ (define (channel-list opts) (define file (assoc-ref opts 'channel-file)) + (define ignore-channel-files? + (assoc-ref opts 'ignore-channel-files?)) + (define default-file (string-append (config-directory) "/channels.scm")) @@ -750,9 +758,11 @@ (define (channel-list opts) (define channels (cond (file (load-channels file)) - ((file-exists? default-file) + ((and (not ignore-channel-files?) + (file-exists? default-file)) (load-channels default-file)) - ((file-exists? global-file) + ((and (not ignore-channel-files?) + (file-exists? global-file)) (load-channels global-file)) (else %default-channels))) diff --git a/guix/scripts/time-machine.scm b/guix/scripts/time-machine.scm index d7c71ef705..8afea6b35d 100644 --- a/guix/scripts/time-machine.scm +++ b/guix/scripts/time-machine.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019 Konrad Hinsen <konrad.hinsen@fastmail.net> -;;; Copyright © 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2019, 2020, 2021, 2023 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -51,6 +51,8 @@ (define (show-help) Execute COMMAND ARGS... in an older version of Guix.\n")) (display (G_ " -C, --channels=FILE deploy the channels defined in FILE")) + (display (G_ " + -q inhibit loading of user and system 'channels.scm'")) (display (G_ " --url=URL use the Git repository at URL")) (display (G_ " @@ -75,6 +77,9 @@ (define %options (cons* (option '(#\C "channels") #t #f (lambda (opt name arg result) (alist-cons 'channel-file arg result))) + (option '(#\q) #f #f + (lambda (opt name arg result) + (alist-cons 'ignore-channel-files? #t result))) (option '("url") #t #f (lambda (opt name arg result) (alist-cons 'repository-url arg
From: Ludovic Courtès <ludovic.courtes@inria.fr> This also fixes <https://issues.guix.gnu.org/63726>. * guix/scripts/pull.scm (show-help, %options): Add '-q'. (channel-list): Honor it. * guix/scripts/time-machine.scm (show-help, %options): Add '-q'. * doc/guix.texi (Invoking guix pull, Invoking guix time-machine): Document it. Reported-by: Simon Tournier <zimon.toutoune@gmail.com> --- doc/guix.texi | 30 ++++++++++++++++++++++-------- guix/scripts/pull.scm | 14 ++++++++++++-- guix/scripts/time-machine.scm | 7 ++++++- 3 files changed, 40 insertions(+), 11 deletions(-)