Skip to content

Move support for optional features from rattler to resolvo #104

Open
@prsabahrami

Description

@prsabahrami

After some discussions, @baszalmstra and I realized It is best to move the support for optional features to resolvo's side. Currently the optional features are handled on rattler's side by creating a new solvable per each requested extra with dependency on the original solvable. This causes the conflict graph to grow extensively as there can be different solvables per each extra per each version. An example requesting only one extra from a sample package where multiple package versions provide a certain extra:

Error: Cannot solve the request because of: The following packages are incompatible
├─ foo[with-bar] * cannot be installed because there are no viable options:
│  ├─ foo[with-bar] 3.5.0 would require
│  │  └─ foo ==3.5.0 py36h1af98f8_1[md5=fb731d9290f0bcbf3a054665f33ec94f, sha256=67a63bec3fd3205170eaad532d487595b8aaceb9814d13c6858d7bac3ef24cd4], which cannot be installed because there are no viable options:
│  │     └─ foo 3.5.0, which conflicts with the versions reported above.
│  ├─ foo[with-bar] 3.4.0 would require
│  │  └─ foo ==3.4.0 py36h1af98f8_1[md5=fb731d9290f0bcbf3a054665f33ec94f, sha256=67a63bec3fd3205170eaad532d487595b8aaceb9814d13c6858d7bac3ef24cd4], which cannot be installed because there are no viable options:
│  │     └─ foo 3.4.0, which conflicts with the versions reported above.
│  ├─ foo[with-bar] 3.3.0 would require
│  │  └─ foo ==3.3.0 py36h1af98f8_1[md5=fb731d9290f0bcbf3a054665f33ec94f, sha256=67a63bec3fd3205170eaad532d487595b8aaceb9814d13c6858d7bac3ef24cd4], which cannot be installed because there are no viable options:
│  │     └─ foo 3.3.0, which conflicts with the versions reported above.
│  ├─ foo[with-bar] 3.2.0 would require
│  │  └─ foo ==3.2.0 py36h1af98f8_1[md5=fb731d9290f0bcbf3a054665f33ec94f, sha256=67a63bec3fd3205170eaad532d487595b8aaceb9814d13c6858d7bac3ef24cd4], which cannot be installed because there are no viable options:
│  │     └─ foo 3.2.0, which conflicts with the versions reported above.
│  ├─ foo[with-bar] 3.1.0 would require
│  │  └─ foo ==3.1.0 py36h1af98f8_1[md5=fb731d9290f0bcbf3a054665f33ec94f, sha256=67a63bec3fd3205170eaad532d487595b8aaceb9814d13c6858d7bac3ef24cd4], which cannot be installed because there are no viable options:
│  │     └─ foo 3.1.0, which conflicts with the versions reported above.
│  └─ foo[with-bar] 3.0.2 would require
│     └─ foo ==3.0.2 py36h1af98f8_1[md5=fb731d9290f0bcbf3a054665f33ec94f, sha256=67a63bec3fd3205170eaad532d487595b8aaceb9814d13c6858d7bac3ef24cd4], which cannot be installed because there are no viable options:
│        └─ foo 3.0.2, which conflicts with the versions reported above.
└─ foo >=4.0 cannot be installed because there are no viable options:
   └─ foo 4.0.2, which conflicts with the versions reported above.

Hence, it is best to move the support to resolvo which would be somewhat similar to #101 with the difference that the value of the conditional literals is known in advance.

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions