Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add setuptools support #296

Closed
wants to merge 14 commits into from

Conversation

diegoferigo
Copy link
Member

@diegoferigo diegoferigo commented May 5, 2021

This PR enables building and installing the bipedal_locomotion_framework Python package with the following command:

pip3 install git+https://github.com/dic-iit/bipedal-locomotion-framework.git

Before merging, you can try using this PR with the following command:

pip3 install --no-build-isolation git+https://github.com/diegoferigo/bipedal-locomotion-framework@feature/setup.py

Blocked by:

  • Official release of manifpy to PyPI Using the git url works.
  • Discussion on which blf components should be enabled by default Enough to run pytest.

Comments:

  • This PR does not provide any PyPI support. While distributing the sdist is relatively straightforward since it requires the users to manually install all the dependencies in their system beforehand, there's a long way before the wheels (binaries) of bipedal_locomotion_framework can land into PyPI, especially if we want to comply with PEP600.
  • I enabled the minimum amount of blf components that allow to build the most recent version of the pybind11 bindings, requiring the following system dependencies:
    • yarp
    • casadi
    • spdlog
    • manif
    • qhull
    • osqp-eigen
  • In order to build the CMake project, I used diegoferigo/cmake-build-extension that greatly simplifies the integration of setuptools with CMake. It is already used by other projects in our ecosystem like robotology/idyntree and robotology/gym-ignition.
  • The usage of cmake-build-extension has the advantage of including the exported CMake project in the wheel, so that in the future it could be distributed through PyPI and consumed by downstream projects.
  • Furthermore, cmake-build-extension supports PEP517 and PEP518 (more info here).
  • The versioning scheme relies on pypa/setuptools_scm that automatically detects the version from the git repository and allows having official releases that correspond to git tags, and pre-releases that correspond to merged commits.
ABI
bipedal-locomotion-framework/dist on  feature/setup.py 🅒 /conda  
❯ ldd bipedal_locomotion_framework/bindings.cpython-38-x86_64-linux-gnu.so
        linux-vdso.so.1 (0x00007ffe23b6a000)
        libBipedalLocomotionFrameworkContactDetectors.so.0.1.0 => /home/dferigo/git/bipedal-locomotion-framework/dist/bipedal_locomotion_framework/lib/libBipedalLocomotionFrameworkContactDetectors.so.0.1.0 (0x00007f423aa95000)
        libBipedalLocomotionFrameworkPlanners.so.0.1.0 => /home/dferigo/git/bipedal-locomotion-framework/dist/bipedal_locomotion_framework/lib/libBipedalLocomotionFrameworkPlanners.so.0.1.0 (0x00007f423a9d1000)
        libBipedalLocomotionFrameworkRobotInterfaceYarpImplementation.so.0.1.0 => /home/dferigo/git/bipedal-locomotion-framework/dist/bipedal_locomotion_framework/lib/libBipedalLocomotionFrameworkRobotInterfaceYarpImplementation.so.0.1.0 (0x00007f423a99f000)
        libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.1.0 => /home/dferigo/git/bipedal-locomotion-framework/dist/bipedal_locomotion_framework/lib/libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.1.0 (0x00007f423a94d000)
        libBipedalLocomotionFrameworkRobotInterface.so.0.1.0 => /home/dferigo/git/bipedal-locomotion-framework/dist/bipedal_locomotion_framework/lib/libBipedalLocomotionFrameworkRobotInterface.so.0.1.0 (0x00007f423a946000)
        libYARP_dev.so.3 => /usr/local/src/robotology-superbuild/build/install/lib/libYARP_dev.so.3 (0x00007f423a870000)
        libBipedalLocomotionFrameworkSystem.so.0.1.0 => /home/dferigo/git/bipedal-locomotion-framework/dist/bipedal_locomotion_framework/lib/libBipedalLocomotionFrameworkSystem.so.0.1.0 (0x00007f423a862000)
        libBipedalLocomotionFrameworkContacts.so.0.1.0 => /home/dferigo/git/bipedal-locomotion-framework/dist/bipedal_locomotion_framework/lib/libBipedalLocomotionFrameworkContacts.so.0.1.0 (0x00007f423a84e000)
        libBipedalLocomotionFrameworkParametersHandler.so.0.1.0 => /home/dferigo/git/bipedal-locomotion-framework/dist/bipedal_locomotion_framework/lib/libBipedalLocomotionFrameworkParametersHandler.so.0.1.0 (0x00007f423a83a000)
        libidyntree-high-level.so => /usr/local/src/robotology-superbuild/build/install/lib/libidyntree-high-level.so (0x00007f423a815000)
        libidyntree-model.so => /usr/local/src/robotology-superbuild/build/install/lib/libidyntree-model.so (0x00007f423a7a0000)
        libstdc++.so.6 => /conda/lib/libstdc++.so.6 (0x00007f423a62b000)
        libm.so.6 => /usr/lib/x86_64-linux-gnu/libm.so.6 (0x00007f423a4d3000)
        libgcc_s.so.1 => /conda/lib/libgcc_s.so.1 (0x00007f423a4bf000)
        libc.so.6 => /usr/lib/x86_64-linux-gnu/libc.so.6 (0x00007f423a2cd000)
        libcasadi.so.3.6 => /usr/local/src/robotology-superbuild/build/install/lib/libcasadi.so.3.6 (0x00007f4239b55000)
        libBipedalLocomotionFrameworkTextLogging.so.0.1.0 => /home/dferigo/git/bipedal-locomotion-framework/dist/bipedal_locomotion_framework/lib/libBipedalLocomotionFrameworkTextLogging.so.0.1.0 (0x00007f4239b50000)
        libspdlog.so.1 => /conda/lib/libspdlog.so.1 (0x00007f4239abd000)
        libpthread.so.0 => /usr/lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4239a9a000)
        libYARP_sig.so.3 => /usr/local/src/robotology-superbuild/build/install/lib/libYARP_sig.so.3 (0x00007f4239a5a000)
        libYARP_os.so.3 => /usr/local/src/robotology-superbuild/build/install/lib/libYARP_os.so.3 (0x00007f4239894000)
        libidyntree-modelio-urdf.so => /usr/local/src/robotology-superbuild/build/install/lib/libidyntree-modelio-urdf.so (0x00007f4239848000)
        libidyntree-core.so => /usr/local/src/robotology-superbuild/build/install/lib/libidyntree-core.so (0x00007f42397d0000)
        libYARP_math.so.3 => /usr/local/src/robotology-superbuild/build/install/lib/libYARP_math.so.3 (0x00007f4239784000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f423ab50000)
        libdl.so.2 => /usr/lib/x86_64-linux-gnu/libdl.so.2 (0x00007f423977c000)
        libjpeg.so.8 => /conda/lib/libjpeg.so.8 (0x00007f42396e2000)
        libpng16.so.16 => /conda/lib/libpng16.so.16 (0x00007f42396a9000)
        libACE.so.7.0.1 => /conda/lib/libACE.so.7.0.1 (0x00007f4239525000)
        libedit.so.0 => /conda/lib/libedit.so.0 (0x00007f42394e9000)
        libidyntree-sensors.so => /usr/local/src/robotology-superbuild/build/install/lib/libidyntree-sensors.so (0x00007f42394c1000)
        libidyntree-modelio-xml.so => /usr/local/src/robotology-superbuild/build/install/lib/libidyntree-modelio-xml.so (0x00007f42394ac000)
        libxml2.so.2 => /conda/lib/libxml2.so.2 (0x00007f4239344000)
        libz.so.1 => /conda/lib/./libz.so.1 (0x00007f423932a000)
        librt.so.1 => /usr/lib/x86_64-linux-gnu/librt.so.1 (0x00007f423931f000)
        libncurses.so.6 => /conda/lib/./libncurses.so.6 (0x00007f42392f1000)
        libtinfo.so.6 => /conda/lib/./libtinfo.so.6 (0x00007f42392b3000)
        libicuuc.so.68 => /conda/lib/./libicuuc.so.68 (0x00007f42390c9000)
        liblzma.so.5 => /conda/lib/./liblzma.so.5 (0x00007f42390a0000)
        libiconv.so.2 => /conda/lib/./libiconv.so.2 (0x00007f4238fba000)
        libicudata.so.68 => /conda/lib/././libicudata.so.68 (0x00007f4237477000)
Tree

bash

bipedal-locomotion-framework on  feature/setup.py via △ v3.20.1 via 🐍 v3.8.8 🅒 /conda  
❯ tree /conda/lib/python3.8/site-packages/bipedal_locomotion_framework
/conda/lib/python3.8/site-packages/bipedal_locomotion_framework
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-38.pyc
│   └── all.cpython-38.pyc
├── all.py
├── bin
│   ├── blf-joint-position-tracking
│   ├── blf-joint-position-tracking-0.1.0
│   └── blf-joint-position-tracking-script.sh
├── bindings.cpython-38-x86_64-linux-gnu.so
├── include
│   └── BipedalLocomotion
│       ├── ContactDetectors
│       │   ├── ContactDetector.h
│       │   └── SchmittTriggerDetector.h
│       ├── ContactModels
│       │   ├── ContactModel.h
│       │   └── ContinuousContactModel.h
│       ├── Contacts
│       │   ├── Contact.h
│       │   ├── ContactList.h
│       │   ├── ContactPhase.h
│       │   └── ContactPhaseList.h
│       ├── ContinuousDynamicalSystem
│       │   ├── CompliantContactWrench.h
│       │   ├── DynamicalSystem.h
│       │   ├── FixedBaseDynamics.h
│       │   ├── FixedStepIntegrator.h
│       │   ├── FloatingBaseDynamicsWithCompliantContacts.h
│       │   ├── FloatingBaseSystemKinematics.h
│       │   ├── ForwardEuler.h
│       │   ├── Integrator.h
│       │   ├── LinearTimeInvariantSystem.h
│       │   └── impl
│       │       └── traits.h
│       ├── Conversions
│       │   ├── CommonConversions.h
│       │   └── ManifConversions.h
│       ├── Estimators
│       │   └── RecursiveLeastSquare.h
│       ├── FloatingBaseEstimators
│       │   ├── FloatingBaseEstimator.h
│       │   ├── FloatingBaseEstimatorIO.h
│       │   ├── FloatingBaseEstimatorParams.h
│       │   ├── InvariantEKFBaseEstimator.h
│       │   ├── LeggedOdometry.h
│       │   └── ModelComputationsHelper.h
│       ├── Framework.h
│       ├── GenericContainer
│       │   ├── TemplateHelpers.h
│       │   └── Vector.h
│       ├── Math
│       │   ├── CARE.h
│       │   ├── Constants.h
│       │   ├── LinearizedFrictionCone.h
│       │   └── Wrench.h
│       ├── ParametersHandler
│       │   ├── IParametersHandler.h
│       │   ├── StdImplementation.h
│       │   ├── StdImplementation.tpp
│       │   ├── YarpImplementation.h
│       │   └── YarpImplementation.tpp
│       ├── Planners
│       │   ├── ConvexHullHelper.h
│       │   ├── DCMPlanner.h
│       │   ├── QuinticSpline.h
│       │   ├── SO3Planner.h
│       │   ├── SO3Planner.tpp
│       │   ├── SwingFootPlanner.h
│       │   └── TimeVaryingDCMPlanner.h
│       ├── RobotInterface
│       │   ├── IRobotControl.h
│       │   ├── ISensorBridge.h
│       │   ├── YarpHelper.h
│       │   ├── YarpRobotControl.h
│       │   ├── YarpSensorBridge.h
│       │   └── impl
│       │       └── YarpSensorBridgeImpl.h
│       ├── System
│       │   ├── Advanceable.h
│       │   ├── AdvanceableRunner.h
│       │   ├── Clock.h
│       │   ├── IClock.h
│       │   ├── LinearTask.h
│       │   ├── QuitHandler.h
│       │   ├── SharedResource.h
│       │   ├── Sink.h
│       │   ├── Source.h
│       │   ├── StdClock.h
│       │   ├── VariablesHandler.h
│       │   └── YarpClock.h
│       ├── TextLogging
│       │   └── Logger.h
│       └── YarpUtilities
│           ├── Helper.h
│           ├── Helper.tpp
│           └── RosPublisher.h
├── lib
│   ├── cmake
│   │   └── BipedalLocomotionFramework
│   │       ├── BipedalLocomotionFrameworkConfig.cmake
│   │       ├── BipedalLocomotionFrameworkConfigVersion.cmake
│   │       ├── BipedalLocomotionFrameworkTargets-release.cmake
│   │       └── BipedalLocomotionFrameworkTargets.cmake
│   ├── libBipedalLocomotionFrameworkContactDetectors.so
│   ├── libBipedalLocomotionFrameworkContactDetectors.so.0.1.0
│   ├── libBipedalLocomotionFrameworkContactModels.so
│   ├── libBipedalLocomotionFrameworkContactModels.so.0.1.0
│   ├── libBipedalLocomotionFrameworkContacts.so
│   ├── libBipedalLocomotionFrameworkContacts.so.0.1.0
│   ├── libBipedalLocomotionFrameworkContinuousDynamicalSystem.so
│   ├── libBipedalLocomotionFrameworkContinuousDynamicalSystem.so.0.1.0
│   ├── libBipedalLocomotionFrameworkEstimators.so
│   ├── libBipedalLocomotionFrameworkEstimators.so.0.1.0
│   ├── libBipedalLocomotionFrameworkFloatingBaseEstimators.so
│   ├── libBipedalLocomotionFrameworkFloatingBaseEstimators.so.0.1.0
│   ├── libBipedalLocomotionFrameworkMath.so
│   ├── libBipedalLocomotionFrameworkMath.so.0.1.0
│   ├── libBipedalLocomotionFrameworkParametersHandler.so
│   ├── libBipedalLocomotionFrameworkParametersHandler.so.0.1.0
│   ├── libBipedalLocomotionFrameworkParametersHandlerYarpImplementation.so
│   ├── libBipedalLocomotionFrameworkParametersHandlerYarpImplementation.so.0.1.0
│   ├── libBipedalLocomotionFrameworkPlanners.so
│   ├── libBipedalLocomotionFrameworkPlanners.so.0.1.0
│   ├── libBipedalLocomotionFrameworkRobotInterface.so
│   ├── libBipedalLocomotionFrameworkRobotInterface.so.0.1.0
│   ├── libBipedalLocomotionFrameworkRobotInterfaceYarpImplementation.so
│   ├── libBipedalLocomotionFrameworkRobotInterfaceYarpImplementation.so.0.1.0
│   ├── libBipedalLocomotionFrameworkSystem.so
│   ├── libBipedalLocomotionFrameworkSystem.so.0.1.0
│   ├── libBipedalLocomotionFrameworkSystemYarpImplementation.so
│   ├── libBipedalLocomotionFrameworkSystemYarpImplementation.so.0.1.0
│   ├── libBipedalLocomotionFrameworkTextLogging.so
│   ├── libBipedalLocomotionFrameworkTextLogging.so.0.1.0
│   ├── libBipedalLocomotionFrameworkYarpUtilities.so
│   ├── libBipedalLocomotionFrameworkYarpUtilities.so.0.1.0
│   └── yarp
│       └── FloatingBaseEstimatorDevice.so
└── share
    ├── BipedalLocomotionFramework
    │   ├── cmake
    │   │   └── Findcppad.cmake
    │   ├── python
    │   │   ├── __pycache__
    │   │   │   └── blf_joint_position_tracking_plot_dataset.cpython-38.pyc
    │   │   └── blf_joint_position_tracking_plot_dataset.py
    │   └── robots
    │       └── iCubGenova09
    │           └── blf-joint-position-tracking-options.ini
    ├── gazebo
    │   └── models
    │       └── stairs
    │           └── model.config
    └── yarp
        ├── plugins
        │   ├── FloatingBaseEstimatorDevice.ini
        │   └── floating_base_estimator_device.ini
        └── robots
            └── iCubGazeboV2_5
                ├── estimators
                │   └── invekf-base-estimator.xml
                ├── interface
                │   ├── all_joints_mc.xml
                │   ├── root_imu.xml
                │   ├── wbd_left_foot.xml
                │   └── wbd_right_foot.xml
                └── launch-base-estimator.xml

@diegoferigo
Copy link
Member Author

diegoferigo commented May 5, 2021

Having a quick look to the ABI posted above, I am quite confident that PEP600 wheels (i.e. only GNU/Linux) are not that far fetched. In fact we need:

  • idyntree: it already distributes a PEP600 wheel (Build manylinux_2_24 compliant wheels robotology/idyntree#844) that include a static CMake project that we can link against.
  • casadi: it distributes a manylinux1 wheel (I'm not sure if it's a real manylinux1 or a renamed x86_64-linux-gnu wheel to make PyPI happy), and it includes as well the exported (shared) CMake project. See details below.
  • spdlog / libxml2 / libACE: can be bundled by repairing the wheel with pypa/auditwheel.
  • yarp: this is the only real missing piece (cc @drdanz @traversaro). However, I recently managed to build a PEP600 wheel, that requires working on Debian Stretch, by installing yarp from deb. The difference in the two cases, is that if YARP would properly support PyPI, we could link against a static version, instead, by using the deb installation, we have to repair and vendor the yarp shared libs into the blf wheel.
CasADI wheel tree
bipedal-locomotion-framework on  feature/setup.py via △ v3.20.1 via 🐍 v3.8.8 🅒 /conda  took 3s 
❯ tree /conda/lib/python3.8/site-packages/casadi
/conda/lib/python3.8/site-packages/casadi
├── __init__.py
├── __pycache__
│   ├── __init__.cpython-38.pyc
│   └── casadi.cpython-38.pyc
├── _casadi.so
├── casadi
│   └── jit
│       ├── clang
│       │   └── 3.4.2
│       │       └── include
│       │           ├── Intrin.h
│       │           ├── __wmmintrin_aes.h
│       │           ├── __wmmintrin_pclmul.h
│       │           ├── altivec.h
│       │           ├── ammintrin.h
│       │           ├── arm_neon.h
│       │           ├── avx2intrin.h
│       │           ├── avxintrin.h
│       │           ├── bmi2intrin.h
│       │           ├── bmiintrin.h
│       │           ├── cpuid.h
│       │           ├── emmintrin.h
│       │           ├── f16cintrin.h
│       │           ├── float.h
│       │           ├── fma4intrin.h
│       │           ├── fmaintrin.h
│       │           ├── immintrin.h
│       │           ├── iso646.h
│       │           ├── limits.h
│       │           ├── lzcntintrin.h
│       │           ├── mm3dnow.h
│       │           ├── mm_malloc.h
│       │           ├── mmintrin.h
│       │           ├── module.map
│       │           ├── nmmintrin.h
│       │           ├── pmmintrin.h
│       │           ├── popcntintrin.h
│       │           ├── prfchwintrin.h
│       │           ├── rdseedintrin.h
│       │           ├── rtmintrin.h
│       │           ├── shaintrin.h
│       │           ├── smmintrin.h
│       │           ├── stdalign.h
│       │           ├── stdarg.h
│       │           ├── stdbool.h
│       │           ├── stddef.h
│       │           ├── stdint.h
│       │           ├── stdnoreturn.h
│       │           ├── tbmintrin.h
│       │           ├── tgmath.h
│       │           ├── tmmintrin.h
│       │           ├── unwind.h
│       │           ├── varargs.h
│       │           ├── wmmintrin.h
│       │           ├── x86intrin.h
│       │           ├── xmmintrin.h
│       │           └── xopintrin.h
│       ├── get_system_includes.sh
│       └── system_includes.txt
├── casadi.py
├── cmake
│   ├── casadi-config-version.cmake
│   ├── casadi-config.cmake
│   ├── casadi-targets-release.cmake
│   └── casadi-targets.cmake
├── dummy.txt
├── include
│   ├── casadi
│   │   ├── casadi.hpp
│   │   ├── casadi.i
│   │   ├── casadi_c.h
│   │   ├── casadi_numpy.hpp
│   │   ├── config.h
│   │   ├── core
│   │   │   ├── assertion.cpp
│   │   │   ├── assertion.hpp
│   │   │   ├── bilin.cpp
│   │   │   ├── bilin.hpp
│   │   │   ├── binary_mx.hpp
│   │   │   ├── binary_mx_impl.hpp
│   │   │   ├── binary_sx.hpp
│   │   │   ├── bspline.cpp
│   │   │   ├── bspline.hpp
│   │   │   ├── calculus.hpp
│   │   │   ├── callback.cpp
│   │   │   ├── callback.hpp
│   │   │   ├── callback_internal.cpp
│   │   │   ├── callback_internal.hpp
│   │   │   ├── casadi_axpy.hpp
│   │   │   ├── casadi_bfgs.hpp
│   │   │   ├── casadi_bilin.hpp
│   │   │   ├── casadi_bound_consistency.hpp
│   │   │   ├── casadi_c.cpp
│   │   │   ├── casadi_cache.hpp
│   │   │   ├── casadi_call.cpp
│   │   │   ├── casadi_call.hpp
│   │   │   ├── casadi_clear.hpp
│   │   │   ├── casadi_common.cpp
│   │   │   ├── casadi_common.hpp
│   │   │   ├── casadi_convexify.hpp
│   │   │   ├── casadi_copy.hpp
│   │   │   ├── casadi_cvx.hpp
│   │   │   ├── casadi_de_boor.hpp
│   │   │   ├── casadi_densify.hpp
│   │   │   ├── casadi_dot.hpp
│   │   │   ├── casadi_export.h
│   │   │   ├── casadi_file_slurp.hpp
│   │   │   ├── casadi_fill.hpp
│   │   │   ├── casadi_find.cpp
│   │   │   ├── casadi_find.hpp
│   │   │   ├── casadi_finite_diff.hpp
│   │   │   ├── casadi_flip.hpp
│   │   │   ├── casadi_getu.hpp
│   │   │   ├── casadi_iamax.hpp
│   │   │   ├── casadi_interpn.hpp
│   │   │   ├── casadi_interpn_grad.hpp
│   │   │   ├── casadi_interpn_interpolate.hpp
│   │   │   ├── casadi_interpn_weights.hpp
│   │   │   ├── casadi_interrupt.cpp
│   │   │   ├── casadi_interrupt.hpp
│   │   │   ├── casadi_kron.hpp
│   │   │   ├── casadi_ldl.hpp
│   │   │   ├── casadi_limits.hpp
│   │   │   ├── casadi_logger.cpp
│   │   │   ├── casadi_logger.hpp
│   │   │   ├── casadi_low.cpp
│   │   │   ├── casadi_low.hpp
│   │   │   ├── casadi_lsqr.hpp
│   │   │   ├── casadi_max_viol.hpp
│   │   │   ├── casadi_meta.cpp
│   │   │   ├── casadi_meta.hpp
│   │   │   ├── casadi_minmax.hpp
│   │   │   ├── casadi_misc.cpp
│   │   │   ├── casadi_misc.hpp
│   │   │   ├── casadi_mtimes.hpp
│   │   │   ├── casadi_mv.hpp
│   │   │   ├── casadi_mv_dense.hpp
│   │   │   ├── casadi_nd_boor_dual_eval.hpp
│   │   │   ├── casadi_nd_boor_eval.hpp
│   │   │   ├── casadi_newton.hpp
│   │   │   ├── casadi_nlp.hpp
│   │   │   ├── casadi_norm_1.hpp
│   │   │   ├── casadi_norm_2.hpp
│   │   │   ├── casadi_norm_inf.hpp
│   │   │   ├── casadi_norm_inf_mul.hpp
│   │   │   ├── casadi_polyval.hpp
│   │   │   ├── casadi_project.hpp
│   │   │   ├── casadi_qp.hpp
│   │   │   ├── casadi_qr.hpp
│   │   │   ├── casadi_rank1.hpp
│   │   │   ├── casadi_regularize.hpp
│   │   │   ├── casadi_runtime.hpp
│   │   │   ├── casadi_scal.hpp
│   │   │   ├── casadi_sparsify.hpp
│   │   │   ├── casadi_sqpmethod.hpp
│   │   │   ├── casadi_sum_viol.hpp
│   │   │   ├── casadi_swap.hpp
│   │   │   ├── casadi_trans.hpp
│   │   │   ├── casadi_tri_project.hpp
│   │   │   ├── casadi_types.hpp
│   │   │   ├── casadi_vfmax.hpp
│   │   │   ├── casadi_vfmin.hpp
│   │   │   ├── code_generator.cpp
│   │   │   ├── code_generator.hpp
│   │   │   ├── concat.cpp
│   │   │   ├── concat.hpp
│   │   │   ├── config.h
│   │   │   ├── conic.cpp
│   │   │   ├── conic.hpp
│   │   │   ├── conic_impl.hpp
│   │   │   ├── constant_mx.cpp
│   │   │   ├── constant_mx.hpp
│   │   │   ├── constant_sx.hpp
│   │   │   ├── convexify.cpp
│   │   │   ├── convexify.hpp
│   │   │   ├── core.hpp
│   │   │   ├── dae_builder.cpp
│   │   │   ├── dae_builder.hpp
│   │   │   ├── determinant.cpp
│   │   │   ├── determinant.hpp
│   │   │   ├── dm.hpp
│   │   │   ├── dm_fwd.hpp
│   │   │   ├── dm_instantiator.cpp
│   │   │   ├── dot.cpp
│   │   │   ├── dot.hpp
│   │   │   ├── dple.cpp
│   │   │   ├── dple.hpp
│   │   │   ├── dple_impl.hpp
│   │   │   ├── einstein.cpp
│   │   │   ├── einstein.hpp
│   │   │   ├── exception.hpp
│   │   │   ├── expm.cpp
│   │   │   ├── expm.hpp
│   │   │   ├── expm_impl.hpp
│   │   │   ├── external.cpp
│   │   │   ├── external.hpp
│   │   │   ├── external_impl.hpp
│   │   │   ├── factory.hpp
│   │   │   ├── finite_differences.cpp
│   │   │   ├── finite_differences.hpp
│   │   │   ├── function.cpp
│   │   │   ├── function.hpp
│   │   │   ├── function_internal.cpp
│   │   │   ├── function_internal.hpp
│   │   │   ├── generic_expression.hpp
│   │   │   ├── generic_matrix.cpp
│   │   │   ├── generic_matrix.hpp
│   │   │   ├── generic_type.cpp
│   │   │   ├── generic_type.hpp
│   │   │   ├── generic_type_internal.hpp
│   │   │   ├── getnonzeros.cpp
│   │   │   ├── getnonzeros.hpp
│   │   │   ├── getnonzeros_param.cpp
│   │   │   ├── getnonzeros_param.hpp
│   │   │   ├── global_options.cpp
│   │   │   ├── global_options.hpp
│   │   │   ├── im.hpp
│   │   │   ├── im_fwd.hpp
│   │   │   ├── im_instantiator.cpp
│   │   │   ├── importer.cpp
│   │   │   ├── importer.hpp
│   │   │   ├── importer_internal.cpp
│   │   │   ├── importer_internal.hpp
│   │   │   ├── integration_tools.cpp
│   │   │   ├── integration_tools.hpp
│   │   │   ├── integrator.cpp
│   │   │   ├── integrator.hpp
│   │   │   ├── integrator_impl.hpp
│   │   │   ├── interpolant.cpp
│   │   │   ├── interpolant.hpp
│   │   │   ├── interpolant_impl.hpp
│   │   │   ├── inverse.cpp
│   │   │   ├── inverse.hpp
│   │   │   ├── io_instruction.cpp
│   │   │   ├── io_instruction.hpp
│   │   │   ├── jit_function.cpp
│   │   │   ├── jit_function.hpp
│   │   │   ├── linsol.cpp
│   │   │   ├── linsol.hpp
│   │   │   ├── linsol_internal.cpp
│   │   │   ├── linsol_internal.hpp
│   │   │   ├── map.cpp
│   │   │   ├── map.hpp
│   │   │   ├── mapsum.cpp
│   │   │   ├── mapsum.hpp
│   │   │   ├── matrix_decl.hpp
│   │   │   ├── matrix_fwd.hpp
│   │   │   ├── matrix_impl.hpp
│   │   │   ├── mmin.cpp
│   │   │   ├── mmin.hpp
│   │   │   ├── monitor.cpp
│   │   │   ├── monitor.hpp
│   │   │   ├── multiple_output.cpp
│   │   │   ├── multiple_output.hpp
│   │   │   ├── multiplication.cpp
│   │   │   ├── multiplication.hpp
│   │   │   ├── mx.cpp
│   │   │   ├── mx.hpp
│   │   │   ├── mx_function.cpp
│   │   │   ├── mx_function.hpp
│   │   │   ├── mx_node.cpp
│   │   │   ├── mx_node.hpp
│   │   │   ├── nlp_builder.cpp
│   │   │   ├── nlp_builder.hpp
│   │   │   ├── nlp_tools.cpp
│   │   │   ├── nlp_tools.hpp
│   │   │   ├── nlpsol.cpp
│   │   │   ├── nlpsol.hpp
│   │   │   ├── nlpsol_impl.hpp
│   │   │   ├── nonzeros.hpp
│   │   │   ├── norm.cpp
│   │   │   ├── norm.hpp
│   │   │   ├── options.cpp
│   │   │   ├── options.hpp
│   │   │   ├── optistack.cpp
│   │   │   ├── optistack.hpp
│   │   │   ├── optistack_internal.cpp
│   │   │   ├── optistack_internal.hpp
│   │   │   ├── oracle_function.cpp
│   │   │   ├── oracle_function.hpp
│   │   │   ├── plugin_interface.hpp
│   │   │   ├── polynomial.cpp
│   │   │   ├── polynomial.hpp
│   │   │   ├── printable.hpp
│   │   │   ├── project.cpp
│   │   │   ├── project.hpp
│   │   │   ├── rank1.cpp
│   │   │   ├── rank1.hpp
│   │   │   ├── repmat.cpp
│   │   │   ├── repmat.hpp
│   │   │   ├── reshape.cpp
│   │   │   ├── reshape.hpp
│   │   │   ├── rootfinder.cpp
│   │   │   ├── rootfinder.hpp
│   │   │   ├── rootfinder_impl.hpp
│   │   │   ├── runtime
│   │   │   │   ├── casadi_axpy.hpp
│   │   │   │   ├── casadi_bfgs.hpp
│   │   │   │   ├── casadi_bilin.hpp
│   │   │   │   ├── casadi_bound_consistency.hpp
│   │   │   │   ├── casadi_cache.hpp
│   │   │   │   ├── casadi_clear.hpp
│   │   │   │   ├── casadi_convexify.hpp
│   │   │   │   ├── casadi_copy.hpp
│   │   │   │   ├── casadi_cvx.hpp
│   │   │   │   ├── casadi_de_boor.hpp
│   │   │   │   ├── casadi_densify.hpp
│   │   │   │   ├── casadi_dot.hpp
│   │   │   │   ├── casadi_file_slurp.hpp
│   │   │   │   ├── casadi_fill.hpp
│   │   │   │   ├── casadi_finite_diff.hpp
│   │   │   │   ├── casadi_flip.hpp
│   │   │   │   ├── casadi_getu.hpp
│   │   │   │   ├── casadi_iamax.hpp
│   │   │   │   ├── casadi_interpn.hpp
│   │   │   │   ├── casadi_interpn_grad.hpp
│   │   │   │   ├── casadi_interpn_interpolate.hpp
│   │   │   │   ├── casadi_interpn_weights.hpp
│   │   │   │   ├── casadi_kron.hpp
│   │   │   │   ├── casadi_ldl.hpp
│   │   │   │   ├── casadi_low.hpp
│   │   │   │   ├── casadi_lsqr.hpp
│   │   │   │   ├── casadi_max_viol.hpp
│   │   │   │   ├── casadi_minmax.hpp
│   │   │   │   ├── casadi_mtimes.hpp
│   │   │   │   ├── casadi_mv.hpp
│   │   │   │   ├── casadi_mv_dense.hpp
│   │   │   │   ├── casadi_nd_boor_dual_eval.hpp
│   │   │   │   ├── casadi_nd_boor_eval.hpp
│   │   │   │   ├── casadi_newton.hpp
│   │   │   │   ├── casadi_nlp.hpp
│   │   │   │   ├── casadi_norm_1.hpp
│   │   │   │   ├── casadi_norm_2.hpp
│   │   │   │   ├── casadi_norm_inf.hpp
│   │   │   │   ├── casadi_norm_inf_mul.hpp
│   │   │   │   ├── casadi_polyval.hpp
│   │   │   │   ├── casadi_project.hpp
│   │   │   │   ├── casadi_qp.hpp
│   │   │   │   ├── casadi_qr.hpp
│   │   │   │   ├── casadi_rank1.hpp
│   │   │   │   ├── casadi_regularize.hpp
│   │   │   │   ├── casadi_runtime.hpp
│   │   │   │   ├── casadi_scal.hpp
│   │   │   │   ├── casadi_sparsify.hpp
│   │   │   │   ├── casadi_sqpmethod.hpp
│   │   │   │   ├── casadi_sum_viol.hpp
│   │   │   │   ├── casadi_swap.hpp
│   │   │   │   ├── casadi_trans.hpp
│   │   │   │   ├── casadi_tri_project.hpp
│   │   │   │   ├── casadi_vfmax.hpp
│   │   │   │   ├── casadi_vfmin.hpp
│   │   │   │   └── shared.hpp
│   │   │   ├── serializer.cpp
│   │   │   ├── serializer.hpp
│   │   │   ├── serializing_stream.cpp
│   │   │   ├── serializing_stream.hpp
│   │   │   ├── setnonzeros.hpp
│   │   │   ├── setnonzeros_impl.hpp
│   │   │   ├── setnonzeros_param.hpp
│   │   │   ├── setnonzeros_param_impl.hpp
│   │   │   ├── shared_object.cpp
│   │   │   ├── shared_object.hpp
│   │   │   ├── shared_object_internal.cpp
│   │   │   ├── shared_object_internal.hpp
│   │   │   ├── slice.cpp
│   │   │   ├── slice.hpp
│   │   │   ├── solve.hpp
│   │   │   ├── solve_impl.hpp
│   │   │   ├── sparse_storage.hpp
│   │   │   ├── sparse_storage_impl.hpp
│   │   │   ├── sparsity.cpp
│   │   │   ├── sparsity.hpp
│   │   │   ├── sparsity_interface.hpp
│   │   │   ├── sparsity_internal.cpp
│   │   │   ├── sparsity_internal.hpp
│   │   │   ├── split.cpp
│   │   │   ├── split.hpp
│   │   │   ├── subassign.cpp
│   │   │   ├── subassign.hpp
│   │   │   ├── submatrix.hpp
│   │   │   ├── subref.cpp
│   │   │   ├── subref.hpp
│   │   │   ├── switch.cpp
│   │   │   ├── switch.hpp
│   │   │   ├── sx.hpp
│   │   │   ├── sx_elem.cpp
│   │   │   ├── sx_elem.hpp
│   │   │   ├── sx_function.cpp
│   │   │   ├── sx_function.hpp
│   │   │   ├── sx_fwd.hpp
│   │   │   ├── sx_instantiator.cpp
│   │   │   ├── sx_node.cpp
│   │   │   ├── sx_node.hpp
│   │   │   ├── symbolic_mx.cpp
│   │   │   ├── symbolic_mx.hpp
│   │   │   ├── symbolic_sx.hpp
│   │   │   ├── timing.cpp
│   │   │   ├── timing.hpp
│   │   │   ├── transpose.cpp
│   │   │   ├── transpose.hpp
│   │   │   ├── unary_mx.cpp
│   │   │   ├── unary_mx.hpp
│   │   │   ├── unary_sx.hpp
│   │   │   ├── variable.cpp
│   │   │   ├── variable.hpp
│   │   │   ├── x_function.hpp
│   │   │   ├── xml_file.cpp
│   │   │   ├── xml_file.hpp
│   │   │   ├── xml_file_internal.cpp
│   │   │   ├── xml_file_internal.hpp
│   │   │   ├── xml_node.cpp
│   │   │   └── xml_node.hpp
│   │   ├── doc.i
│   │   ├── doc_merged.i
│   │   ├── mem.h
│   │   ├── valgrind-casadi.supp
│   │   └── valgrind-python.supp
│   ├── osqp
│   │   ├── auxil.h
│   │   ├── constants.h
│   │   ├── cs.h
│   │   ├── ctrlc.h
│   │   ├── glob_opts.h
│   │   ├── kkt.h
│   │   ├── lin_alg.h
│   │   ├── lin_sys.h
│   │   ├── osqp.h
│   │   ├── osqp_configure.h
│   │   ├── polish.h
│   │   ├── proj.h
│   │   ├── scaling.h
│   │   ├── types.h
│   │   └── util.h
│   └── qdldl
│       ├── qdldl.h
│       └── qdldl_types.h
├── lib
│   └── cmake
│       ├── osqp
│       │   ├── osqp-config.cmake
│       │   ├── osqp-targets-release.cmake
│       │   └── osqp-targets.cmake
│       └── qdldl
│           ├── qdldl-config.cmake
│           ├── qdldl-targets-release.cmake
│           └── qdldl-targets.cmake
├── libcasadi.so
├── libcasadi_conic_cbc.so
├── libcasadi_conic_clp.so
├── libcasadi_conic_cplex.so
├── libcasadi_conic_gurobi.so
├── libcasadi_conic_nlpsol.so
├── libcasadi_conic_osqp.so
├── libcasadi_conic_qpoases.so
├── libcasadi_conic_qrqp.so
├── libcasadi_conic_superscs.so
├── libcasadi_dple_slicot.so
├── libcasadi_expm_slicot.so
├── libcasadi_importer_clang.so
├── libcasadi_importer_shell.so
├── libcasadi_integrator_collocation.so
├── libcasadi_integrator_cvodes.so
├── libcasadi_integrator_idas.so
├── libcasadi_integrator_rk.so
├── libcasadi_interpolant_bspline.so
├── libcasadi_interpolant_linear.so
├── libcasadi_linsol_csparse.so
├── libcasadi_linsol_csparsecholesky.so
├── libcasadi_linsol_lapacklu.so
├── libcasadi_linsol_lapackqr.so
├── libcasadi_linsol_ldl.so
├── libcasadi_linsol_lsqr.so
├── libcasadi_linsol_ma27.so
├── libcasadi_linsol_qr.so
├── libcasadi_linsol_symbolicqr.so
├── libcasadi_linsol_tridiag.so
├── libcasadi_nlpsol_ampl.so
├── libcasadi_nlpsol_blocksqp.so
├── libcasadi_nlpsol_bonmin.so
├── libcasadi_nlpsol_ipopt.so
├── libcasadi_nlpsol_knitro.so
├── libcasadi_nlpsol_qrsqp.so
├── libcasadi_nlpsol_scpgen.so
├── libcasadi_nlpsol_sqpmethod.so
├── libcasadi_nlpsol_worhp.so
├── libcasadi_rootfinder_fast_newton.so
├── libcasadi_rootfinder_kinsol.so
├── libcasadi_rootfinder_newton.so
├── libcasadi_rootfinder_nlpsol.so
├── libcasadi_sundials_common.so
├── libcasadi_xmlfile_tinyxml.so
├── libgfortran-ed201abd.so.3.0.0
├── libosqp.a
├── libosqp.so
├── libqdldl.a
├── libqdldl.so
├── pkgconfig
│   └── casadi.pc
└── tools
    ├── __init__.py
    ├── __pycache__
    │   ├── __init__.cpython-38.pyc
    │   ├── bounds.cpython-38.pyc
    │   ├── in_out.cpython-38.pyc
    │   └── structure3.cpython-38.pyc
    ├── bounds.py
    ├── graph
    │   ├── __init__.py
    │   ├── __pycache__
    │   │   ├── __init__.cpython-38.pyc
    │   │   └── graph.cpython-38.pyc
    │   └── graph.py
    ├── in_out.py
    ├── structure.py
    └── structure3.py

setup.py Outdated
ext_modules=[
CMakeExtension(name='InstallAllTargets',
install_prefix="bipedal_locomotion_framework",
cmake_depends_on=["idyntree", "pybind11"],
Copy link
Member Author

@diegoferigo diegoferigo May 5, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should check if the wheel tree of casadi is usable for us (i.e. C++11 ABI and all the components we need). Then, we can add casadi to the cmake_depends_on option.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems fine, even though the vendored osqp included in the casadi wheel has malformed CMake import files (they reference the Travis CI setup). This is not a big deal since in any case for blf we install osqp from sources in the debian container in CI. The only caveat is that we have to specify in setup.py the osqp_DIR to load the system osqp otherwise by default the casadi osqp is detected by CMake.

setup.py Outdated Show resolved Hide resolved
setup.py Outdated Show resolved Hide resolved
@diegoferigo
Copy link
Member Author

I reserved the bipedal-locomotion-framework name in Test PyPI. You can find the temporary sdist package in https://test.pypi.org/project/bipedal-locomotion-framework.

@diegoferigo
Copy link
Member Author

The need of having yarp installed in the system could be solved by robotology/yarp#2573.

@diegoferigo diegoferigo force-pushed the feature/setup.py branch 13 times, most recently from 794e6a4 to a249b06 Compare June 28, 2021 15:59
@diegoferigo diegoferigo self-assigned this Jun 28, 2021
@diegoferigo diegoferigo force-pushed the feature/setup.py branch 8 times, most recently from 7524f82 to 0c55552 Compare June 29, 2021 10:36
@diegoferigo
Copy link
Member Author

diegoferigo commented Jun 29, 2021

Updates:

Let's keep pypa/manylinux#1012 monitored since it might provide a fix to the compilation issues.

Clang 7 error
2021-06-29T10:51:04.7801436Z   [1/104] Building CXX object src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/LinearTimeInvariantSystem.cpp.o
2021-06-29T10:51:04.7804488Z   FAILED: src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/LinearTimeInvariantSystem.cpp.o
2021-06-29T10:51:04.7813384Z   /usr/bin/clang++-7 -DContinuousDynamicalSystem_EXPORTS -D_USE_MATH_DEFINES -I../../src/ContinuousDynamicalSystem/include -I../../src/ParametersHandler/include -I../../src/GenericContainer/include -I../../src/TextLogging/include -I../../src/ContactModels/include -I../../src/Math/include -I../../src/Conversions/include -isystem /tmp/pip-build-env-s200y7k5/overlay/lib/python3.7/site-packages/idyntree/include -isystem /usr/include/eigen3 -isystem /tmp/pip-build-env-s200y7k5/overlay/lib/python3.7/site-packages/manifpy/include -O3 -DNDEBUG -fPIC -ftemplate-depth=512 -std=c++17 -MD -MT src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/LinearTimeInvariantSystem.cpp.o -MF src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/LinearTimeInvariantSystem.cpp.o.d -o src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/LinearTimeInvariantSystem.cpp.o -c ../../src/ContinuousDynamicalSystem/src/LinearTimeInvariantSystem.cpp
2021-06-29T10:51:04.7820622Z   In file included from ../../src/ContinuousDynamicalSystem/src/LinearTimeInvariantSystem.cpp:8:
2021-06-29T10:51:04.7823121Z   In file included from ../../src/ContinuousDynamicalSystem/include/BipedalLocomotion/ContinuousDynamicalSystem/LinearTimeInvariantSystem.h:14:
2021-06-29T10:51:04.7824850Z   In file included from ../../src/ContinuousDynamicalSystem/include/BipedalLocomotion/ContinuousDynamicalSystem/DynamicalSystem.h:15:
2021-06-29T10:51:04.7827562Z   ../../src/GenericContainer/include/BipedalLocomotion/GenericContainer/TemplateHelpers.h:12:10: fatal error: 'string_view' file not found
2021-06-29T10:51:04.7828645Z   #include <string_view>
2021-06-29T10:51:04.7829139Z            ^~~~~~~~~~~~~
2021-06-29T10:51:04.7829496Z   1 error generated.
2021-06-29T10:51:04.8247645Z   [2/104] Building CXX object src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseSystemKinematics.cpp.o
2021-06-29T10:51:04.8252649Z   FAILED: src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseSystemKinematics.cpp.o
2021-06-29T10:51:04.8266290Z   /usr/bin/clang++-7 -DContinuousDynamicalSystem_EXPORTS -D_USE_MATH_DEFINES -I../../src/ContinuousDynamicalSystem/include -I../../src/ParametersHandler/include -I../../src/GenericContainer/include -I../../src/TextLogging/include -I../../src/ContactModels/include -I../../src/Math/include -I../../src/Conversions/include -isystem /tmp/pip-build-env-s200y7k5/overlay/lib/python3.7/site-packages/idyntree/include -isystem /usr/include/eigen3 -isystem /tmp/pip-build-env-s200y7k5/overlay/lib/python3.7/site-packages/manifpy/include -O3 -DNDEBUG -fPIC -ftemplate-depth=512 -std=c++17 -MD -MT src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseSystemKinematics.cpp.o -MF src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseSystemKinematics.cpp.o.d -o src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseSystemKinematics.cpp.o -c ../../src/ContinuousDynamicalSystem/src/FloatingBaseSystemKinematics.cpp
2021-06-29T10:51:04.8278355Z   In file included from ../../src/ContinuousDynamicalSystem/src/FloatingBaseSystemKinematics.cpp:8:
2021-06-29T10:51:04.8287357Z   In file included from ../../src/ContinuousDynamicalSystem/include/BipedalLocomotion/ContinuousDynamicalSystem/FloatingBaseSystemKinematics.h:14:
2021-06-29T10:51:04.8294401Z   In file included from ../../src/ContinuousDynamicalSystem/include/BipedalLocomotion/ContinuousDynamicalSystem/DynamicalSystem.h:15:
2021-06-29T10:51:04.8301613Z   ../../src/GenericContainer/include/BipedalLocomotion/GenericContainer/TemplateHelpers.h:12:10: fatal error: 'string_view' file not found
2021-06-29T10:51:04.8307923Z   #include <string_view>
2021-06-29T10:51:04.8314286Z            ^~~~~~~~~~~~~
2021-06-29T10:51:04.8319604Z   1 error generated.
2021-06-29T10:51:05.7266175Z   [3/104] Building CXX object src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseDynamicsWithCompliantContacts.cpp.o
2021-06-29T10:51:05.7269187Z   FAILED: src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseDynamicsWithCompliantContacts.cpp.o
2021-06-29T10:51:05.7278677Z   /usr/bin/clang++-7 -DContinuousDynamicalSystem_EXPORTS -D_USE_MATH_DEFINES -I../../src/ContinuousDynamicalSystem/include -I../../src/ParametersHandler/include -I../../src/GenericContainer/include -I../../src/TextLogging/include -I../../src/ContactModels/include -I../../src/Math/include -I../../src/Conversions/include -isystem /tmp/pip-build-env-s200y7k5/overlay/lib/python3.7/site-packages/idyntree/include -isystem /usr/include/eigen3 -isystem /tmp/pip-build-env-s200y7k5/overlay/lib/python3.7/site-packages/manifpy/include -O3 -DNDEBUG -fPIC -ftemplate-depth=512 -std=c++17 -MD -MT src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseDynamicsWithCompliantContacts.cpp.o -MF src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseDynamicsWithCompliantContacts.cpp.o.d -o src/ContinuousDynamicalSystem/CMakeFiles/ContinuousDynamicalSystem.dir/src/FloatingBaseDynamicsWithCompliantContacts.cpp.o -c ../../src/ContinuousDynamicalSystem/src/FloatingBaseDynamicsWithCompliantContacts.cpp
2021-06-29T10:51:05.7285901Z   In file included from ../../src/ContinuousDynamicalSystem/src/FloatingBaseDynamicsWithCompliantContacts.cpp:12:
2021-06-29T10:51:05.7288636Z   In file included from ../../src/ContinuousDynamicalSystem/include/BipedalLocomotion/ContinuousDynamicalSystem/FloatingBaseDynamicsWithCompliantContacts.h:14:
2021-06-29T10:51:05.7290840Z   In file included from ../../src/ContinuousDynamicalSystem/include/BipedalLocomotion/ContinuousDynamicalSystem/CompliantContactWrench.h:13:
2021-06-29T10:51:05.7292587Z   ../../src/ContactModels/include/BipedalLocomotion/ContactModels/ContactModel.h:11:10: fatal error: 'any' file not found
2021-06-29T10:51:05.7293321Z   #include <any>
2021-06-29T10:51:05.7293642Z            ^~~~~
2021-06-29T10:51:05.7309722Z   1 error generated.

@diegoferigo
Copy link
Member Author

Building against yarp 3.5.0 downloaded from PyPI fails with the following error:

[9/111] Building CXX object src/YarpUtilities/CMakeFiles/YarpUtilities.dir/src/RosPublisher.cpp.o
FAILED: src/YarpUtilities/CMakeFiles/YarpUtilities.dir/src/RosPublisher.cpp.o 
/usr/share/miniconda/envs/ci/bin/x86_64-conda-linux-gnu-c++ -DFMT_SHARED -DSPDLOG_COMPILED_LIB -DSPDLOG_SHARED_LIB -DYarpUtilities_EXPORTS -D_USE_MATH_DEFINES -I/home/runner/work/bipedal-locomotion-framework/bipedal-locomotion-framework/src/YarpUtilities/include -I/home/runner/work/bipedal-locomotion-framework/bipedal-locomotion-framework/src/GenericContainer/include -I/home/runner/work/bipedal-locomotion-framework/bipedal-locomotion-framework/src/ParametersHandler/include -I/home/runner/work/bipedal-locomotion-framework/bipedal-locomotion-framework/src/TextLogging/include -isystem /tmp/build-env-5xwktfy_/lib/python3.8/site-packages/yarp/include -isystem /tmp/build-env-5xwktfy_/lib/python3.8/site-packages/idyntree/include -isystem /usr/share/miniconda/envs/ci/include/eigen3 -fvisibility-inlines-hidden -std=c++17 -fmessage-length=0 -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -ffunction-sections -pipe -isystem /usr/share/miniconda/envs/ci/include -O3 -DNDEBUG -fPIC -MD -MT src/YarpUtilities/CMakeFiles/YarpUtilities.dir/src/RosPublisher.cpp.o -MF src/YarpUtilities/CMakeFiles/YarpUtilities.dir/src/RosPublisher.cpp.o.d -o src/YarpUtilities/CMakeFiles/YarpUtilities.dir/src/RosPublisher.cpp.o -c /home/runner/work/bipedal-locomotion-framework/bipedal-locomotion-framework/src/YarpUtilities/src/RosPublisher.cpp
/home/runner/work/bipedal-locomotion-framework/bipedal-locomotion-framework/src/YarpUtilities/src/RosPublisher.cpp:15:10: fatal error: yarp/dev/IFrameTransform.h: No such file or directory
   15 | #include <yarp/dev/IFrameTransform.h>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

@diegoferigo
Copy link
Member Author

This PR needs a new 3.5.1 YARP release before being merged. @S-Dafarra @GiulioRomualdi regardless, it is ready for review.

@diegoferigo diegoferigo force-pushed the feature/setup.py branch 3 times, most recently from 40ba000 to d70f529 Compare September 10, 2021 13:17
@diegoferigo
Copy link
Member Author

diegoferigo commented Sep 13, 2021

The updated status is the following. The CI pipeline is able to build the blf Python package from the sdist, but running the tests fails because the official CasADi wheel does not offer static targets. Therefore, the blf wheel fails to find its runtime library.

The usual workaround is either requiring to find casadi already installed in the system, or complete the pipeline with CD to PyPI that vendors inside the wheel with auditwheel the necessary runtime dependencies.

For the time being, I think that the first requirement is easier. Therefore, the updated list of build / runtime deps is:

  • spdlog
  • eigen
  • casadi
  • osqp
  • qhull
  • nlohmann_json

@diegoferigo
Copy link
Member Author

Quick update after a while. Manylinux 2.24 has been dropped due to EOL (and due to the many problems with old compilers). Now it's prefereable moving towards 2.28, that would likely solve the stale status I've reached 1.5y ago.

Further infos here:

@GiulioRomualdi
Copy link
Member

Hi @diegoferigo are you planning to work on this? If no I can close it and you can reopen it again in case you need it

@diegoferigo
Copy link
Member Author

I don't plan to work on this in the short term, so you can close it for the time being. If anyone is interested in finalizing PyPI support, we did a first attempt to use manylinux 2.28 in robotology/idyntree#1068.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants