robotology / idyntree

Multibody Dynamics Library designed for Free Floating Robots
BSD 3-Clause "New" or "Revised" License
172 stars 67 forks source link

iDynTree PyPI binary packaging: Migrate from manylinux_2_24 to manylinux_2_28 and disable IDYNTREE_USES_IPOPT DIDYNTREE_USES_ASSIMP:BOOL IDYNTREE_USES_IRRLICHT options on PyPI #1068

Closed traversaro closed 1 year ago

traversaro commented 1 year ago

Fix https://github.com/robotology/idyntree/issues/1067 .

manylinux_2_24 was EOL since the beginnng of 2023: https://github.com/pypa/manylinux/issues/1369 .

traversaro commented 1 year ago

Apparently manylinux_2_24 is Debian-based, while manylinux_2_28 is Almalinux (i.e. RHEL clone) based (see https://github.com/pypa/manylinux#docker-images), so we need also to change the installation of dependencies.

traversaro commented 1 year ago

At a first glance, almalinux does not have assimp, irrlicht and ipopt packages, while it has eigen and libxml2 . Probably we can wait for @diegoferigo to be back to discuss the way forward here.

At a first glance options are:

diegoferigo commented 1 year ago

At a first glance options are:

* Build wheels with only eigen and libxml2 options enabled,

* Disable wheels generation at all.

The PyPI wheels seem to me quite effortless to maintain. Rather than removing the support of the wheels entirely, I'd proceed with just eigen and libxml2 for now.

If anyone needs features based on assimp|irrlicht|ipopt, they can either rely on conda / source-based installation, or add the support to the wheel. It's not straightforward but not too complicated.

The only feature that could be missed is the NLP IK that is based on ipopt. Maybe this can be addressed using coin-or/coinbrew that might simplify building everything from sources.

diegoferigo commented 1 year ago

@traversaro you should also update the following options:

https://github.com/robotology/idyntree/blob/e555c5809d8e7ce8868936226b3a2d7178985523/setup.py#L18-L32

traversaro commented 1 year ago

@traversaro you should also update the following options:

https://github.com/robotology/idyntree/blob/e555c5809d8e7ce8868936226b3a2d7178985523/setup.py#L18-L32

Thanks, done in https://github.com/robotology/idyntree/commit/4378bbe092f241aa24dc8901590ceb6f9de3a590 .

traversaro commented 1 year ago

Ok, the PR is ready for review and for now we disable ipopt, assimp and irrlicht support in binary wheels. Contributition to enable back (and mantain) the support for them is welcome if anyone needs such support.