devcontainers / devcontainers/cli

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

Abierto
#1,200 1 comentario 1 reacción 1 asignado Reclamado por @v-Kaniska244 Ver en GitHub
Lenguaje dominante
TypeScript
Estrellas
3k
Forks
457
Merge medio
13 h 17 min
PR fusionados (30 d)
6

Descripción

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.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.