devcontainers / devcontainers/cli

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

Offen
#1,200 1 Kommentar 1 Reaktion 1 zugewiesene Person Beansprucht von @v-Kaniska244 Auf GitHub ansehen
Vorherrschende Sprache
TypeScript
Sterne
3k
Forks
457
Ø Merge
13 Std. 17 Min.
Gemergte PRs (30 T.)
6

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.