Add *-devel output to conda-forge packages that require them
A common failure point in robostack is that we have conda-forge C++ libraries packages that do not have an output that can be installed to ensure that all the dependencies required to build a downstream C++ project. This is not an issue if a C++ package already include its headers and only use as public dependencies in its headers conda-forge libraries that also ship their headers in the main package, but as soon a dependency uses in its headers a dependency that ships its headers in a separate *-devel package, we need to have a *-devel output also for that package, or it needs to adds the *-devel package to its run dependencies, but some mantainer may be against this as it goes around the point of splitting *-devel packages.
Problematic packages:
qt-main: Depends onlibgl-devel, but at runtime it only requireslibglvtk: Depends on qt-main, i.e. inheriting thelibgl-develproblempcl: Depends on qt-main, i.e. inheriting thelibgl-develproblemlibspnav: Depends onxorg-xorgproto, as @Tobias-Fischer is the maintainer and the package is quite simple probably we can avoid thelibspnav-develoutput and just addxorg-xorgprotoas run dependency.
Can't we just add libgl-devel to the mapping of e.g. pcl etc. in the robostack.yaml?
Sorry, I guess the context is not clear, as I forgot to press submit on this message: https://github.com/RoboStack/ros-humble/pull/229#issuecomment-2558093319 . Another important piece of context is that the issue is definitely not robostack-specific but rather conda-forge, I just opened the issue here as I got a clear idea regarding that while working on the ros humble rebuild and to avoid forgetting about it.
Can't we just add
libgl-develto the mapping of e.g.pcletc. in the robostack.yaml?
Sure, that is what we have done until now (also as the situation was much more complex, as there were cdt involved, so we had REQUIRE_GL and REQUIRE_OPENGL).
We can add libgl-devel to each package that inclue Qt headers in its public headers as we did until now, but I see the following downside:
libgl-develis required (and available) only on Linux, so we would need to split in platform specific sections all the affected dependencies (that is the main reason for now I keptREQUIRE_GLandREQUIRE_OPENGLin https://github.com/RoboStack/ros-humble/pull/229 for now)- The problem is not robostack-specific, so personally I think I have at least other ~30 places (superbuild, individual packages CI, conda environments, conda-forge recipes) in which I need to manually add
libgl-develas I depend onqt-main,vtkorpcl. If there was aqt-main-devel, I could just add it and the semantics of what I am trying to do would be clear.
Anyhow, I realize this is mostly OT here, so if you prefer I can close the issue here.
I think that with vtk 9.4.1 I finally need to handle this problem, at least for vtk and pcl, see https://github.com/conda-forge/vtk-feedstock/pull/374 .
@Tobias-Fischer as you are the most active maintainers in both vtk and pcl, do you prefer to just add the run dependencies required for find_package(VTK) and find_package(PCL) to work fine to the vtk and pcl packages, or you prefer to add vtk-devel and pcl-devel outputs?
vtk also has this problem with tbb and tbb-devel, see https://github.com/conda-forge/smesh-feedstock/pull/98#issuecomment-2885494146
vtk also has this problem with
tbbandtbb-devel, see conda-forge/smesh-feedstock#98 (comment)
I think the problem should have been solved by https://github.com/conda-forge/vtk-feedstock/pull/379 . However we probably need to early close vtk 9.4.1 migration and start the 9.4.2 one.
I tried creating an environment with vtk 9.4.2 and it still doesn't install tbb-devel or do you mean that 9.4.2 doesn't need tbb-devel to succesfully configure?
I tried creating an environment with vtk 9.4.2 and it still doesn't install
tbb-develor do you mean that 9.4.2 doesn't need tbb-devel to succesfully configure?
Good point, I guess the cmake-package-check VTK check in the recipe is not working as expected.
I tried creating an environment with vtk 9.4.2 and it still doesn't install
tbb-develor do you mean that 9.4.2 doesn't need tbb-devel to succesfully configure?Good point, I guess the
cmake-package-check VTKcheck in the recipe is not working as expected.
I opened https://github.com/conda-forge/vtk-feedstock/issues/383 to track this problem.