-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Description
Hello, Conan Team!
After having some thoughts regarding how many libraries and components of applications and operating system can be packaged and delivered by Conan, and included in CCI, I understood that I have no clear idea where Conan overlords drew a boundary for what should be considered "application-level" libraries and what should be considered "system library", or to be more accurate, "system API".
Let me give an example. Recently I have studied a recipe of openal and the recent fixes in it, and was suprised that it depends on libalsa library package (on Linux systems, of course). While it is a correct statement in itself, it is weird to see that libalsa as CCI package at all - because it is considered as OS-provided library API (see https://www.alsa-project.org/alsa-doc/alsa-lib/ ). In other words, libalsa (or libasound) should be in system_libs, just like winmm or ole32 for Windows.
So, here we have a question I personally doesn't have an answer to: what should be considered as provided by OS or provided by CCI as a package? There are the options I can propose:
- CCI should cover all the "userspace" libraries, even the ones that are considered "userspace API of operating system" - in this case every application that uses Conan can completely satisfy all the dependencies up to specific kernel-level API (and in this case we continue to depend on
libalsapackage on Linux systems), of course with exclusion of proprietary userspace components likewinmmon Windows; the dependency tree is single and is not divided by the OS API layers; - CCI should NOT include the libraries that are considered "userspace API of OS", or, at least, other packages like
openalshould NOT depend on such packages, but include the library insystem_libsinstead; - CCI should include both types of the packages (that are considered "userspace API" and all the other "regular" libraries), but instead of making a direct dependency on API-libraries (like
openaldepends onlibalsa) the packages should depend on special API-describing packages like it was done in Vcpkg for OpenGL - such packages should not contain any binaries, only just some "glue" logic in recipe to use system-provided headers and/or libraries.
I think it is crucial to make a decision beforehand, to have clean and well-designed dependency trees.