seung-lab / cloud-files

Threaded Python and CLI client library for AWS S3, Google Cloud Storage (GCS), in-memory, and the local filesystem.
BSD 3-Clause "New" or "Revised" License
36 stars 8 forks source link

Unpinned dependency on `gevent` causing install errors with latest release of `gevent` #97

Closed rpmcginty closed 10 months ago

rpmcginty commented 10 months ago

Problem

The latest gevent release (23.9.0) is failing to build for python 3.9 on this aws/codebuild/standard:5.0 image. Because the dependency cloud-files makes on gevent is unpinned, we are exposed to these unintended failures.

Background

We pull in cloud-files~=4.15 as a dependency and compile code on aws/codebuild/standard:5.0. In the past 5 days, we started seeing build failures with the unpinned gevent (dependency of cloud-files) after the package upgraded to 23.9.0.

Failure

...
#12 38.70       generating cffi module 'build/temp.linux-x86_64-cpython-39/gevent.libuv._corecffi.c'
--
4890 | #12 38.70       creating build/temp.linux-x86_64-cpython-39
4891 | #12 38.70       Running '(cd  "/tmp/pip-install-erth84_2/gevent_60d4e7e1e6d7425492946b23b1f4d8e7/deps/libev"  && sh ./configure -C > configure-output.txt )' in /tmp/pip-install-erth84_2/gevent_60d4e7e1e6d7425492946b23b1f4d8e7
4892 | #12 38.70       configure: error: in `/tmp/pip-install-erth84_2/gevent_60d4e7e1e6d7425492946b23b1f4d8e7/deps/libev':
4893 | #12 38.70       configure: error: no acceptable C compiler found in $PATH
4894 | #12 38.70       See `config.log' for more details

Seems like maybe a newer version of Cython is being used (per this commit)? not really sure but I'm not asking you to solve this.

Proposal

Please pin gevent to a stable version.

william-silversmith commented 10 months ago

Thanks for bringing this to my attention. There are also problems introduced by pinning (lack of bugfixes etc). Perhaps a compromise might be to pin for certain OSes? What do you think? Is there a platform tag that you could suggest?

rpmcginty commented 10 months ago

Fair point, I understand that pinning might be undesirable for downstream consumers of this package.

FWIW I am following up on this with this issue in gevent. https://github.com/gevent/gevent/issues/1993. I am hoping that they will add support back in for manylinux2014_x86_64.

If you have the infrastructure to easily pin on specific architectures and OSes perhaps that could work, but I will circle back to this once the other issue is addressed.

rpmcginty commented 10 months ago

looks like gevent has added support again for the platform tags in v 23.9.2 that were removed in a previous version.