~ruther/guix-local

7f949db03e5dffa7873ce63723c0a92a28594511 — Ludovic Courtès 10 years ago e2f4113
guix system: Warn against missing 'guix pull'.

Suggested by Leo Famulari and others.

* guix/scripts/system.scm (maybe-suggest-running-guix-pull): New
procedure.
(perform-action): Call it when ACTION is 'reconfigure.
1 files changed, 18 insertions(+), 0 deletions(-)

M guix/scripts/system.scm
M guix/scripts/system.scm => guix/scripts/system.scm +18 -0
@@ 482,6 482,21 @@ PATTERN, a string.  When PATTERN is #f, display all the system generations."
    ((disk-image)
     (system-disk-image os #:disk-image-size image-size))))

(define (maybe-suggest-running-guix-pull)
  "Suggest running 'guix pull' if this has never been done before."
  ;; The reason for this is that the 'guix' binding that we see here comes
  ;; from either ~/.config/latest or, if it's missing, from the
  ;; globally-installed Guix, which is necessarily older.  See
  ;; <http://lists.gnu.org/archive/html/guix-devel/2014-08/msg00057.html> for
  ;; a discussion.
  (define latest
    (string-append (config-directory) "/latest"))

  (unless (file-exists? latest)
    (warning (_ "~a not found: 'guix pull' was never run~%") latest)
    (warning (_ "Consider running 'guix pull' before 'reconfigure'.~%"))
    (warning (_ "Failing to do that may downgrade your system!~%"))))

(define* (perform-action action os
                         #:key grub? dry-run? derivations-only?
                         use-substitutes? device target


@@ 498,6 513,9 @@ building anything."
  (define println
    (cut format #t "~a~%" <>))

  (when (eq? action 'reconfigure)
    (maybe-suggest-running-guix-pull))

  (mlet* %store-monad
      ((sys       (system-derivation-for-action os action
                                                #:image-size image-size