summaryrefslogtreecommitdiff
path: root/guix/scripts/package.scm
diff options
context:
space:
mode:
Diffstat (limited to 'guix/scripts/package.scm')
-rw-r--r--guix/scripts/package.scm14
1 files changed, 11 insertions, 3 deletions
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index be2e67997e..cafa62c3f3 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -234,11 +234,19 @@ non-zero relevance score."
transaction)
((=)
(let* ((new (package->manifest-entry* pkg output)))
+ ;; Here we want to determine whether the NEW actually
+ ;; differs from ENTRY, but we need to intercept
+ ;; 'build-things' calls because they would prevent us from
+ ;; displaying the list of packages to install/upgrade
+ ;; upfront. Thus, if lowering NEW triggers a build (due
+ ;; to grafts), assume NEW differs from ENTRY.
+
;; XXX: When there are propagated inputs, assume we need to
;; upgrade the whole entry.
- (if (and (string=? (manifest-entry-item
- (lower-manifest-entry* new))
- (manifest-entry-item entry))
+ (if (and (with-build-handler (const #f)
+ (string=? (manifest-entry-item
+ (lower-manifest-entry* new))
+ (manifest-entry-item entry)))
(null? (package-propagated-inputs pkg)))
transaction
(manifest-transaction-install-entry