diff options
author | Ludovic Courtès <ludo@gnu.org> | 2020-06-08 22:22:36 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2020-06-16 16:10:47 +0200 |
commit | c3f6f564e909ebefe752d24b325871a4e3a02d40 (patch) | |
tree | 7be4dd9bba79e088fcfc45920b9866871ae147d2 | |
parent | a941e8fe1f2ef47be2b30a54925febbc7dfb5389 (diff) | |
download | guix-c3f6f564e909ebefe752d24b325871a4e3a02d40.tar.gz |
channels: Automatically add introduction for the official 'guix' channel.
This is useful when people run "guix time-machine -C channels.scm", where 'channels.scm' misses channel introductions. * guix/channels.scm (%default-channel-url): New variable. (%default-channels): Use it. (ensure-default-introduction): New procedure. (latest-channel-instance): Call it.
-rw-r--r-- | guix/channels.scm | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/guix/channels.scm b/guix/channels.scm index 02e361bd77..a82bd340e2 100644 --- a/guix/channels.scm +++ b/guix/channels.scm @@ -148,18 +148,32 @@ "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"))) #f)) ;TODO: Add an intro signature so it can be exported. +(define %default-channel-url + ;; URL of the default 'guix' channel. + "https://git.savannah.gnu.org/git/guix.git") + (define %default-channels ;; Default list of channels. (list (channel (name 'guix) (branch "master") - (url "https://git.savannah.gnu.org/git/guix.git") + (url %default-channel-url) (introduction %guix-channel-introduction)))) (define (guix-channel? channel) "Return true if CHANNEL is the 'guix' channel." (eq? 'guix (channel-name channel))) +(define (ensure-default-introduction chan) + "If CHAN represents the \"official\" 'guix' channel and lacks an +introduction, add it." + (if (and (guix-channel? chan) + (not (channel-introduction chan)) + (string=? (channel-url chan) %default-channel-url)) + (channel (inherit chan) + (introduction %guix-channel-introduction)) + chan)) + (define-record-type <channel-instance> (channel-instance channel commit checkout) channel-instance? @@ -385,7 +399,9 @@ their relation." (and (string=? (basename file) ".git") (eq? 'directory (stat:type stat)))) - (let-values (((checkout commit relation) + (let-values (((channel) + (ensure-default-introduction channel)) + ((checkout commit relation) (update-cached-checkout (channel-url channel) #:ref (channel-reference channel) #:starting-commit starting-commit))) |