guix-play/guix
Ludovic Courtès ab13e2be69
time-machine: Make target commit check cheaper.
Commit 79ec651a28 introduced a check to
error out when attempting to use ‘time-machine’ to travel to a commit
before ‘v1.0.0’.

This commit fixes a performance issue with the strategy used in
79ec651a28 (the repository was opened,
updated, and traversed a second time by ‘validate-guix-channel’) as well
as a user interface issue (“Updating channel” messages would be printed
too late).

This patch reimplements the check in terms of the existing #:validate-pull
mechanism, which is designed to avoid extra repository operations.

Fixes <https://issues.guix.gnu.org/65788>.

* guix/inferior.scm (cached-channel-instance): Change default value
of #:validate-channels.  Remove call to VALIDATE-CHANNELS; pass it
as #:validate-pull to ‘latest-channel-instances’.
* guix/scripts/time-machine.scm (%reference-channels): New variable.
(validate-guix-channel): New procedure, written as a simplification of…
(guix-time-machine)[validate-guix-channel]: … this.  Remove.
Pass #:reference-channels to ‘cached-channel-instance’.

Reported-by: Simon Tournier <zimon.toutoune@gmail.com>
Change-Id: I9b0ec61fba7354fe08b04a91f4bd32b72a35460c
2023-11-05 23:23:23 +01:00
..
build syscalls: Consistently use existing linux? definition. 2023-10-23 11:58:16 +02:00
build-system guix: Upgrade to Bioconductor 3.18. 2023-11-03 22:49:10 +01:00
import guix: Upgrade to Bioconductor 3.18. 2023-11-03 22:49:10 +01:00
platforms platform: Add powerpc64-linux. 2023-08-12 23:02:31 +02:00
scripts time-machine: Make target commit check cheaper. 2023-11-05 23:23:23 +01:00
store store: Tolerate non-existent GC root directories. 2023-06-18 23:36:25 +02:00
tests tests: http: Allow responses to specify a path. 2023-05-31 23:25:24 +02:00
android-repo-download.scm download: Refer to the 'guile-gnutls' package and not 'gnutls'. 2023-05-11 13:23:08 +02:00
avahi.scm avahi: Fix exception when #:timeout is #f. 2023-07-11 15:47:56 +02:00
base16.scm base16: Reduce GC pressure in bytevector->base16-string. 2021-09-10 17:30:54 +02:00
base32.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
base64.scm
build-system.scm
bzr-download.scm gnu: bazaar: Obsolete with breezy. 2022-05-31 14:54:02 -04:00
cache.scm cache: 'file-expiration-time' uses 'lstat', not 'stat'. 2023-07-11 15:47:56 +02:00
channels.scm profiles: Hooks honor the #:system parameter of ‘profile-derivation’. 2023-10-28 00:17:24 +02:00
ci.scm ci: Reify the timestamps of evaluations. 2023-06-02 15:47:27 +02:00
colors.scm colors: Add 'colorize-full-matches'. 2022-04-19 18:07:49 +02:00
combinators.scm combinators: Add 'define-compile-time-procedure'. 2021-12-20 16:21:40 +01:00
config.scm.in build: Add dependency on Git. 2023-09-26 17:36:58 +02:00
cpio.scm cpio: Properly handle Unicode characters in file names. 2023-02-25 14:50:33 -05:00
cpu.scm guix: cpu: Add gcc-architecture->micro-architecture-level mapping. 2023-07-12 16:48:28 +03:00
cve.scm
cvs-download.scm download: Refer to the 'guile-gnutls' package and not 'gnutls'. 2023-05-11 13:23:08 +02:00
d3.v3.js
deprecation.scm guix: Add define-deprecated/public-alias. 2022-04-12 20:32:32 +02:00
derivations.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
describe.scm
diagnostics.scm diagnostics: Factorize 'absolute-location'. 2023-05-31 23:25:25 +02:00
discovery.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
docker.scm docker: Enable arm64 docker image building for 'guix pack'. 2021-11-23 10:24:27 +01:00
download.scm gnu-maintenance: Allow mirror URLs to fallback to the generic HTML updater. 2023-08-26 11:38:56 -04:00
elf.scm elf: Add missing argument in 'elf-segment'. 2015-03-30 15:21:11 +02:00
ftp-client.scm ftp-client: 'connect*' retries until the timeout has expired. 2023-05-04 13:08:59 +02:00
gexp.scm gexp: computed-file: Do not honor %guile-for-build. 2023-02-27 15:54:09 +01:00
git-authenticate.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
git-download.scm git-download: Use “builtin:git-download” when available. 2023-09-26 17:36:58 +02:00
git.scm git: Restore 'false-if-git-not-found' in 'reference-available?'. 2023-09-25 12:00:18 +02:00
glob.scm
gnu-maintenance.scm gnu-maintenance: Support URI list of mixed mirrors, HTTP URLs. 2023-09-11 23:39:13 -04:00
gnupg.scm gnupg: Honor GnuPG's configuration for the key server. 2021-11-18 14:41:53 -05:00
grafts.scm grafts: Fix corner case involving multiple-output derivations. 2023-10-28 00:17:23 +02:00
graph.js
graph.scm graph: Add GraphML backend. 2023-08-25 14:24:43 +02:00
hash.scm guix hash: Extract file hashing procedures. 2022-01-06 16:27:30 +01:00
hg-download.scm download: Refer to the 'guile-gnutls' package and not 'gnutls'. 2023-05-11 13:23:08 +02:00
http-client.scm http-client: 'http-fetch/cached' converts strings to URIs. 2022-05-22 01:07:52 +02:00
i18n.scm
inferior.scm time-machine: Make target commit check cheaper. 2023-11-05 23:23:23 +01:00
ipfs.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
least-authority.scm least-authority: Fix typo. 2022-06-10 23:52:34 -04:00
licenses.scm licenses: Add Arphic-1999 (Aprhic Public License). 2023-08-01 19:40:19 +08:00
lint.scm lint: Speed up the formatting linter. 2023-11-05 17:51:38 +00:00
man-db.scm guix: Index the man-db database via man pages names. 2022-03-02 00:00:55 -05:00
memoization.scm
modules.scm modules: Recognize #:declarative?. 2022-12-02 23:20:54 +01:00
monad-repl.scm monad-repl: Add "build", "lower", and "verbosity" commands. 2022-07-15 17:36:57 +02:00
monads.scm monads: Add 'mparameterize'. 2022-07-10 23:57:14 +02:00
nar.scm
narinfo.scm substitute: If a server's nar URL is 404, try the next one(s). 2023-05-30 00:15:29 +02:00
openpgp.scm
packages.scm packages: Add ‘system’ parameter for ‘set-guile-for-build’. 2023-10-28 00:17:24 +02:00
pki.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
platform.scm guix: platform: Use srfi-34's raise instead of raise-exception. 2023-07-13 19:00:14 +02:00
profiles.scm profiles: Hooks honor the #:system parameter of ‘profile-derivation’. 2023-10-28 00:17:24 +02:00
profiling.scm
progress.scm guix: Show better progress bars. 2023-02-19 10:09:15 +01:00
quirks.scm
read-print.scm read-print: Be more mindful of horizontal space in packages. 2023-09-24 02:00:00 +02:00
records.scm records: Remove "guix" from error message. 2023-06-09 14:19:14 +02:00
remote.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
repl.scm
rpm.scm pack: Register extra /usr/share sub-directories as FHS. 2023-02-22 10:41:35 -05:00
scripts.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
search-paths.scm search-paths: Add GCC search paths. 2023-10-04 23:30:41 -04:00
self.scm build: Add dependency on Git. 2023-09-26 17:36:58 +02:00
serialization.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
sets.scm Add (guix sets). 2015-01-11 23:50:01 +01:00
ssh.scm ssh: Also print the user when authentication fails. 2023-08-22 11:17:53 +02:00
status.scm status: Guard against a numerical overflow condition. 2023-04-12 08:29:37 -04:00
store.scm guix: Strip #:use-module lists. 2023-03-13 15:08:33 +01:00
substitutes.scm substitute: Gracefully handle TLS termination while fetching narinfos. 2023-03-27 18:48:51 +02:00
svn-download.scm svn-download: Handle the single file case when downloading a nar. 2023-07-18 18:16:55 +02:00
swh.scm swh: Allows token from Software Heritage authentication service. 2021-10-15 23:16:28 +02:00
tests.scm tests: Set a hard build timeout. 2022-02-14 11:23:07 +01:00
transformations.scm transformations: tuned-package: Use target on cross-compile. 2023-09-17 15:31:03 +02:00
ui.scm ui: Handle EPIPE errors when displaying Guix version. 2023-10-17 14:51:53 +02:00
upstream.scm upstream: Compare symbols to symbols. 2023-09-13 22:17:21 +02:00
utils.scm utils: Add 'strip-for-target'. 2023-10-26 15:21:35 +02:00
workers.scm