[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)