Open tfoote opened 6 years ago
@tfoote What is the status of this?
There has been no progress, I haven't had time for buildfarm work.
I was asking since the ticket is currently assigned to you. Maybe unassigned it if you are not planning to work on it soon?
This won't be trivial to implement without some refactoring.
It was possible in rosdep because it checks to see if a virtual package provider is installed before grabbing the first candidate and specifically attempting installation.
The code in ros_buildfarm
resolves the list of package names to be installed to their versions via apt prior to building the container image, so there isn't a system state to query for already installed packages. Additionally, another dependency in the list (or a recursive dependency thereof) may already satisfy the virtual package. Both of these situations could result in attempting installation of more than one provider, which may be mutually exclusive (as is the case for libcurl-foo-dev).
Our driving example was: ros/rosdistro#15308
rosdep support was added in https://github.com/ros-infrastructure/rosdep/pull/585 and https://github.com/ros-infrastructure/rosdep/pull/521
However after that was verified we found that the ros_buildfarm doesn't use the same rosdep code paths and was causing regressions on the buildfarm. In particular the devel jobs.
And we reverted the libcurl change: https://github.com/ros/rosdistro/pull/18223
Another instance was just found: ros/rosdistro#18272 where a previously used package has been changed to be a virtual package.
The query logic needs to be extended to support virtual packages that are provided by other packages in the same way that rosdep was extended.