C++ Logo


Advanced search

Re: Defining Roles of Tools in Dependency Management

From: Boris Kolpackov <boris_at_[hidden]>
Date: Wed, 20 Mar 2024 12:44:34 +0200
Bret Brown <mail_at_[hidden]> writes:

> On Tue, Mar 19, 2024 at 9:35 PM Boris Kolpackov <boris_at_[hidden]>
> wrote:
> > Bret Brown via SG15 <sg15_at_[hidden]> writes:
> >
> > > - One is a dependency manager (a.k.a. package manager)
> > > - These resolve dependencies on source or binary artifacts
> > > - The second role is a build system
> > > - These construct and order build commands
> > > - The third role... needs name
> > > - This takes the universe populated by the dependency manager and
> > > flattens a projection into the specific view needed by the build
> > > system to construct a target model (i.e., model libraries and
> > > executables)
> >
> > One things that immediately strikes me as problematic in this model
> > are conditional dependencies that are often based on information that
> > is only known by the build system (target platform, compiler, compiler
> > version, stdlib used, etc). Which means that there is a feedback loop
> > from the build system to the package manager. You could probably make
> > the user supply this information to the package manager manually, but
> > that won't scale beyond basic things.
> >
> I don't believe distinguishing these roles precludes something in the
> dependency management role from probing for dependencies and constraints in
> whatever ways are appropriate, including cooperation with build systems to
> understand implicit requirements like which precise compilation toolchain
> is being targeted. I don't know that we need to define interoperability
> standards around those sorts of discovery-phase cooperation workflows yet.
> I think it's enough to convince ourselves that our next steps are not
> counterproductive.

IMO, it would also be good to convince ourselves that this would be
implementable and in a reasonable time-frame.

I have experience implementing this for the 1x1 case (one package
manager and one build system) where I was conrolling both (so I
could add any necessary mechanisms on either side) and it was
challenging. I have doubts that it will be possible for the NxM
case where each element on either side is controlled by an
independent entity. In fact, I have doubts you will be able to
agree on such a mechanism in the first place.

Received on 2024-03-20 10:44:35