summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-03-30 22:11:54 +0200
committerLudovic Courtès <ludo@gnu.org>2020-03-31 00:06:36 +0200
commita187cc562890895ad41dfad00eb1d5c4a4b00936 (patch)
treeff690f391b51cd4b6fd4c6389e3d913c4b6c73dc /guix
parent190ddfe21e3d87719733d12fb9b5eb176125a49f (diff)
downloadgnu-guix-a187cc562890895ad41dfad00eb1d5c4a4b00936.tar
gnu-guix-a187cc562890895ad41dfad00eb1d5c4a4b00936.tar.gz
guix package: 'transaction-upgrade-entry' swallows build requests.
Fixes a regression introduced in 131f50cdc9dbb7183023f4dae759876a9e700bef whereby the install/upgrade message would not be displayed: $ guix upgrade -n 2.1 MB would be downloaded: /gnu/store/…-something-1.2 /gnu/store/…-its-dependency-2.3 This is because we'd directly abort from 'transaction-upgrade-entry' to the build handler of 'build-notifier'. * guix/scripts/package.scm (transaction-upgrade-entry): Call 'string=?' expression in 'with-build-handler'. * tests/packages.scm ("transaction-upgrade-entry, grafts"): New test.
Diffstat (limited to 'guix')
-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