diff mbox

gnu: Add python-gunicorn and python2-gunicorn.

Message ID 1473627035-12350-1-git-send-email-h.goebel@crazy-compilers.com
State New
Headers show

Commit Message

Hartmut Goebel Sept. 11, 2016, 8:50 p.m. UTC
* gnu/packages/web.scm (python-gunicorn, python2-gunicorn): New
  variables.
---
 gnu/packages/web.scm | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 48 insertions(+)

Comments

Hartmut Goebel Sept. 12, 2016, 7:48 a.m. UTC | #1
Am 11.09.2016 um 22:50 schrieb Hartmut Goebel:
> * gnu/packages/web.scm (python-gunicorn, python2-gunicorn): New
Since this is a wsgi/http *server* maybe the package should be named
just "gunicorn"? Opinions, please.
Leo Famulari Sept. 13, 2016, 3:51 p.m. UTC | #2
On Sun, Sep 11, 2016 at 10:50:35PM +0200, Hartmut Goebel wrote:
> * gnu/packages/web.scm (python-gunicorn, python2-gunicorn): New
>   variables.

Thanks for this! Regarding the naming question, I think it's fine to
call it 'gunicorn'. Prefixing with 'python-' is more appropriate for
libraries and other "helper" packages, whereas user facing or standalone
applications can use the plain upstream name, in my opinion.

See the manual, section 7.6.5 Python Modules, for a little bit of
guidance.

> +         (add-before 'check 'remove-requirements
> +           ; setup.py reads test-requirements from a file which is
> +           ; pinning to other versions then guix provides. This also
> +           ; enforces optional packages like pytst-cov. So clean the
> +           ; list.
> +           (lambda _
> +             (substitute* "requirements_test.txt"
> +               ((".*") "")))))))
> +    (native-inputs
> +     `(("python-pytest" ,python-pytest)
> +       ;("python-pytest-cov" ,python-pytest-cov) ; optional

I think we should either use pytest-cov or remove this commented line.
What do you think?

> +(define-public python2-gunicorn
> +  (let ((base (package-with-python2
> +               (strip-python2-variant python-gunicorn))))
> +    ; Note: byte-compiling gunicorn/workers/_gaiohttp.py with Python 2
> +    ; fails, but this module will be available for Python 3 only
> +    ; anyway.

Can you elaborate on this? Does python2-gunicorn still work? If so,
okay.
Hartmut Goebel Sept. 13, 2016, 7:22 p.m. UTC | #3
Am 13.09.2016 um 17:51 schrieb Leo Famulari:
> Thanks for this! Regarding the naming question, I think it's fine to
> call it 'gunicorn'. Prefixing with 'python-' is more appropriate for
> libraries and other "helper" packages, whereas user facing or
> standalone applications can use the plain upstream name, in my opinion.

Fine. I'll update (which may take until Thursday) the patch.

>> +       ;("python-pytest-cov" ,python-pytest-cov) ; optional
> I think we should either use pytest-cov or remove this commented line.
> What do you think?

I added this line for documentation reasons. But I agree, it's better to
remove this line and add a real comment.

>> +(define-public python2-gunicorn
>> +  (let ((base (package-with-python2
>> +               (strip-python2-variant python-gunicorn))))
>> +    ; Note: byte-compiling gunicorn/workers/_gaiohttp.py with Python 2
>> +    ; fails, but this module will be available for Python 3 only
>> +    ; anyway.
> Can you elaborate on this? Does python2-gunicorn still work? If so,
> okay.

Yes. I'll update this comment to make it more clear, too.
diff mbox

Patch

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index 20c7d12..e639d28 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -3633,3 +3633,51 @@  provides a unix command line interface to a variety of popular www search engine
 and similar services.")
     (home-page "https://surfraw.alioth.debian.org/")
     (license l:public-domain)))
+
+(define-public python-gunicorn
+  (package
+    (name "python-gunicorn")
+    (version "19.6.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "gunicorn" version))
+       (sha256
+        (base32
+         "065n5z91607q4l8wncqkz297cdcb60cz8wnyxy88wk4as4b6jgw1"))))
+    (build-system python-build-system)
+    (arguments
+     '(#:phases
+       (modify-phases %standard-phases
+         (add-before 'check 'remove-requirements
+           ; setup.py reads test-requirements from a file which is
+           ; pinning to other versions then guix provides. This also
+           ; enforces optional packages like pytst-cov. So clean the
+           ; list.
+           (lambda _
+             (substitute* "requirements_test.txt"
+               ((".*") "")))))))
+    (native-inputs
+     `(("python-pytest" ,python-pytest)
+       ;("python-pytest-cov" ,python-pytest-cov) ; optional
+       ("python-setuptools" ,python-setuptools)))
+    (home-page "http://gunicorn.org/")
+    (synopsis "Python WSGI HTTP Server for UNIX")
+    (description "Gunicorn ‘Green Unicorn’ is a Python WSGI HTTP
+Server for UNIX.  It’s a pre-fork worker model ported from Ruby’s
+Unicorn project.  The Gunicorn server is broadly compatible with
+various web frameworks, simply implemented, light on server resources,
+and fairly speedy.")
+  (license license:expat)
+  (properties `((python2-variant . ,(delay python2-gunicorn))))))
+
+(define-public python2-gunicorn
+  (let ((base (package-with-python2
+               (strip-python2-variant python-gunicorn))))
+    ; Note: byte-compiling gunicorn/workers/_gaiohttp.py with Python 2
+    ; fails, but this module will be available for Python 3 only
+    ; anyway.
+    (package
+      (inherit base)
+      (native-inputs `(("python2-mock" ,python2-mock)
+                       ,@(package-native-inputs base))))))