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

From: Malte Frank Gerdes <[email-masked]>
Date: Thu, 08 Oct 2020 14:05:50 +0200

Efraim Flashner <[email-masked]> writes:

> 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?

I can certainly try to fix this. I will look into it in the evening.
BTW: Are you using musl libc as your primary libc? If so, that's cool,
how did you do that? :)

> substitute* can take a list, so it would be simpler to write this as:
> substitute* '("shapely/geos.py"
>               "shapely/_buildcfg.py")

One more thing i've learned :)

Malte