import: elpa: Support ‘upstream-name’ property.

* guix/import/elpa.scm: (guix-package->elpa-name): New procedure.
  (latest-release): Use it.
* tests/elpa.scm ("guix-package->elpa-name: without 'upstream-name' property")
  ("guix-package->elpa-name: with 'upstream-name' property"): Test it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
Xinglu Chen 2021-12-17 21:55:54 +01:00 committed by Ludovic Courtès
parent 08b0f5c2a5
commit f21c70bc9a
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 22 additions and 5 deletions

@ -46,6 +46,7 @@
#:use-module (guix packages)
#:use-module ((guix utils) #:select (call-with-temporary-output-file))
#:export (elpa->guix-package
guix-package->elpa-name
%elpa-updater
elpa-recursive-import))
@ -412,13 +413,17 @@ type '<elpa-package>'."
;;; Updates.
;;;
(define (guix-package->elpa-name package)
"Given a Guix package, PACKAGE, return the upstream name on ELPA."
(or (and=> (package-properties package)
(cut assq-ref <> 'upstream-name))
(if (string-prefix? "emacs-" (package-name package))
(string-drop (package-name package) 6)
(package-name package))))
(define (latest-release package)
"Return an <upstream-release> for the latest release of PACKAGE."
(define name
(if (string-prefix? "emacs-" (package-name package))
(string-drop (package-name package) 6)
(package-name package)))
(define name (guix-package->elpa-name package))
(define repo 'gnu)
(match (elpa-package-info name repo)

@ -2,6 +2,7 @@
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;;
;;; This file is part of GNU Guix.
;;;
@ -20,6 +21,7 @@
(define-module (test-elpa)
#:use-module (guix import elpa)
#:use-module (guix tests)
#:use-module (guix tests http)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-64)
@ -71,6 +73,16 @@
(test-assert "elpa->guix-package test 1"
(eval-test-with-elpa "auctex"))
(test-equal "guix-package->elpa-name: without 'upstream-name' property"
"auctex"
(guix-package->elpa-name (dummy-package "emacs-auctex")))
(test-equal "guix-package->elpa-name: with 'upstream-name' property"
"project"
(guix-package->elpa-name
(dummy-package "emacs-fake-name"
(properties '((upstream-name . "project"))))))
(test-end "elpa")
;; Local Variables: