[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
02/04: profiles: Add 'manifest-transaction-removal-candidate?'.
From: |
Ludovic Courtès |
Subject: |
02/04: profiles: Add 'manifest-transaction-removal-candidate?'. |
Date: |
Mon, 26 Jun 2017 16:52:14 -0400 (EDT) |
civodul pushed a commit to branch master
in repository guix.
commit 6d382339de1c9fbe20ec056fb5200d5724a4aa44
Author: Ludovic Courtès <address@hidden>
Date: Mon Jun 26 22:23:11 2017 +0200
profiles: Add 'manifest-transaction-removal-candidate?'.
* guix/profiles.scm (manifest-transaction-removal-candidate?): New
procedure.
* tests/profiles.scm ("manifest-transaction-removal-candidate?"): New
test.
---
guix/profiles.scm | 7 +++++++
tests/profiles.scm | 7 +++++++
2 files changed, 14 insertions(+)
diff --git a/guix/profiles.scm b/guix/profiles.scm
index dcb5186..056406e 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -96,6 +96,7 @@
manifest-transaction-install-entry
manifest-transaction-remove-pattern
manifest-transaction-null?
+ manifest-transaction-removal-candidate?
manifest-perform-transaction
manifest-transaction-effects
@@ -564,6 +565,12 @@ remove software."
(($ <manifest-transaction> () ()) #t)
(($ <manifest-transaction> _ _) #f)))
+(define (manifest-transaction-removal-candidate? entry transaction)
+ "Return true if ENTRY is a candidate for removal in TRANSACTION."
+ (any (lambda (pattern)
+ ((entry-predicate pattern) entry))
+ (manifest-transaction-remove transaction)))
+
(define (manifest-transaction-effects manifest transaction)
"Compute the effect of applying TRANSACTION to MANIFEST. Return 4 values:
the list of packages that would be removed, installed, upgraded, or downgraded
diff --git a/tests/profiles.scm b/tests/profiles.scm
index f731807..469dde2 100644
--- a/tests/profiles.scm
+++ b/tests/profiles.scm
@@ -197,6 +197,13 @@
(test-assert "manifest-transaction-null?"
(manifest-transaction-null? (manifest-transaction)))
+(test-assert "manifest-transaction-removal-candidate?"
+ (let ((m (manifest (list guile-2.0.9)))
+ (t (manifest-transaction
+ (remove (list (manifest-pattern (name "guile")))))))
+ (and (manifest-transaction-removal-candidate? guile-2.0.9 t)
+ (not (manifest-transaction-removal-candidate? glibc t)))))
+
(test-assertm "profile-derivation"
(mlet* %store-monad
((entry -> (package->manifest-entry %bootstrap-guile))