guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

07/08: import: minetest: Delete duplicate dependencies.


From: guix-commits
Subject: 07/08: import: minetest: Delete duplicate dependencies.
Date: Sat, 18 Sep 2021 13:43:28 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 8480a2a5bb360b432877dd33dca80a61c5a698eb
Author: Maxime Devos <maximedevos@telenet.be>
AuthorDate: Tue Sep 7 13:05:56 2021 +0200

    import: minetest: Delete duplicate dependencies.
    
    This fixes one of the issues noted in <https://issues.guix.gnu.org/50425#4>.
    
    * guix/import/minetest.scm
      (import-dependencies): Call 'delete-duplicates' on the resulting list.
    * tests/minetest.scm
      ("minetest->guix-package, multiple dependencies implemented by one mod"):
      New test.
    
    Signed-off-by: Ludovic Courtès <ludo@gnu.org>
---
 guix/import/minetest.scm |  6 +++++-
 tests/minetest.scm       | 10 ++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/guix/import/minetest.scm b/guix/import/minetest.scm
index e1f8487..c8209ab 100644
--- a/guix/import/minetest.scm
+++ b/guix/import/minetest.scm
@@ -371,7 +371,11 @@ official Minetest forum and the Git repository (if any)."
 DEPENDENCIES as a list of AUTHOR/NAME strings."
   (define dependency-list
     (assoc-ref dependencies author/name))
-  (filter-map
+  ;; A mod can have multiple dependencies implemented by the same mod,
+  ;; so remove duplicate mod names.
+  (define (filter-deduplicate-map f list)
+    (delete-duplicates (filter-map f list)))
+  (filter-deduplicate-map
    (lambda (dependency)
      (and (not (dependency-optional? dependency))
           (not (builtin-mod? (dependency-name dependency)))
diff --git a/tests/minetest.scm b/tests/minetest.scm
index c6e872e..80e2697 100644
--- a/tests/minetest.scm
+++ b/tests/minetest.scm
@@ -331,6 +331,16 @@ during a dynamic extent where that package is available on 
ContentDB."
                                  "some-modpack/containing-mese")))
               #:inputs '())
 
+;; See e.g. 'orwell/basic_trains'
+(test-package* "minetest->guix-package, multiple dependencies implemented by 
one mod"
+  (list #:name "frobnicate"
+        #:guix-name "minetest-frobnicate"
+        #:upstream-name "Author/frobnicate"
+        #:requirements '(("frob" #f ("Author/frob"))
+                         ("frob_x" #f ("Author/frob")))
+        #:inputs '("minetest-frob"))
+  (list #:author "Author" #:name "frob"))
+
 
 ;; License
 (test-package "minetest->guix-package, identical licenses"



reply via email to

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