Subject: [PATCH 01/21] gnu: Add python-gunicorn.

From: Marius Bakke <[email-masked]>
Date: Fri, 30 Aug 2019 16:25:19 +0200

* gnu/packages/check.scm (python-pytest-3.2, python-pytest-cov-2.5,
python-coverage-4.3): New public variables.
* gnu/packages/python-web.scm (python-gunicorn): New public variable.
---
 gnu/packages/check.scm      | 41 ++++++++++++++++++++++++++++++++++++-
 gnu/packages/python-web.scm | 28 ++++++++++++++++++++++++-
 2 files changed, 67 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm
index 085538b2de..e81cd50b66 100644
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@ -25,7 +25,7 @@
 ;;; Copyright © 2017, 2019 Kei Kebreau <[email-masked]>
 ;;; Copyright © 2017 ng0 <[email-masked]>
 ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <[email-masked]>
-;;; Copyright © 2016, 2017, 2018 Marius Bakke <[email-masked]>
+;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <[email-masked]>
 ;;; Copyright © 2017, 2018 Ludovic Courtès <[email-masked]>
 ;;; Copyright © 2018 Fis Trivial <[email-masked]>
 ;;; Copyright © 2019 Pierre Langlois <[email-masked]>
@@ -776,6 +776,21 @@ and many external plugins.")
                 ("python2-pathlib2" ,python2-pathlib2-bootstrap)
                 ,@(package-propagated-inputs pytest))))))
 
+;; python-gunicorn requires this ancient version for Python 2.6 support.
+(define-public python-pytest-3.2
+  (package
+    (inherit python-pytest)
+    (version "3.2.5")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pytest" version))
+              (sha256
+               (base32
+                "10cbsyyyzamhvi1gqqyhccsx906xlcwcgddvldalqi1v27vx8nvd"))))
+    (arguments
+     ;; XXX: Tests require similarly ancient versions of many dependencies.
+     `(#:tests? #f))))
+
 (define-public python-pytest-cov
   (package
     (name "python-pytest-cov")
@@ -811,6 +826,18 @@ supports coverage of subprocesses.")
 (define-public python2-pytest-cov
   (package-with-python2 python-pytest-cov))
 
+;; Some packages require this old version.  Remove when no longer needed.
+(define-public python-pytest-cov-2.5
+  (package
+    (inherit python-pytest-cov)
+    (version "2.5.1")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "pytest-cov" version))
+              (sha256
+               (base32
+                "0bbfpwdh9k3636bxc88vz9fa7vf4akchgn513ql1vd0xy4n7bah3"))))))
+
 (define-public python-pytest-runner
   (package
     (name "python-pytest-runner")
@@ -1289,6 +1316,18 @@ executed.")
 (define-public python2-coverage
   (package-with-python2 python-coverage))
 
+;; python-gunicorn requires this version.  Remove once no longer needed.
+(define-public python-coverage-4.3
+  (package
+    (inherit python-coverage)
+    (version "4.3.4")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "coverage" version))
+              (sha256
+               (base32
+                "1prkwz1hkcbx19nsadbcmk4wl27ysx001pa8bykfagd3d87zxbpa"))))))
+
 (define-public python-cov-core
   (package
     (name "python-cov-core")
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 9b88d66118..3ed0c6dd16 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -4,7 +4,7 @@
 ;;; Copyright © 2017 Christopher Baines <[email-masked]>
 ;;; Copyright © 2016, 2017 Danny Milosavljevic <[email-masked]>
 ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <[email-masked]>
-;;; Copyright © 2016, 2017 Marius Bakke <[email-masked]>
+;;; Copyright © 2016, 2017, 2019 Marius Bakke <[email-masked]>
 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <[email-masked]>
 ;;; Copyright © 2017 Roel Janssen <[email-masked]>
 ;;; Copyright © 2016, 2017 Julien Lepiller <[email-masked]>
@@ -421,6 +421,32 @@ both of which are installed automatically if you install this library.")
 (define-public python2-flask-babel
   (package-with-python2 python-flask-babel))
 
+(define-public python-gunicorn
+  (package
+    (name "python-gunicorn")
+    (version "19.9.0")
+    (source (origin
+              (method url-fetch)
+              (uri (pypi-uri "gunicorn" version))
+              (sha256
+               (base32
+                "1wzlf4xmn6qjirh5w81l6i6kqjnab1n1qqkh7zsj1yb6gh4n49ps"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(;; XXX: check requirements_test.txt to see whether these special
+       ;; versions are still needed when updating.
+       ("python-coverage" ,python-coverage-4.3)
+       ("python-pytest" ,python-pytest-3.2)
+       ("python-pytest-cov" ,python-pytest-cov-2.5)))
+    (home-page "https://gunicorn.org/")
+    (synopsis "Python WSGI erver")
+    (description
+     "Gunicorn ('Green Unicorn') is a Python WSGI HTTP Server.  It is 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 resource usage, and fairly speedy.")
+    (license license:expat)))
+
 (define-public python-html5lib
   (package
     (name "python-html5lib")
-- 
2.22.1