guix-commits
[Top][All Lists]
Advanced

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



reply via email to

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