Package: guix-patches;
Reported by: Maxime Devos <maximedevos <at> telenet.be>
Date: Tue, 7 Sep 2021 11:38:01 UTC
Severity: normal
Tags: patch
Done: Ludovic Courtès <ludo <at> gnu.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Maxime Devos <maximedevos <at> telenet.be> To: 50451 <at> debbugs.gnu.org Cc: vivien kraus <vivien <at> planete-kraus.eu> Subject: [bug#50451] [PATCH] Fix two issues in the minetest importer Date: Tue, 07 Sep 2021 13:36:36 +0200
[Message part 1 (text/plain, inline)]
X-Debbugs-CC: Vivien Kraus <vivien <at> planete-kraus.eu> Hi guix, These patches fix a few issues noted at <https://issues.guix.gnu.org/50425#4> and add corresponding tests. Greetings, Maxime.
[0001-tests-minetest-Fix-test-package-indenting.patch (text/x-patch, inline)]
From 2c376bc8fcdc690a8d3b71e818085fa25f547d59 Mon Sep 17 00:00:00 2001 From: Maxime Devos <maximedevos <at> telenet.be> Date: Tue, 7 Sep 2021 13:03:12 +0200 Subject: [PATCH 1/3] tests/minetest: Fix 'test-package*' indenting. * tests/minetest.scm (Local Variables)[test-package*]: Set scheme-indent-function property to 1. --- tests/minetest.scm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/minetest.scm b/tests/minetest.scm index 6ae476fe5f..c6e872e918 100644 --- a/tests/minetest.scm +++ b/tests/minetest.scm @@ -353,3 +353,7 @@ during a dynamic extent where that package is available on ContentDB." (sort-packages (list x y z)))) (test-end "minetest") + +;;; Local Variables: +;;; eval: (put 'test-package* 'scheme-indent-function 1) +;;; End: -- 2.33.0
[0002-import-minetest-Delete-duplicate-dependencies.patch (text/x-patch, inline)]
From 2855ab8880b9200ec0eb18a9dfb802a516828312 Mon Sep 17 00:00:00 2001 From: Maxime Devos <maximedevos <at> telenet.be> Date: Tue, 7 Sep 2021 13:05:56 +0200 Subject: [PATCH 2/3] 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. --- 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 e1f8487b75..c8209aba79 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 c6e872e918..80e2697a3d 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" -- 2.33.0
[0003-import-minetest-Strip-v-prefixes-from-the-version-nu.patch (text/x-patch, inline)]
From 91cbb7e68f3df8601fd91a2247ca971f7e011406 Mon Sep 17 00:00:00 2001 From: Maxime Devos <maximedevos <at> telenet.be> Date: Tue, 7 Sep 2021 13:24:24 +0200 Subject: [PATCH 3/3] import/minetest: Strip "v" prefixes from the version number. This fixes one of the issues noted at <https://issues.guix.gnu.org/50425#4>. * guix/import/minetest.scm (release-version): New procedure. (%minetest->guix-package): Call new procedure instead of release-title. * tests/minetest.scm (make-package-sexp): Allow overriding the version number. (make-releases-json): Allow overriding the release title. ("conventional version number") ("v-prefixed version number") ("dates as version number"): New tests. --- guix/import/minetest.scm | 10 +++++++++- tests/minetest.scm | 23 ++++++++++++++++++----- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/guix/import/minetest.scm b/guix/import/minetest.scm index c8209aba79..29bf12d123 100644 --- a/guix/import/minetest.scm +++ b/guix/import/minetest.scm @@ -337,6 +337,14 @@ official Minetest forum and the Git repository (if any)." (and=> (package-forums package) topic->url-sexp) (package-repository package))) +(define (release-version release) + "Guess the version of RELEASE from the release title." + (define title (release-title release)) + (if (string-prefix? "v" title) + ;; Remove "v" prefix from release titles like ‘v1.0.1’. + (substring title 1) + title)) + ;; If the default sort key is changed, make sure to modify 'show-help' ;; in (guix scripts import minetest) appropriately as well. (define %default-sort-key "score") @@ -436,7 +444,7 @@ list of AUTHOR/NAME strings." (define important-upstream-dependencies (important-dependencies dependencies author/name #:sort sort)) (values (make-minetest-sexp author/name - (release-title release) ; version + (release-version release) (package-repository package) (release-commit release) important-upstream-dependencies diff --git a/tests/minetest.scm b/tests/minetest.scm index 80e2697a3d..6998c9a70b 100644 --- a/tests/minetest.scm +++ b/tests/minetest.scm @@ -33,6 +33,10 @@ (define* (make-package-sexp #:key (guix-name "minetest-foo") + ;; This is not a proper version number but + ;; ContentDB often does not include version + ;; numbers. + (version "2021-07-25") (home-page "https://example.org/foo") (repo "https://example.org/foo.git") (synopsis "synopsis") @@ -44,9 +48,7 @@ #:allow-other-keys) `(package (name ,guix-name) - ;; This is not a proper version number but ContentDB does not include - ;; version numbers. - (version "2021-07-25") + (version ,version) (source (origin (method git-fetch) @@ -106,14 +108,14 @@ author "/" name "/download/")) ("website" . ,website))) -(define* (make-releases-json #:key (commit #f) (title "") #:allow-other-keys) +(define* (make-releases-json #:key (commit #f) (title "2021-07-25") #:allow-other-keys) `#((("commit" . ,commit) ("downloads" . 469) ("id" . 8614) ("max_minetest_version" . null) ("min_minetest_version" . null) ("release_date" . "2021-07-25T01:10:23.207584") - ("title" . "2021-07-25")))) + ("title" . ,title)))) (define* (make-dependencies-json #:key (author "Author") (name "foo") @@ -292,6 +294,17 @@ during a dynamic extent where that package is available on ContentDB." #:website 'null #:repo 'null) + +;; Determining the version number + +(test-package "conventional version number" #:version "1.2.3" #:title "1.2.3") +;; See e.g. orwell/basic_trains +(test-package "v-prefixed version number" #:version "1.2.3" #:title "v1.2.3") +;; Many mods on ContentDB use dates as release titles. In that case, the date +;; will have to do. +(test-package "dates as version number" + #:version "2021-01-01" #:title "2021-01-01") + ;; Dependencies -- 2.33.0
[signature.asc (application/pgp-signature, inline)]
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.