time-machine without options does not get the latest commit

  • Open
  • quality assurance status badge
Details
3 participants
  • Konrad Hinsen
  • Ludovic Courtès
  • Simon Tournier
Owner
unassigned
Submitted by
Simon Tournier
Severity
normal
S
S
Simon Tournier wrote 3 days ago
(address . bug-guix@gnu.org)
87v8ggwmat.fsf@gmail.com
Hi,

Well, I do not know if it is a bug or if I misuse something. Feel free
to close if I am missing a point.

Toggle snippet (11 lines)
$ guix describe
Generation 25 mai 19 2023 13:30:14 (current)
guix 14c0380
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 14c03807ba4bc81d42cf869f5b827f7da54ff843

$ git -C ~/.cache/guix/checkouts/pjmkglp4t7znuugeurpurzikxq3tnlaywmisyr27shj7apsnalwq log --oneline -1
14c03807ba4 (HEAD -> master) gnu: ruby-3.2: Upgrade to 3.2.2 [fixes CVE-2023-{28755, 28756}].

Well, that’s just a luck that both commit hash matches.

Now, what I am missing. The manual says:

As for ‘guix pull’, the absence of any options means that the latest
commit on the master branch will be used. The command

guix time-machine -- build hello

will thus build the package ‘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!

and I get:

Toggle snippet (6 lines)
$ guix time-machine -- describe
guix e499cb2
repository URL: https://git.savannah.gnu.org/git/guix.git
commit: e499cb2c12d7f1c6d2f004364c9cc7bdb7e38cd5

But I do not understand from where this commit hash is coming from. And
please note that this commit seems coming from my previous experiments
reported in #63667 [1].

Well, the last commit seems a9cde26133b,

Toggle snippet (4 lines)
$ git -C ~/.cache/guix/checkouts/pjmkglp4t7znuugeurpurzikxq3tnlaywmisyr27shj7apsnalwq log origin/master --oneline -1
a9cde26133b (origin/master, origin/HEAD) gnu: Add mouseloupe.

Therefore, let create a Guix revision:

Toggle snippet (6 lines)
$ guix time-machine --commit=a9cde26133b -- describe
guix a9cde26
repository URL: https://git.savannah.gnu.org/git/guix.git
commit: a9cde26133bd98498869a3528d9dff0d3f456a96

However, still this e499cb2 one:

Toggle snippet (6 lines)
$ guix time-machine -- describe
guix e499cb2
repository URL: https://git.savannah.gnu.org/git/guix.git
commit: e499cb2c12d7f1c6d2f004364c9cc7bdb7e38cd5

L
L
Ludovic Courtès wrote 3 days ago
(name . Simon Tournier)(address . zimon.toutoune@gmail.com)
875y8gcedh.fsf@gnu.org
Hi,

Simon Tournier <zimon.toutoune@gmail.com> skribis:

Toggle quote (25 lines)
> Now, what I am missing. The manual says:
>
> As for ‘guix pull’, the absence of any options means that the latest
> commit on the master branch will be used. The command
>
> guix time-machine -- build hello
>
> will thus build the package ‘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!
>
> and I get:
>
> $ guix time-machine -- describe
> guix e499cb2
> repository URL: https://git.savannah.gnu.org/git/guix.git
> commit: e499cb2c12d7f1c6d2f004364c9cc7bdb7e38cd5
>
>
> But I do not understand from where this commit hash is coming from. And
> please note that this commit seems coming from my previous experiments
> reported in #63667 [1].
>
> Well, the last commit seems a9cde26133b,

I had to check the code, but ‘guix time-machine’ follows the same logic
as ‘guix pull’: it reads ~/.config/guix/channels.scm, and so on (that’s
the ‘channel-list’ procedure).

I must say I’m surprised, but it’s always been this way.

Should we fix the doc or should we fix the code?…

Ludo’.
K
K
Konrad Hinsen wrote 2 days ago
(address . 63726@debbugs.gnu.org)
m1fs7j2vjj.fsf@fastmail.net
Hi,

Toggle quote (2 lines)
> Should we fix the doc or should we fix the code?…

I vote for fixing the doc. Two reasons:

1. Having "guix time-machine" and "guix pull" behave in the same way
is desirable. Less cognitive load for users.

2. What the doc says cannot be implemented in general. "The latest
commit on the master branch" makes no sense for a setup with
multiple channels, some of which may not even have a branch called
"master".

Cheers,
Konrad.
S
S
Simon Tournier wrote 2 days ago
(name . Ludovic Courtès)(address . ludo@gnu.org)
874jnzv3qi.fsf@gmail.com
Hi,

On jeu., 25 mai 2023 at 23:03, Ludovic Courtès <ludo@gnu.org> wrote:

Toggle quote (4 lines)
> I had to check the code, but ‘guix time-machine’ follows the same logic
> as ‘guix pull’: it reads ~/.config/guix/channels.scm, and so on (that’s
> the ‘channel-list’ procedure).

Toggle snippet (70 lines)
$ cat ~/.config/guix/channels.scm
(use-modules (guix ci))

