C++ Logo

sg15

Advanced search

[SG15] Requirements for Consuming Pre-built libraries, Part II

From: Daniel Ruoso <daniel_at_[hidden]>
Date: Tue, 2 Nov 2021 11:49:52 -0400
Hi,

To continue on the effort to mapping out the requirements for consuming
pre-built libraries, I am now moving to a second part of that effort, now
trying to identify the scenarios in which this comes up.

I'm using the same document (
https://docs.google.com/document/d/1Oy6cooJdYVFF_sVPx8IFRlARjkzyMuW4GWWEIgUUZRs/edit#
) to work through those usage scenarios. Feel free to add comments or
suggestions directly on google docs, but I'll include a summary of what I
have so far:

Coherent Build Environment: In this scenario, the coherency of the
libraries (ABI, Target Architecture, ODR) has already been addressed by a
system that created the environment for a build to happen. This scenario is
independent of how those guarantees were provided by the package manager,
and it focuses entirely on how to communicate the information about the
prebuilt artifacts to the build system.

Dependency Solver: This is the theme covered in the “How Can Package
Managers Handle ABI (In)compatibility in C++?” talk by Todd Gamblin at
cppcon2021. It is the scenario where the package manager will try to
identify a coherent dependency graph from an arbitrary set of prebuilt
binaries.

Dependency Solver in Coherent Environments: This is a strict subset of the
previous section, as it focuses on the cases where only coherent binaries
(ABI, target architecture, language runtimes) are available, but that it’s
still required to make the full set of dependencies available for the build.

Building From Source: While this is technically beyond the scope of
consuming pre-built libraries, package managers in general also play the
role of being able to build a dependency from source in order to be able to
create a coherent environment, when a particular binary is not available.

Daniel

Received on 2021-11-02 10:50:10