Skip to content

[question] CCI's area of influence from the perspective of OS architecture #1207

@Nipheris

Description

@Nipheris

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 libalsa package on Linux systems), of course with exclusion of proprietary userspace components like winmm on 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 openal should NOT depend on such packages, but include the library in system_libs instead;
  • 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 openal depends on libalsa) 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    DocsquestionFurther information is requested

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions