On Wed, Oct 07, 2020 at 11:32:01PM +0200, Malte Frank Gerdes wrote: > 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: is not an instance of > --8<---------------cut here---------------end--------------->8--- > > This package was last successfully built on 13th September. > It turns out this is due to a change in geos with 3.8 https://github.com/Toblerity/Shapely/issues/799 If I cherry-pick the patch to fix it then it passes the test suite. If I upgrade python-shapely to 1.7.1 the fix is already included but there's a new build error: gcc -pthread -shared -Wl,-rpath=/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/lib build/temp.linux-x86_64-3.8/shapely/vectorized/_vectorized.o -L/gnu/store/pinvpk9w6izxcwci4ghiwgvykmgsfy2c-geos-3.8.1/lib -L/gnu/store/q9rm8h9imazsq2c4qiv2yjpvlvliywqb-python-3.8.2/lib -lgeos_c -o /tmp/guix-build-python-shapely-1.7.1.drv-0/Shapely-1.7.1/shapely/vectorized/_vectorized.cpython-38-x86_64-linux-gnu.so warning: no library file corresponding to '/gnu/store/603imkkh2bqs01z8ik0b2ndgpdz0jghk-python-numpy-1.17.3/lib/python3.8/site-packages/numpy/core/include' found (skipping) warning: no library file corresponding to '/gnu/store/603imkkh2bqs01z8ik0b2ndgpdz0jghk-python-numpy-1.17.3/lib/python3.8/site-packages/numpy/core/include' found (skipping) error: Could not find lib c or load any of its variants ['libc.musl-x86_64.so.1']. command "python" "-c" "import setuptools, tokenize;__file__='setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\\r\\n', '\\n');f.close();exec(compile(code, __file__, 'exec'))" "test" failed with status 1 builder for `/gnu/store/2yz1ybl0156canhfz4vhay0g473c5nwv-python-shapely-1.7.1.drv' failed with exit code 1 build of /gnu/store/2yz1ybl0156canhfz4vhay0g473c5nwv-python-shapely-1.7.1.drv failed View build log at '/var/log/guix/drvs/2y/z1ybl0156canhfz4vhay0g473c5nwv-python-shapely-1.7.1.drv.bz2'. guix build: error: build of `/gnu/store/2yz1ybl0156canhfz4vhay0g473c5nwv-python-shapely-1.7.1.drv' failed Do you want to take a stab at updating python-shapely to 1.7.1? > > 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--- > substitute* can take a list, so it would be simpler to write this as: substitute* '("shapely/geos.py" "shapely/_buildcfg.py") -- Efraim Flashner אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted