Subject: bug#63726: time-machine without options does not get the latest commit

From: Simon Tournier <[email-masked]>
Date: Fri, 26 May 2023 11:31:01 +0200

Hi,

On jeu., 25 mai 2023 at 23:03, Ludovic Courtès <[email-masked]> wrote:

> 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).

--8<---------------cut here---------------start------------->8---
$ 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
--8<---------------cut here---------------end--------------->8---

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

1: https://issues.guix.gnu.org/issue/63667

> 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: <63b862[email-masked]>
From: Simon Tournier <[email-masked]>
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(-)

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