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

CI: Add conda-forge based builds on Linux #484

Merged
merged 7 commits into from
Oct 12, 2020
Merged

CI: Add conda-forge based builds on Linux #484

merged 7 commits into from
Oct 12, 2020

Conversation

traversaro
Copy link
Member

@traversaro traversaro commented Oct 11, 2020

See #477 for more details. For now, only Linux is added, because some dependencies are still missing on macOS (freeglut) and Windows (ipopt).

In a nutshell conda is a package manager (originally for Python, but now quite language agnostic) that works on Linux, macOS and Windows. conda-forge is a channel for the conda package manager that provides many dependency, in particular all the one that are required by the robotology-superbuild .

The use of conda is complementary to the compilation modes that we already use and are not substituted by conda, but its advantages are:

  • Updated dependencies: conda-forge tipically has relatively recent version of the dependencies, so if you want to use a recent vtk or pcl on an old distro such as Ubuntu 16.04, you can. This permits us to support older distributions even when the packages that install via apt are relatively old.
  • No need for root permissions: all the software installed by conda is installed and used in a user directory, so even if you are on a system in which you do not have root access (such as a shared workstation) you can still install all you required dependencies
  • Use of binaries: conda distributes its packages as binaries, so even to download heavy dependencies such as OpenCV, PCL, Qt and Gazebo on Windows it just takes a few minutes, as opposed to hours necessary to compile them when using vcpkg. This is also useful when producing Docker images that require a recent version of PCL or VTK: installing them via conda takes a few seconds, and this would cut the time necessary to regenerate Docker images.
  • Reproducible enviroments: conda has built in support for installing exactly the same version of the packages you were using in the past, up to the patch version. This is quite important for reproducibility in scientific research. See https://www.nature.com/articles/d41586-020-02462-7 for a Nature article on the importance of reproducibility in scientific research.
  • On macOS and Windows, conda is also the package manager for which it is more easily possible to obtain working binaries of ROS1 and in the future of ROS2, thanks to the work of the RoboStack project

This PR does not add a build on Windows as ipopt binaries are still missing on that platform (see conda-forge/ipopt-feedstock#1), and on macOS as freeglut binaries are missing (conda-forge/freeglut-feedstock#24). The first practical use of this conda-based CI builds (once mac is added) is to quickly understand if any regression in the regular homebrew-based macOS CI builds is due to software regressions in the robotology-superbuild software, or in some enviroment failures (that is what happens most of the time).

See #477 for more details.
 
In a nutshell conda is a package manager (originally for Python, but now quite language agnostic) that works on Linux, macOS and Windows. `conda-forge`  is a channel for the conda package manager that provides many dependency, in particular all the one that are required by the robotology-superbuild .
@traversaro traversaro changed the title CI: Add conda-forge based builds [WIP] CI: Add conda-forge based builds on Linux and macOS Oct 11, 2020
@traversaro
Copy link
Member Author

The macOS build are failing due to the missing freeglut, that should be addressed in conda-forge/freeglut-feedstock#24 .

@traversaro traversaro changed the title [WIP] CI: Add conda-forge based builds on Linux and macOS [WIP] CI: Add conda-forge based builds on Linux Oct 11, 2020
@traversaro traversaro changed the title [WIP] CI: Add conda-forge based builds on Linux CI: Add conda-forge based builds on Linux Oct 11, 2020
@traversaro
Copy link
Member Author

traversaro commented Oct 11, 2020

The first practical use of this conda-based CI builds (once mac is added) is to quickly understand if any regression in the regular homebrew-based macOS CI builds is due to software regressions in the robotology-superbuild software, or in some enviroment failures (that is what happens most of the time).

Just to make this point clear, the Homebrew-based CI is now failing on macOS. Beside that, the PR is not ready for review.

Copy link
Member

@diegoferigo diegoferigo left a comment

Choose a reason for hiding this comment

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

Cool! Nice to see a cross-platform system that can handle both source and binary installation. Furthermore, for researchers, being able to install the dependencies in a user-owned folder might provide a easier way to keep a clean system.

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.

2 participants