unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: "Ludovic Courtès" <ludo@gnu.org>
To: 63571@debbugs.gnu.org
Cc: "Ludovic Courtès" <ludo@gnu.org>,
	"Andrew Tropin" <andrew@trop.in>,
	"Liliana Marie Prikler" <liliana.prikler@gmail.com>
Subject: [bug#63571] [PATCH 14/14] import: elpa: Updater provides input list.
Date: Thu, 18 May 2023 17:16:22 +0200	[thread overview]
Message-ID: <a0ac00132199b0da4dcb5e6505e74edb0060aa19.1684421460.git.ludo@gnu.org> (raw)
In-Reply-To: <cover.1684421459.git.ludo@gnu.org>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=^[[6~, Size: 5449 bytes --]

* guix/import/elpa.scm (elpa-dependency->upstream-input): New
procedure.
(latest-release): Add 'inputs' field.
* tests/elpa.scm ("package-latest-release"): New test.
---
 guix/import/elpa.scm | 28 ++++++++++++++++++++++++--
 tests/elpa.scm       | 48 ++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 72 insertions(+), 4 deletions(-)

diff --git a/guix/import/elpa.scm b/guix/import/elpa.scm
index 1313a8aa67..f32a3a156e 100644
--- a/guix/import/elpa.scm
+++ b/guix/import/elpa.scm
@@ -272,6 +272,25 @@ (define* (melpa-recipe->origin recipe)
                 (assq-ref recipe ':fetcher))
        #f)))
 
+(define (elpa-dependency->upstream-input dependency)
+  "Convert DEPENDENCY, an sexp as returned by 'elpa-package-inputs', into an
+<upstream-input>."
+  (match dependency
+    ((name version)
+     (and (not (emacs-standard-library? (symbol->string name)))
+          (upstream-input
+           (name (symbol->string name))
+           (downstream-name (elpa-guix-name name))
+           (type 'propagated)
+           (min-version (if (pair? version)
+                            (string-join (map number->string version) ".")
+                            #f))
+           (max-version (match version
+                          (() #f)
+                          ((_) #f)
+                          ((_ _) #f)
+                          (_ min-version))))))))
+
 (define default-files-spec
   ;; This contains more than just the things contained in %default-include and
   ;; %default-exclude, presumably because this includes source files (*.in,
@@ -421,12 +440,17 @@ (define* (latest-release package #:key (version #f))
                         (elpa-version->string raw-version))))
             (url     (match info
                        ((_ raw-version reqs synopsis kind . rest)
-                        (package-source-url kind name version repo)))))
+                        (package-source-url kind name version repo))))
+            (inputs  (match info
+                       ((name raw-version reqs . _)
+                        (filter-map elpa-dependency->upstream-input
+                                    reqs)))))
        (upstream-source
         (package (package-name package))
         (version version)
         (urls (list url))
-        (signature-urls (list (string-append url ".sig"))))))))
+        (signature-urls (list (string-append url ".sig")))
+        (inputs inputs))))))
 
 (define elpa-repository
   (memoize
diff --git a/tests/elpa.scm b/tests/elpa.scm
index 1efdf2457f..56008fe014 100644
--- a/tests/elpa.scm
+++ b/tests/elpa.scm
@@ -1,6 +1,6 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
-;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2020, 2023 Ludovic Courtès <ludo@gnu.org>
 ;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
 ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
 ;;;
@@ -21,6 +21,8 @@
 
 (define-module (test-elpa)
   #:use-module (guix import elpa)
+  #:use-module (guix upstream)
+  #:use-module ((guix download) #:select (url-fetch))
   #:use-module (guix tests)
   #:use-module (guix tests http)
   #:use-module (srfi srfi-1)
@@ -40,8 +42,20 @@ (define elpa-mock-archive
     (auctex .
             [(11 88 6)
              nil "Integrated environment for *TeX*" tar
-             ((:url . "http://www.gnu.org/software/auctex/"))])))
+             ((:url . "http://www.gnu.org/software/auctex/"))])
+    (taxy-magit-section .
+		        [(0 12 2)
+		         ((emacs
+			   (26 3))
+		          (magit-section
+			   (3 2 1))
+		          (taxy
+			   (0 10)))
+		         "View Taxy structs in a Magit Section buffer" tar
+		         ((:url . "https://github.com/alphapapa/taxy.el")
+		          (:keywords "lisp"))])))
 
