* guix import pypi uwsgi
@ 2016-03-18 19:01 Danny Milosavljevic
2016-03-18 20:32 ` Nils Gillmann
0 siblings, 1 reply; 7+ messages in thread
From: Danny Milosavljevic @ 2016-03-18 19:01 UTC (permalink / raw)
To: guix-devel
Hi,
I tried to create a package for uwsgi 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)
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: guix import pypi uwsgi
2016-03-18 19:01 guix import pypi uwsgi Danny Milosavljevic
@ 2016-03-18 20:32 ` Nils Gillmann
2016-03-19 12:37 ` Danny Milosavljevic
0 siblings, 1 reply; 7+ messages in thread
From: Nils Gillmann @ 2016-03-18 20:32 UTC (permalink / raw)
To: guix-devel
Danny Milosavljevic <dannym@scratchpost.org> writes:
> Hi,
>
> I tried to create a package for uwsgi 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))
I did not package with python so far, but is it not possible that
you set the url to fetch from with pypi-uri?
> (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)
>
>
--
ng
personal contact: http://krosos.sdf.org
EDN: https://wiki.c3d2.de/EDN
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: guix import pypi uwsgi
2016-03-18 20:32 ` Nils Gillmann
@ 2016-03-19 12:37 ` Danny Milosavljevic
2016-03-19 14:13 ` Nils Gillmann
2016-03-19 20:56 ` Ludovic Courtès
0 siblings, 2 replies; 7+ messages in thread
From: Danny Milosavljevic @ 2016-03-19 12:37 UTC (permalink / raw)
To: Nils Gillmann; +Cc: guix-devel
Hi,
On Fri, 18 Mar 2016 21:32:44 +0100
Nils Gillmann <niasterisk@grrlz.net> wrote:
> I did not package with python so far, but is it not possible that
> you set the url to fetch from with pypi-uri?
According to guix/build-system/python.scm the answer is no:
(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))
That's why I bring it up.
I can just build the URL myself - no problem. But there's a problem in guix when one guix part generates what another guix part can't process (note: guix import even downloaded the file just fine!).
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: guix import pypi uwsgi
2016-03-19 12:37 ` Danny Milosavljevic
@ 2016-03-19 14:13 ` Nils Gillmann
2016-03-19 20:56 ` Ludovic Courtès
1 sibling, 0 replies; 7+ messages in thread
From: Nils Gillmann @ 2016-03-19 14:13 UTC (permalink / raw)
To: guix-devel
Danny Milosavljevic <dannym@scratchpost.org> writes:
> Hi,
>
> On Fri, 18 Mar 2016 21:32:44 +0100
> Nils Gillmann <niasterisk@grrlz.net> wrote:
>
>> I did not package with python so far, but is it not possible that
>> you set the url to fetch from with pypi-uri?
>
> According to guix/build-system/python.scm the answer is no:
>
> (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))
>
>
> That's why I bring it up.
>
> I can just build the URL myself - no problem. But there's a problem in guix when one guix part generates what another guix part can't process (note: guix import even downloaded the file just fine!).
Looks like a bug for me, maybe parallel to this thread you could
open a bug on the bugs list so that it can be tracked.
pypi import should be changed to be able to deliver the correct
url and adjust if a part (like file.tar.gz) differs from the name
it is known at in pypi.
--
ng
personal contact: http://krosos.sdf.org
EDN: https://wiki.c3d2.de/EDN
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: guix import pypi uwsgi
2016-03-19 12:37 ` Danny Milosavljevic
2016-03-19 14:13 ` Nils Gillmann
@ 2016-03-19 20:56 ` Ludovic Courtès
2016-03-19 21:19 ` Danny Milosavljevic
1 sibling, 1 reply; 7+ messages in thread
From: Ludovic Courtès @ 2016-03-19 20:56 UTC (permalink / raw)
To: Danny Milosavljevic; +Cc: guix-devel, Nils Gillmann
Danny Milosavljevic <dannym@scratchpost.org> skribis:
> On Fri, 18 Mar 2016 21:32:44 +0100
> Nils Gillmann <niasterisk@grrlz.net> wrote:
>
>> I did not package with python so far, but is it not possible that
>> you set the url to fetch from with pypi-uri?
>
> According to guix/build-system/python.scm the answer is no:
>
> (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))
>
>
> That's why I bring it up.
>
> I can just build the URL myself - no problem. But there's a problem in guix when one guix part generates what another guix part can't process (note: guix import even downloaded the file just fine!).
So the bug is that ‘guix import’ should emit ‘pypi-uri’ calls if and
only if the URL matches the usual pypi.python.org scheme, right?
Ludo’.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: guix import pypi uwsgi
2016-03-19 20:56 ` Ludovic Courtès
@ 2016-03-19 21:19 ` Danny Milosavljevic
2016-03-20 0:09 ` Ludovic Courtès
0 siblings, 1 reply; 7+ messages in thread
From: Danny Milosavljevic @ 2016-03-19 21:19 UTC (permalink / raw)
To: Ludovic Courtès; +Cc: guix-devel, Nils Gillmann
Hi,
On Sat, 19 Mar 2016 21:56:45 +0100
ludo@gnu.org (Ludovic Courtès) wrote:
> So the bug is that ‘guix import’ should emit ‘pypi-uri’ calls if and
> only if the URL matches the usual pypi.python.org scheme, right?
Yes.
guix/import/pypi.scm's make-pypi-sexp even knows the source-url. But then in the source origin it prints '(pypi-uri ,name....
It should only do that if pypi-uri can actually reproduce it, and otherwise use string-append.
That would be easiest if it actually tried to call pypi-uri on its own and checked whether its result is equal to the source-url.
guix/import/pypi.scm even already imports guix/build-system/python.scm and so make-pypi-sexp could call pypi-uri. But it doesn't right now.
Something like this:
diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
index d54bb9f..6889f0e 100644
--- a/guix/import/pypi.scm
+++ b/guix/import/pypi.scm
@@ -194,7 +194,8 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
(version ,version)
(source (origin
(method url-fetch)
- (uri (pypi-uri ,name version))
+ (uri ,(if (equal? (pypi-uri name version) source-url) `(pypi-uri ,name version)
+ source-url))
(sha256
(base32
,(guix-hash-url temp)))))
Note that then, it hardcodes the version number. Note sure whether heuristics to extract it from a random URL and repplace it by 'version would be reliable, though.
With the patch, I get:
$ guix import pypi uwsgi
Starting download of /tmp/guix-file.NdDsTJ
From https://pypi.python.org/packages/source/u/uWSGI/uwsgi-2.0.12.tar.gz...
uwsgi-2.0.12.tar.gz 766KiB 594KiB/s 00:01 [####################] 100.0%
tar: uwsgi-2.0.12/requirements.txt: Not found in archive
tar: Exiting with failure status due to previous errors
guix import: warning: 'tar xf' failed with exit code 512
(package
(name "python-uwsgi")
(version "2.0.12")
(source
(origin
(method url-fetch)
(uri "https://pypi.python.org/packages/source/u/uWSGI/uwsgi-2.0.12.tar.gz")
(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))
$
For comparison, for a package where pypi-uri works, I get
$ guix import pypi waitress
;;; note: source file /home/dannym/src/guix/guix/import/pypi.scm
;;; newer than compiled /home/dannym/src/guix/guix/import/pypi.go
Starting download of /tmp/guix-file.4QDL89
From https://pypi.python.org/packages/source/w/waitress/waitress-0.9.0b0.tar.gz...
waitress-0.9.0b0.tar.gz 125KiB 236KiB/s 00:01 [####################] 100.0%
tar: waitress-0.9.0b0/requirements.txt: Not found in archive
tar: Exiting with failure status due to previous errors
guix import: warning: 'tar xf' failed with exit code 512
(package
(name "python-waitress")
(version "0.9.0b0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "waitress" version))
(sha256
(base32
"019584z449hc3j8q51jbvrp3wjxzzbshid2x2w8xk2xbg5inj151"))))
(build-system python-build-system)
(inputs
`(("python-setuptools" ,python-setuptools)))
(home-page "https://github.com/Pylons/waitress")
(synopsis "Waitress WSGI server")
(description "Waitress WSGI server")
(license #f))
$
Note non-hardcoded version.
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: guix import pypi uwsgi
2016-03-19 21:19 ` Danny Milosavljevic
@ 2016-03-20 0:09 ` Ludovic Courtès
0 siblings, 0 replies; 7+ messages in thread
From: Ludovic Courtès @ 2016-03-20 0:09 UTC (permalink / raw)
To: Danny Milosavljevic; +Cc: guix-devel, Nils Gillmann
Danny Milosavljevic <dannym@scratchpost.org> skribis:
> Something like this:
>
> diff --git a/guix/import/pypi.scm b/guix/import/pypi.scm
> index d54bb9f..6889f0e 100644
> --- a/guix/import/pypi.scm
> +++ b/guix/import/pypi.scm
> @@ -194,7 +194,8 @@ VERSION, SOURCE-URL, HOME-PAGE, SYNOPSIS, DESCRIPTION, and LICENSE."
> (version ,version)
> (source (origin
> (method url-fetch)
> - (uri (pypi-uri ,name version))
> + (uri ,(if (equal? (pypi-uri name version) source-url) `(pypi-uri ,name version)
> + source-url))
> (sha256
> (base32
> ,(guix-hash-url temp)))))
Indeed. Pushed something along these lines in commit
522773b70024272555aab0448fae8606add4c582.
Thanks!
Ludo’.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-03-20 0:09 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-18 19:01 guix import pypi uwsgi Danny Milosavljevic
2016-03-18 20:32 ` Nils Gillmann
2016-03-19 12:37 ` Danny Milosavljevic
2016-03-19 14:13 ` Nils Gillmann
2016-03-19 20:56 ` Ludovic Courtès
2016-03-19 21:19 ` Danny Milosavljevic
2016-03-20 0:09 ` Ludovic Courtès
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).