Subject: [PATCH] gnu: Add python-shapely and python2-shapely.

From: Kei Kebreau <[email-masked]>
Date: Sun, 14 Jan 2018 20:31:17 -0500

* gnu/packages/python.scm (python-shapely, python2-shapely): New variables.
---
 gnu/packages/python.scm | 50 ++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm
index 0b582e6b7..17422673f 100644
--- a/gnu/packages/python.scm
+++ b/gnu/packages/python.scm
@@ -41,7 +41,7 @@
 ;;; Copyright © 2017 Mathieu Othacehe <[email-masked]>
 ;;; Copyright © 2017 José Miguel Sánchez García <[email-masked]>
 ;;; Copyright © 2017 Roel Janssen <[email-masked]>
-;;; Copyright © 2017 Kei Kebreau <[email-masked]>
+;;; Copyright © 2017, 2018 Kei Kebreau <[email-masked]>
 ;;; Copyright © 2017 Rutger Helling <[email-masked]>
 ;;; Copyright © 2017 Muriithi Frederick Muriuki <[email-masked]>
 ;;; Copyright © 2017 Brendan Tildesley <[email-masked]>
@@ -76,6 +76,7 @@
   #:use-module (gnu packages file)
   #:use-module (gnu packages fontutils)
   #:use-module (gnu packages gcc)
+  #:use-module (gnu packages geo)
   #:use-module (gnu packages ghostscript)
   #:use-module (gnu packages gl)
   #:use-module (gnu packages glib)
@@ -470,6 +471,53 @@ pidof, tty, taskset, pmap.")
 (define-public python2-psutil
   (package-with-python2 python-psutil))
 
+(define-public python-shapely
+  (package
+    (name "python-shapely")
+    (version "1.6.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri "Shapely" version))
+       (sha256
+        (base32
+         "0svc58dzcw9gj92b4sgq35sdxkf85z0qwlzxarkzq4bp3h8jy58l"))))
+    (build-system python-build-system)
+    (native-inputs
+     `(("python-cython" ,python-cython)
+       ("python-matplotlib" ,python-matplotlib)
+       ("python-pyqt" ,python-pyqt)
+       ("python-pytest" ,python-pytest)
+       ("python-pytest-cov" ,python-pytest-cov)))
+    (inputs
+     `(("geos" ,geos)))
+    (propagated-inputs
+     `(("python-numpy" ,python-numpy)))
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-geos-path
+           (lambda* (#:key inputs #:allow-other-keys)
+             (let ((geos (assoc-ref inputs "geos"))
+                   (glibc (assoc-ref inputs ,(if (%current-target-system)
+                                                 "cross-libc" "libc"))))
+               (substitute* "shapely/geos.py"
+                 (("_lgeos = load_dll\\('geos_c', fallbacks=.*\\)")
+                  (string-append "_lgeos = load_dll('geos_c', fallbacks=['"
+                                 geos "/lib/libgeos_c.so'])"))
+                 (("free = load_dll\\('c'\\)\\.free")
+                  (string-append "free = load_dll('c', fallbacks=['"
+                                 glibc "/lib/libc.so.6']).free"))))
+             #t)))))
+    (home-page
+     "https://github.com/Toblerity/Shapely")
+    (synopsis "Library for the manipulation and analysis of geometric objects")
+    (description "Geometric objects, predicates, and operations")
+    (license license:bsd-3)))
+
+(define-public python2-shapely
+  (package-with-python2 python-shapely))
+
 (define-public python-clyent
   (package
     (name "python-clyent")
-- 
2.15.1