+\f
 (test-begin "elpa")
 
 (define (eval-test-with-elpa pkg)
@@ -73,6 +87,36 @@ (define (eval-test-with-elpa pkg)
 (test-assert "elpa->guix-package test 1"
   (eval-test-with-elpa "auctex"))
 
+(test-equal "package-latest-release"
+  (list '("https://elpa.gnu.org/packages/taxy-magit-section-0.12.2.tar")
+        '("https://elpa.gnu.org/packages/taxy-magit-section-0.12.2.tar.sig")
+        (list (upstream-input
+               (name "magit-section")
+               (downstream-name "emacs-magit-section")
+               (type 'propagated)
+               (min-version "3.2.1")
+               (max-version min-version))
+              (upstream-input
+               (name "taxy")
+               (downstream-name "emacs-taxy")
+               (type 'propagated)
+               (min-version "0.10")
+               (max-version #f))))
+  (with-http-server `((200 ,(object->string elpa-mock-archive)))
+    (parameterize ((current-http-proxy (%local-url)))
+      (define source
+        (package-latest-release
+         (dummy-package "emacs-taxy-magit-section"
+                        (version "0.0.0")
+                        (source (dummy-origin
+                                 (method url-fetch)
+                                 (uri "https://elpa.gnu.org/xyz"))))
+         (list %elpa-updater)))
+
+      (list (upstream-source-urls source)
+            (upstream-source-signature-urls source)
+            (upstream-source-inputs source)))))
+
 (test-equal "guix-package->elpa-name: without 'upstream-name' property"
   "auctex"
   (guix-package->elpa-name (dummy-package "emacs-auctex")))
-- 
2.40.1





  parent reply	other threads:[~2023-05-18 15:18 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-18 15:11 [bug#63571] [PATCH 00/14] 'guix refresh -u' updates input fields Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 01/14] tests: pypi: Factorize tarball and wheel file creation Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 02/14] tests: http: Allow responses to specify a path Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 03/14] tests: pypi: Rewrite tests using a local HTTP server Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 04/14] import: utils: 'call-with-networking-exception-handler' doesn't unwind Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 05/14] import: json: Add #:timeout to 'json-fetch' Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 06/14] upstream: Replace 'input-changes' field by 'inputs' Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 07/14] diagnostics: Factorize 'absolute-location' Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 08/14] upstream: 'update-package-source' edits input fields Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 09/14] upstream: Remove <upstream-input-change> and related code Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 10/14] tests: upstream: Restore test that was skipped Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 11/14] import: cpan: Remove unary 'string-append' call Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 12/14] import: cpan: Represent dependencies as <upstream-input> records Ludovic Courtès
2023-05-18 15:16 ` [bug#63571] [PATCH 13/14] import: cpan: Updater provides input list Ludovic Courtès
2023-05-18 15:16 ` Ludovic Courtès [this message]
2023-05-18 16:01 ` [bug#63571] [PATCH 00/14] 'guix refresh -u' updates input fields Liliana Marie Prikler
2023-05-18 17:02   ` Ludovic Courtès
2023-05-29 14:44 ` Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 01/19] tests: pypi: Factorize tarball and wheel file creation Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 02/19] tests: http: Allow responses to specify a path Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 03/19] tests: pypi: Rewrite tests using a local HTTP server Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 04/19] import: utils: 'call-with-networking-exception-handler' doesn't unwind Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 05/19] import: json: Add #:timeout to 'json-fetch' Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 06/19] doc: Mention 'guix refresh -u' for third-party channels Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 07/19] upstream: Replace 'input-changes' field by 'inputs' Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 08/19] diagnostics: Factorize 'absolute-location' Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 09/19] upstream: 'update-package-source' edits input fields Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 10/19] upstream: Remove <upstream-input-change> and related code Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 11/19] tests: upstream: Restore test that was skipped Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 12/19] import: cpan: Remove unary 'string-append' call Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 13/19] import: cpan: Represent dependencies as <upstream-input> records Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 14/19] import: cpan: Updater provides input list Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 15/19] import: elpa: " Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 16/19] import: gem: Factorize "bundler" special case for name mapping Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 17/19] import: gem: Updater provides input list Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 18/19] upstream: Honor package properties for ignored and extra inputs Ludovic Courtès
2023-05-29 14:45   ` [bug#63571] [PATCH v2 19/19] gnu: Add updater input properties for R and Python packages Ludovic Courtès
2023-05-31 21:54   ` bug#63571: [PATCH 00/14] 'guix refresh -u' updates input fields Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a0ac00132199b0da4dcb5e6505e74edb0060aa19.1684421460.git.ludo@gnu.org \
    --to=ludo@gnu.org \
    --cc=63571@debbugs.gnu.org \
    --cc=andrew@trop.in \
    --cc=liliana.prikler@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).