Simple-Robotics / proxsuite

The Advanced Proximal Optimization Toolbox
BSD 2-Clause "Simplified" License
414 stars 50 forks source link

pip install picks up 0.2.13 instead of 0.3.4 #194

Closed stephane-caron closed 1 year ago

stephane-caron commented 1 year ago

I don't understand why, since 0.2.14 and ulterior are listed in https://pypi.org/pypi/proxsuite/json, but on both Ubuntu 20.04 machines I tested this on pip picks up version 0.2.13 as the latest one.

$ pip index versions proxsuite
WARNING: pip index is currently an experimental command. It may be removed/changed in a future release without prior warning.
proxsuite (0.2.13)
Available versions: 0.2.13, 0.2.12, 0.2.11, 0.2.10, 0.2.9, 0.2.8, 0.2.7, 0.2.6, 0.2.5, 0.2.4, 0.2.2, 0.2.1, 0.2.0, 0.1.2, 0.1.1, 0.1.0, 0.0.1, 0.0.0
  INSTALLED: 0.2.13
  LATEST:    0.2.13

@nim65s @fabinsch Do you have an idea what could be causing this discrepancy?

fabinsch commented 1 year ago

In a docker based on ubuntu:20.04, I have the same problem as @stephane-caron is reporting here. Pip can just find proxsuite up to version 0.2.13, while when I change it to be ubuntu:22.04, the output is the following:

root@a6749566c1b6:/# pip3 --version
pip 23.0.1 from /usr/local/lib/python3.10/dist-packages/pip (python 3.10)
root@a6749566c1b6:/# pip3 index versions proxsuite
WARNING: pip index is currently an experimental command. It may be removed/changed in a future release without prior warning.
proxsuite (0.3.4)
Available versions: 0.3.4, 0.3.3, 0.3.2, 0.3.1, 0.3.0, 0.2.16, 0.2.15, 0.2.14, 0.2.13, 0.2.12, 0.2.11, 0.2.10, 0.2.9, 0.2.8, 0.2.7, 0.2.6, 0.2.5, 0.2.4, 0.2.2, 0.2.1, 0.2.0, 0.1.2, 0.1.1, 0.1.0, 0.0.1, 0.0.0
root@a6749566c1b6:/# 

@nim65s do you have any idea why ?

nim65s commented 1 year ago

For 0.3.4 and linux, I can only see manylinux_2_35, which means that only linux distributions with a glibc >= 2.35 will be able to install those: https://pypi.org/project/proxsuite/#files

For eigenpy, we have manylinux_2_17: https://pypi.org/project/proxsuite/#files, which is compatible with way more distributions (ref. https://github.com/stack-of-tasks/pinocchio/issues/1819)

fabinsch commented 1 year ago

Okay, I see.. since we started to distribute proxsuite wheels we always have had manylinux_2_24_x86_64, see here. So maybe something changed under the hood, I will investigate it further.

fabinsch commented 1 year ago

For proxsuite v.0.2.13 the generated wheels where compatible with manylinux_2_31, while the version v.0.2.14 has wheels compatible with manylinux_2_35. That explains, why we can only have until v0.2.13 currently for ubuntu 20.04. The question is why did this happen, and for me by looking at the changelog v0.2.13...v0.2.14 this does not become clear. We did not introduce new dependencies or started to use new features from newer std libs or something similar. So maybe something changed in the manylinux_2_24_x86_64 image that we use on our workflow to generate the wheels. Also, the support has been dropped officially, maybe we should consider switching to manylinux_2_28_x86_64.

fabinsch commented 1 year ago

Also when building the wheels on the manylinux2014 action image, we obtain compatibility with manylinux_2_35. It seems that we are using some symbols which are only available in glibc>=2.35 and we have to identify them.

jcarpent commented 1 year ago

@fabinsch could you force the use of an older version of manylinux?

nim65s commented 1 year ago

Those wheels are created in a conda environment, so I guess conda provides its glibc, and it was updated from 2.31 to 2.35 just after proxsuite 0.2.13.

fabinsch commented 1 year ago

You are right @nim65s , I can see here that the conda env is indeed using glibc=2.35 in our latest releases.

fabinsch commented 1 year ago

Hi @stephane-caron, the issue is solved with #196 and v.0.2.35. I just tried it on a docker container with ubuntu20.04 and it works at expected. Feel free to reopen the issue if you encounter again some problems.

stephane-caron commented 1 year ago

It works, thanks @fabinsch!