summary refs log tree commit diff
path: root/gnu
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2022-12-05 14:57:15 +0100
committerLudovic Courtès <ludo@gnu.org>2022-12-05 14:57:15 +0100
commit241772d5c068fb7c4fa69d4673174254742eb410 (patch)
treed25933e921a0350e4df475c1fa3f9f0f7b7d1126 /gnu
parent29a09fa5e46347ca223b849c47198f82cf6df271 (diff)
downloadguix-241772d5c068fb7c4fa69d4673174254742eb410.tar.gz
installer: Log provenance data.
* gnu/installer.scm (provenance-sexp): New procedure.
(installer-program)[installer-builder]: Add 'installer-log-line' call.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/installer.scm25
1 files changed, 25 insertions, 0 deletions
diff --git a/gnu/installer.scm b/gnu/installer.scm
index 0e40b81224..d9b71e2ca8 100644
--- a/gnu/installer.scm
+++ b/gnu/installer.scm
@@ -27,6 +27,8 @@
   #:use-module (guix utils)
   #:use-module (guix ui)
   #:use-module ((guix self) #:select (make-config.scm))
+  #:use-module (guix describe)
+  #:use-module (guix channels)
   #:use-module (guix packages)
   #:use-module (guix git-download)
   #:use-module (gnu installer utils)
@@ -52,6 +54,7 @@
   #:use-module (gnu system locale)
   #:use-module (ice-9 match)
   #:use-module (srfi srfi-1)
+  #:use-module (web uri)
   #:export (installer-program))
 
 (define module-to-import?
@@ -315,6 +318,25 @@ selected keymap."
              ((installer-final-page current-installer)
               result prev-steps))))))))
 
+(define (provenance-sexp)
+  "Return an sexp representing the currently-used channels, for logging
+purposes."
+  (match (match (current-channels)
+           (() (and=> (repository->guix-channel (dirname (current-filename)))
+                      list))
+           (channels channels))
+    (#f
+     (warning (G_ "cannot determine installer provenance~%"))
+     'unknown)
+    ((channels ...)
+     (map (lambda (channel)
+            (let* ((uri (string->uri (channel-url channel)))
+                   (url (if (or (not uri) (eq? 'file (uri-scheme uri)))
+                            "local checkout"
+                            (channel-url channel))))
+             `(channel ,(channel-name channel) ,url ,(channel-commit channel))))
+          channels))))
+
 (define (installer-program)
   "Return a file-like object that runs the given INSTALLER."
   (define init-gettext
@@ -429,6 +451,9 @@ selected keymap."
             (define current-installer newt-installer)
             (define steps (#$steps current-installer))
 
+            (installer-log-line "installer provenance: ~s"
+                                '#$(provenance-sexp))
+
             (dynamic-wind
               (installer-init current-installer)
               (lambda ()