Subject: bug#43855: gnu: python-shapely fails to build

From: Malte Frank Gerdes <[email-masked]>
Date: Wed, 07 Oct 2020 23:32:01 +0200

Hi,

python-shapely fails to build, because it can't find the c libary,
the package definition was not complete (patch at the end).

Now the package finds a C libary but the Test Suite fails with the
follwoing error:

--8<---------------cut here---------------start------------->8---
======================================================================
FAIL: test_operations (tests.test_operations.OperationsTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/tmp/guix-build-python-shapely-1.6.4.post2.drv-0/Shapely-1.6.4.post2/tests/test_operations.py", line 25, in test_operations
    self.assertIsInstance(point.intersection(Point(-1, -1)),
AssertionError: <shapely.geometry.point.Point object at 0x7fffe1544f70> is not an instance of <class 'shapely.geometry.collection.GeometryCollection'>
--8<---------------cut here---------------end--------------->8---

This package was last successfully built on 13th September.

Malte

--8<---------------cut here---------------start------------->8---
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 459526941b..02744bfc6d 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -533,13 +533,16 @@ pidof, tty, taskset, pmap.")
              (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"))))
+               (map
+                (lambda (file)
+                  (substitute* file
+                    (("_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"))))
+                '("shapely/geos.py" "shapely/_buildcfg.py")))
              #t)))))
     (home-page "https://github.com/Toblerity/Shapely")
     (synopsis "Library for the manipulation and analysis of geometric objects")
--8<---------------cut here---------------end--------------->8---