import: pypi: Correctly handle multiple-URL origins.
Fixes <https://bugs.gnu.org/25635>. Reported by Sergei Trofimovich <slyfox@inbox.ru>. * guix/import/pypi.scm (guix-package->pypi-name)[url->pypi-name]: New procedure. Rewrite body to match lists in addition to strings. * tests/pypi.scm ("guix-package->pypi-name, several URLs"): New test.master
parent
750a423996
commit
4eaac4b722
|
@ -1,7 +1,7 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 David Thompson <davet@gnu.org>
|
||||
;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
|
||||
;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -89,9 +89,16 @@ package."
|
|||
(define (guix-package->pypi-name package)
|
||||
"Given a Python PACKAGE built from pypi.python.org, return the name of the
|
||||
package on PyPI."
|
||||
(let ((source-url (and=> (package-source package) origin-uri)))
|
||||
(define (url->pypi-name url)
|
||||
(hyphen-package-name->name+version
|
||||
(basename (file-sans-extension source-url)))))
|
||||
(basename (file-sans-extension url))))
|
||||
|
||||
(match (and=> (package-source package) origin-uri)
|
||||
((? string? url)
|
||||
(url->pypi-name url))
|
||||
((lst ...)
|
||||
(any url->pypi-name lst))
|
||||
(#f #f)))
|
||||
|
||||
(define (wheel-url->extracted-directory wheel-url)
|
||||
(match (string-split (basename wheel-url) #\-)
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#:use-module (guix base32)
|
||||
#:use-module (guix hash)
|
||||
#:use-module (guix tests)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module ((guix build utils) #:select (delete-file-recursively which))
|
||||
#:use-module (srfi srfi-64)
|
||||
#:use-module (ice-9 match))
|
||||
|
@ -90,6 +91,15 @@ baz > 13.37")
|
|||
(uri
|
||||
"https://pypi.python.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz"))))))
|
||||
|
||||
(test-equal "guix-package->pypi-name, several URLs"
|
||||
"cram"
|
||||
(guix-package->pypi-name
|
||||
(dummy-package "foo"
|
||||
(source
|
||||
(dummy-origin
|
||||
(uri (list "https://bitheap.org/cram/cram-0.7.tar.gz"
|
||||
(pypi-uri "cram" "0.7"))))))))
|
||||
|
||||
(test-assert "pypi->guix-package"
|
||||
;; Replace network resources with sample data.
|
||||
(mock ((guix import utils) url-fetch
|
||||
|
|
Reference in New Issue