Skip to content

Allow multiple versions of the same build dependency in a DAG #38226

@alalazo

Description

@alalazo

Summary

As a user I want to be able to concretize and install a package that requires different versions/configurations of the same build dependency on different nodes.

Description

There are two main use cases to deal with:

  1. Build tools, like cmake, that need an executable added to PATH
  2. Extensions to interpreted languages, like setuptools for Python

The difference between the two is that in the second case we need all of the build extensions to point to the same interpreter:

flowchart TD;
  subgraph one[hdf5 process space]
  NODE1[py-numpy v1.24.2] --type=build,run--> NODE2[py-setuptools v59.4.0]
  NODE1 --type=build--> NODE3[py-cython v0.29.32]
  NODE2 --type=build,run--> NODE4[python v3.10.8]
  NODE3 --type=build--> NODE5[py-setuptools v65.5.0]
  NODE5 --type=build--> NODE4
  end
  style NODE3 fill:#aaa,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
  style NODE5 fill:#aaa,stroke:#f66,stroke-width:2px,color:#fff,stroke-dasharray: 5 5
Loading

Acceptance criteria

  1. Different use cases, that cannot be concretized in v0.20, can now concretize and install
  2. Concretization time is still "acceptable" (no dramatic slow-down due to the relaxation of the model)

Other references

Metadata

Metadata

Assignees

Labels

concretizationconcretizer-use-caseinteresting dependency hierarchy that would challenge the current concretizer

Type

No type

Projects

Status

Done

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions