Closed GiulioRomualdi closed 3 years ago
Good idea! The more conda packages we move from the robotology-superbuild to conda-forge, the easier is to mantain the packages that it remains (for example, in https://github.com/robotology/robotology-superbuild/pull/749 the conda package generation pipeline take 4 hours, making debug not obvious).
Things to do:
run_exports
details (see https://github.com/conda-forge/open62541-feedstock/blob/a2802d62baa05b191fe469abb5df5311cfed64af/recipe/meta.yaml#L15). If we think we may break ABI at each new patch release, we should just put pin_subpackage(name, max_pin='x.x.x') }}
OsqpEigen_CONDA_PKG_CONDA_FORGE_OVERRIDE
option in the BuildOsqpEigen.cmake
file in the superbuild, as explained in https://github.com/robotology/robotology-superbuild/blob/fc1cd88248069eb637f567357497145681b3fd68/doc/developers-faqs.md#how-to-ensure-that-binary-packages-are-correctly-generated-for-a-new-package .Since
osqp
(please check here) is already provided inconda-forge
andosqp-eigen
is not only used by therobotology
community, I think it makes sense to move the receipt inconda-forge
.
One small comment: osqp
is the Python package, the C package is libosqp
(https://github.com/conda-forge/libosqp-feedstock).
- Before submitting the recipe, we need to decide on an ABI policy for osqp-eigen, as this will specify the
run_exports
details (see https://github.com/conda-forge/open62541-feedstock/blob/a2802d62baa05b191fe469abb5df5311cfed64af/recipe/meta.yaml#L15). If we think we may break ABI at each new patch release, we should just putpin_subpackage(name, max_pin='x.x.x') }}
I just checked the semantic versioning specification and there seems no mention on ABI. Here they suggest changing the major version even if the ABI are broken.
So in conclusion we can release 1.0.0
and apply the following rule
I would also add a CI that varifies that ABI are preserved (e.g https://lvc.github.io/abi-compliance-checker/)
Off-topic: Please click here if you want to know more about abi breaking changes.
Apparently moving this to conda-forge may be a good idea indeed, as osqp-eigen
is start being used as a dependency in project outside of robotology that are being packaged in conda as well, see https://github.com/ros-industrial-consortium/tesseract/issues/419 .
I would also add a CI that varifies that ABI are preserved (e.g https://lvc.github.io/abi-compliance-checker/)
Note that for now for simplicify we can just start to just assume that ABI is broken at each patch release (as it happens in many libraries even widely used in robotics, see for example OpenCV https://github.com/conda-forge/opencv-feedstock/blob/246ffa4db0ca7348e9f3e7c20994aacedcdb8ba1/recipe/meta.yaml#L51 or boost https://github.com/conda-forge/pcl-feedstock/blob/master/recipe/meta.yaml#L44 ). Don't get me wrong, ABI stability is quite convenient especially if osqp-eigen starts get used in a lot of projects to avoid frequency ABI migrations (see https://conda-forge.org/blog/posts/2019-12-06-cfep09/ and https://github.com/conda-forge/cfep/blob/master/cfep-09.md), but I don't think this should stop from packaging osqp-eigen in conda-forge. On that, for me it is quite easy to propose a new recipe in staged-recipes, if you want i can go on and add you as mantainer, otherwise if you prefer to do it yourself please do when you prefer.
Associated issue https://github.com/conda-forge/staged-recipes/issues/15080
Related PR: conda-forge/staged-recipes#15309
osqp-eigen can be now easily installed using coda
Since
osqp
(please check here) is already provided inconda-forge
andosqp-eigen
is not only used by therobotology
community, I think it makes sense to move the receipt inconda-forge
.cc @traversaro