guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

02/04: pull: Always install the ~/.config/guix/latest symlink.


From: Ludovic Courtès
Subject: 02/04: pull: Always install the ~/.config/guix/latest symlink.
Date: Fri, 06 Feb 2015 17:04:49 +0000

civodul pushed a commit to branch master
in repository guix.

commit 3df5acf332fd7b5c21c09961eaa5353c1bd08c60
Author: Ludovic Courtès <address@hidden>
Date:   Fri Feb 6 17:39:10 2015 +0100

    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.
---
 guix/scripts/pull.scm |   30 +++++++++++++++++-------------
 1 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm
index 16805ba..e6ed8d2 100644
--- a/guix/scripts/pull.scm
+++ b/guix/scripts/pull.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2013, 2014 Ludovic Courtès <address@hidden>
+;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <address@hidden>
 ;;;
 ;;; 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)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]