~ruther/guix-local

3df5acf332fd7b5c21c09961eaa5353c1bd08c60 — Ludovic Courtès 11 years ago 95c559c
pull: Always install the ~/.config/guix/latest symlink.

Before that, if two users on the same machine ran 'guix pull', the
second one would have the "Guix already up to date" message and their
~/.config/guix/latest link would be left unchanged---effectively
preventing them from updating.

* guix/scripts/pull.scm (build-and-install): Install the 'latest'
  symlink regardless of whether TO-DO? is true or false.
1 files changed, 17 insertions(+), 13 deletions(-)

M guix/scripts/pull.scm
M guix/scripts/pull.scm => guix/scripts/pull.scm +17 -13
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 188,22 188,26 @@ contained therein."
  (mlet* %store-monad ((source        (build-from-source tarball
                                                         #:verbose? verbose?))
                       (source-dir -> (derivation->output-path source))
                       (to-do?        (what-to-build (list source))))
    (if to-do?
        (mlet* %store-monad ((built? (built-derivations (list source))))
          (if built?
              (mlet* %store-monad
                  ((latest -> (string-append config-dir "/latest"))
                   (done      (indirect-root-added latest)))
                       (to-do?        (what-to-build (list source)))
                       (built?        (built-derivations (list source))))
    ;; Always update the 'latest' symlink, regardless of whether SOURCE was
    ;; already built or not.
    (if built?
        (mlet* %store-monad
            ((latest -> (string-append config-dir "/latest"))
             (done      (indirect-root-added latest)))
          (if (and (file-exists? latest)
                   (string=? (readlink latest) source-dir))
              (begin
                (display (_ "Guix already up to date\n"))
                (return #t))
              (begin
                (switch-symlinks latest source-dir)
                (format #t
                        (_ "updated ~a successfully deployed under `~a'~%")
                        %guix-package-name latest)
                (return #t))
              (leave (_ "failed to update Guix, check the build log~%"))))
        (begin
          (display (_ "Guix already up to date\n"))
          (return #t)))))
                (return #t))))
        (leave (_ "failed to update Guix, check the build log~%")))))

(define (guix-pull . args)
  (define (parse-options)