Subject: bug#23062: "guix package -i" sometimes can't use what "guix import pypi" generated

From: Danny Milosavljevic <[email-masked]>
Date: Sat, 19 Mar 2016 15:32:43 +0100

I tried to create a package for uwsgi (in git guix) by

$ guix import pypi uwsgi

...From https://pypi.python.org/packages/source/u/uWSGI/uwsgi-2.0.12.tar.gz...
...
(package
  (name "python-uwsgi")
  (version "2.0.12")
  (source
    (origin
      (method url-fetch)
      (uri (pypi-uri "uWSGI" version))
      (sha256
        (base32
          "02g46dnw5j1iw8fsq392bxbk8d21b9pdgb3ypcinv3b4jzdm2srh"))))
  (build-system python-build-system)
  (inputs
    `(("python-setuptools" ,python-setuptools)))
  (home-page "UNKNOWN")
  (synopsis "The uWSGI server")
  (description "The uWSGI server")
  (license #f))

Then I put that (and define-public python-uwsgi ...) into python.scm and did

  $ guix package -i python-uwsgi

I get the following error message:

Starting download of /gnu/store/d16s3cw2arg89pm7djh6xrdkf0dnckyy-uWSGI-2.0.12.tar.gz
From https://pypi.python.org/packages/source/u/uWSGI/uWSGI-2.0.12.tar.gz...
ERROR: download failed "https://pypi.python.org/packages/source/u/uWSGI/uWSGI-2.0.12.tar.gz" 404 "Not Found"
failed to download "/gnu/store/d16s3cw2arg89pm7djh6xrdkf0dnckyy-uWSGI-2.0.12.tar.gz" from "https://pypi.python.org/packages/source/u/uWSGI/uWSGI-2.0.12.tar.gz"
builder for `/gnu/store/d5jfk4l2yvxfd3pw0fndwx2bxjwg1gpl-uWSGI-2.0.12.tar.gz.drv' failed to produce output path `/gnu/store/d16s3cw2arg89pm7djh6xrdkf0dnckyy-uWSGI-2.0.12.tar.gz'
cannot build derivation `/gnu/store/xqwnqx8yw63i864z0c3vd3vr9c8xcflr-python-uwsgi-2.0.12.drv': 1 dependencies couldn't be built
guix package: error: build failed: build of `/gnu/store/xqwnqx8yw63i864z0c3vd3vr9c8xcflr-python-uwsgi-2.0.12.drv' failed

(Note the wrong basename)

guix/build-system/python.scm says:

(define* (pypi-uri name version #:optional (extension ".tar.gz"))
  "Return a URI string for the Python package hosted on the Python Package
Index (PyPI) corresponding to NAME and VERSION.  EXTENSION is the file name
extension, such as '.tar.gz'."
  (string-append "https://pypi.python.org/packages/source/"
                 (string-take name 1) "/" name "/"
                 name "-" version extension))

So it's currently impossible for pypi-uri to work correctly in the uwsgi case.