summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2016-03-19 23:49:59 +0100
committerLudovic Courtès <ludo@gnu.org>2016-03-19 23:54:19 +0100
commit522773b70024272555aab0448fae8606add4c582 (patch)
tree3978e8b64cd56a88e98b3597142a2a0006384217
parent329a702634ec9b12f41676fb7b0680f0797f5907 (diff)
downloadguix-522773b70024272555aab0448fae8606add4c582.tar.gz
import: pypi: Emit 'pypi-uri' only when it yields the right URL.
Fixes <http://bugs.gnu.org/23062>.
Reported by Danny Milosavljevic <dannym@scratchpost.org>.

* guix/import/pypi.scm (make-pypi-sexp): Check whether 'pypi-uri'
returns SOURCE-URL and fall back to the full URL otherwise.
* tests/pypi.scm ("pypi->guix-package"): Adjust expected URI
accordingly.

Co-authored-by: Danny Milosavljevic <dannym@scratchpost.org>
-rw-r--r--guix/import/pypi.scm12
-rw-r--r--tests/pypi.scm3
2 files changed, 12 insertions, 3 deletions
diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index d54bb9fbba..8ae4948147 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -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 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -194,7 +194,15 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
              (version ,version)
              (source (origin
                        (method url-fetch)
-                       (uri (pypi-uri ,name version))
+
+                       ;; Sometimes 'pypi-uri' doesn't quite work due to mixed
+                       ;; cases in NAME, for instance, as is the case with
+                       ;; "uwsgi".  In that case, fall back to a full URL.
+                       (uri ,(if (equal? (pypi-uri name version) source-url)
+                                 `(pypi-uri ,name version)
+                                 `(string-append
+                                   ,@(factorize-uri source-url version))))
+
                        (sha256
                         (base32
                          ,(guix-hash-url temp)))))
diff --git a/tests/pypi.scm b/tests/pypi.scm
index 960b8cd32a..cf351a542f 100644
--- a/tests/pypi.scm
+++ b/tests/pypi.scm
@@ -84,7 +84,8 @@ baz > 13.37")
          ('version "1.0.0")
          ('source ('origin
                     ('method 'url-fetch)
-                    ('uri (pypi-uri "foo" version))
+                    ('uri (string-append "https://example.com/foo-"
+                                         version ".tar.gz"))
                     ('sha256
                      ('base32
                       (? string? hash)))))