(list (channel-with-substitutes-available
%default-guix-channel
"https://ci.guix.gnu.org"))

$ guix time-machine -C ~/.config/guix/channels.scm -- describe
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
compute-guix-derivation 1013B 373KiB/s 00:00 ▕██████████████████▏ 100.0%
Computing Guix derivation for 'x86_64-linux'... \
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivations will be built:
/gnu/store/80sisjhmmb0sbvyylavm3c2rgjnhypw2-profile.drv
/gnu/store/3213n6v442d1zv17xidg8s48hx02f433-guix-daemon.drv
/gnu/store/77k19wqklyw4gvxqjjdg8ah4k9llb5c0-guix-command.drv
/gnu/store/3cyv2vdk3v0asjqbspzlgbzibk1f50p2-guix-system-tests-modules.drv
/gnu/store/9pq5bivbzg476svaqv38xjgwyhg0ml2k-guix-cli-core-modules.drv
/gnu/store/gpjmcxvr10fnzjvkwr7yf2wpyrzyb5nm-guix-packages-base-modules.drv
/gnu/store/gqamr3s5amc1ayqa4xbzv114zy6l8ac8-guix-system-modules.drv
/gnu/store/xv2yv334dpxvq8bw605avhcf6dv0smyp-guix-home-modules.drv
/gnu/store/yya1dwvx7svj588vnqznabqaa2ahv4a3-guix-cli-modules.drv

[...]

building profile with 1 package...
guix 849286b
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 849286ba66c96534bddc04df1a47d5692cbc977e

$ guix time-machine -- describe
guix 849286b
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 849286ba66c96534bddc04df1a47d5692cbc977e

$ mv ~/.config/guix/channels.scm /tmp/channels.scm

$ guix time-machine -C ~/.config/guix/channels.scm -- describe
guix time-machine: error: failed to load '/home/simon/.config/guix/channels.scm': No such file or directory

$ guix time-machine -- describe
Updating channel 'guix' from Git repository at 'https://git.savannah.gnu.org/git/guix.git'...
Authenticating channel 'guix', commits 9edb3f6 to 3299b40 (36 new commits)...
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
compute-guix-derivation 1016B 168KiB/s 00:00 ▕██████████████████▏ 100.0%
Computing Guix derivation for 'x86_64-linux'... -
substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
The following derivations will be built:
/gnu/store/4gm2ay6gjsjq6iclmbm4jqnvja12axy2-profile.drv
/gnu/store/7b50p1xnh4r5ahfj4da8yb8xgzqdjsyv-guix-daemon.drv
/gnu/store/qgcnzghwqxkak53rhnggl73d6r1jkq4q-guix-command.drv
/gnu/store/1spf6ndyz62izy3xgr9v5jnjin305s2v-guix-cli-core-modules.drv
/gnu/store/3fib3w2cjl83r75zfllby6wp3znh362p-guix-system-tests-modules.drv
/gnu/store/7vn6pq6j5psjwlcgvl1nbgwlspamx1wx-guix-home-modules.drv
/gnu/store/9qr483y1law33nqdwz7bjr32sbkka2xw-guix-cli-modules.drv
/gnu/store/iq10xaghbj6435w4c6nmyqb3kwzs119f-guix-packages-base-modules.drv
/gnu/store/wzssfkmqywrqm86vjlyxzpf26d4h30qd-guix-system-modules.drv

[...]

building profile with 1 package...
guix 3299b40
repository URL: https://git.savannah.gnu.org/git/guix.git
branch: master
commit: 3299b40b3599371890816b52d65a6a5ada1b1131

Hum. Now, I am not seeing anymore e499cb2. Related to #63667 [1]?



Toggle quote (2 lines)
> Should we fix the doc or should we fix the code?…

What about this patch?
From 63b862ed9f3d3b019af3c6926bc1737f573bdfe6 Mon Sep 17 00:00:00 2001
Message-Id: <63b862ed9f3d3b019af3c6926bc1737f573bdfe6.1685093404.git.zimon.toutoune@gmail.com>
From: Simon Tournier <zimon.toutoune@gmail.com>
Date: Fri, 26 May 2023 11:26:32 +0200
Subject: [PATCH] doc: Reword guix time-machine without option.

* doc/guix.texi (Invoking guix time-machine): Reword the behaviour in the
absence of any option.
---
doc/guix.texi | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)

Toggle diff (37 lines)
diff --git a/doc/guix.texi b/doc/guix.texi
index 31dc33fb97..54f8a20196 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -4958,16 +4958,20 @@ Invoking guix time-machine
@xref{Channels} for more information.
@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
+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 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 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!
Note that @command{guix time-machine} can trigger builds of channels and
their dependencies, and these are controlled by the standard build

base-commit: 99fc7e5dd3c9c92f9b6c2e51db9dc5b0481a56b2
prerequisite-patch-id: 7ff5f10954ba2e9663c6e7b15e7aee448c8b74c2
prerequisite-patch-id: cb31c4d7ad8d27df155dcf57b61116048a6b0681
prerequisite-patch-id: f256649d0fac1d618b07615c97c46e66436b9262
--
2.38.1
Cheers,
simon
?