devcontainers / devcontainers/cli

`overrideFeatureInstallOrder` gets confused when higher-priority features have dependencies

Ouverte
#1,200 1 commentaire 1 réaction 1 personne assignée Réclamée par @v-Kaniska244 Voir sur GitHub
Langage dominant
TypeScript
Étoiles
3k
Forks
457
Merge moyen
13 h 17 min
PR mergées (30 j)
6

Description

I wanted to install features in a specific order, and used `overrideFeatureInstallOrder` to do that. I was surprised when the feature I wanted to install last installed first!

I have a minimal reproduction at https://github.com/dgholz/devcontainer-install-override

In [the `devcontainer.json` file](https://github.com/dgholz/devcontainer-install-override/blob/main/.devcontainer/devcontainer.json), I have:
```
{
"image": "mcr.microsoft.com/devcontainers/base:trixie",
"features": {
"./features/use-tr": {},
"./features/remove-tr": {}
},
"overrideFeatureInstallOrder": [
"./features/use-tr",
"./features/remove-tr"
]
}
```

But `use-tr` has a dependency on the `common` feature, and `remove-tr` does not. So when `computeDependsOnInstallationOrder` runs, it gets tripped up by
https://github.com/devcontainers/cli/blob/997a2db1ec28eacfb718d07e7741dbd57af59564/src/spec-configuration/containerFeaturesOrder.ts#L625
`use-tr` gets excluded, and `remove-tr` has round priority `1` so gets installed before `common` (which has round priority `0`)

The fix is to either set the round priority transitively (so `common` would get round priority `2` from `use-tr`); or to reverse the calculated priority ordering, so features with no dependencies would be installed first.

Guide de contribution

Ouvrir le guide de contribution

Évaluation

Cette issue n'a pas encore été évaluée.

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.