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 recipe for icub-main packages #27692

Merged
merged 1 commit into from
Sep 29, 2024

Conversation

traversaro
Copy link
Contributor

@traversaro traversaro commented Sep 25, 2024

icub-main is a set of C++ libraries and executables that constitute the software used to control the iCub and ergoCub humanoid robots.

The proposed recipe adds two different packages:

  • libicub-main: This is the package that is meant to be used if the package is consumed as a C/C++ library, and linked to a downstream project. To do so, the package contains a run_exports section. This package name contains the lib prefix as requested in Add recipe for libmatio-cpp #19764 (review) for C/C++ libraries.
  • icub-main-python: This is the package that contains Python bindings for the C++ libraries contained in libicub-main, wrapped via SWIG.
  • icub-main: This is the package is an empty meta-package that depends on libicub-main and icub-main-python and is used to install all the outputs generated by the icub-main repo.

The feedstock is named icub-main to match the repo name and the main meta-packages output to install all the outputs.

As the testing revealed some failures in python bindings on osx, for now the icub-main-python and icub-main outputs are disabled on osx. The idea is to investigate and fix (and thus enable the outputs) in the feedstock.

Checklist

  • Title of this PR is meaningful: e.g. "Adding my_nifty_package", not "updated meta.yaml".
  • License file is packaged (see here for an example).
  • Source is from official source.
  • Package does not vendor other packages. (If a package uses the source of another package, they should be separate packages or the licenses of all packages need to be packaged).
  • If static libraries are linked in, the license of the static library is packaged.
  • Package does not ship static libraries. If static libraries are needed, follow CFEP-18.
  • Build number is 0.
  • A tarball (url) rather than a repo (e.g. git_url) is used in your recipe (see here for more details).
  • GitHub users listed in the maintainer section have posted a comment confirming they are willing to be listed there.
  • When in trouble, please check our knowledge base documentation before pinging a team.

Copy link
Contributor

Hi! This is the staged-recipes linter and your PR looks excellent! 🚀

Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/icub-main/meta.yaml) and found it was in an excellent condition.

@traversaro
Copy link
Contributor Author

There are a bunch of overlinking errors:

2024-09-25T13:58:05.8804644Z   ERROR (libicub-main,lib/liblearningMachine.so): Needed DSO lib/libopenblas.so.0 found in ['conda-forge/linux-64::libopenblas==0.3.27=pthreads_hac2b453_1']
2024-09-25T13:58:05.8808824Z   ERROR (libicub-main,lib/liblearningMachine.so): .. but ['conda-forge/linux-64::libopenblas==0.3.27=pthreads_hac2b453_1'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)
2024-09-25T13:58:06.6422630Z   ERROR (libicub-main,bin/stereoCalib): Needed DSO lib/libopenblas.so.0 found in ['conda-forge/linux-64::libopenblas==0.3.27=pthreads_hac2b453_1']
2024-09-25T13:58:06.6429517Z   ERROR (libicub-main,bin/stereoCalib): .. but ['conda-forge/linux-64::libopenblas==0.3.27=pthreads_hac2b453_1'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)
2024-09-25T13:58:07.8729680Z   ERROR (libicub-main,bin/iCubGui): Needed DSO lib/libGLU.so.1 found in ['conda-forge/linux-64::libglu==9.0.0=ha6d2627_1004']
2024-09-25T13:58:07.8732901Z   ERROR (libicub-main,bin/iCubGui): .. but ['conda-forge/linux-64::libglu==9.0.0=ha6d2627_1004'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)
2024-09-25T13:58:05.8804644Z   ERROR (libicub-main,lib/liblearningMachine.so): Needed DSO lib/libopenblas.so.0 found in ['conda-forge/linux-64::libopenblas==0.3.27=pthreads_hac2b453_1']
2024-09-25T13:58:05.8808824Z   ERROR (libicub-main,lib/liblearningMachine.so): .. but ['conda-forge/linux-64::libopenblas==0.3.27=pthreads_hac2b453_1'] not in reqs/run, (i.e. it is overlinking) (likely) or a missing dependency (less likely)

GLU is probably a problem of missing run_exports or similar, while the openblas makes me wonder: why it is linking openblas instead of the generic blas?

@traversaro
Copy link
Contributor Author

while the openblas makes me wonder: why it is linking openblas instead of the generic blas?

This should be solved in traversaro@f92eabf . Basically icub-main links the libgslcblas.so, that is a symbolic link to libcblas.so. However, if we do not list explicitly the libcblas dependency, either openblas (unix) or mkl (windows) libcblas gets installed, that has specific soname instead of the generic libcblas.so.0 soname. So the solution is just to add the libcblas dependency so that the netlib libcblas with the correct soname gets installed.

@traversaro traversaro force-pushed the add-icub-main-only branch 3 times, most recently from f39ab13 to 950b830 Compare September 25, 2024 17:59
@traversaro
Copy link
Contributor Author

Interesting, on osx import icub segfaults:

import: 'icub'
/Users/runner/Miniforge3/conda-bld/icub-main-split_1727295997300/test_tmp/conda_test_runner.sh: line 3: 25123 Segmentation fault: 11  "/Users/runner/Miniforge3/conda-bld/icub-main-split_1727295997300/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/bin/python" -s "/Users/runner/Miniforge3/conda-bld/icub-main-split_1727295997300/test_tmp/run_test.py"

@traversaro
Copy link
Contributor Author

Interesting, on osx import icub segfaults:

import: 'icub'
/Users/runner/Miniforge3/conda-bld/icub-main-split_1727295997300/test_tmp/conda_test_runner.sh: line 3: 25123 Segmentation fault: 11  "/Users/runner/Miniforge3/conda-bld/icub-main-split_1727295997300/_test_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehol/bin/python" -s "/Users/runner/Miniforge3/conda-bld/icub-main-split_1727295997300/test_tmp/run_test.py"

This need to be investigated, and I plan to do so, but it is not essential for review of the PR. I will skip this on osx for now.

Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I Failed to even lint the recipe, probably because of a conda-smithy bug 😢. This likely indicates a problem in your meta.yaml, though. To get a traceback to help figure out what's going on, install conda-smithy and run conda smithy recipe-lint --conda-forge . from the recipe directory.

Copy link
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipes/icub-main/meta.yaml) and found it was in an excellent condition.

@traversaro
Copy link
Contributor Author

@conda-forge/help-c-cpp @conda-forge/staged-recipes the PR is ready for review, thanks!

Copy link
Contributor

To help direct your pull request to the best reviewers, please mention a topic-specifc team if your recipe matches any of the following: conda-forge/help-c-cpp, conda-forge/help-cdts, conda-forge/help-go, conda-forge/help-java, conda-forge/help-julia, conda-forge/help-nodejs, conda-forge/help-perl, conda-forge/help-python, conda-forge/help-python-c, conda-forge/help-r, conda-forge/help-ruby,or conda-forge/help-rust. Thanks!

Copy link
Member

@xhochy xhochy left a comment

Choose a reason for hiding this comment

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

One comment, possibly only for my personal understanding.

recipes/icub-main/build_py.sh Outdated Show resolved Hide resolved
@xhochy xhochy merged commit 8fca42d into conda-forge:main Sep 29, 2024
6 checks passed
@traversaro traversaro deleted the add-icub-main-only branch September 29, 2024 18:49
@traversaro
Copy link
Contributor Author

Thanks @xhochy !

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

Successfully merging this pull request may close these issues.

2 participants