Replies: 1 comment
-
|
Almost same problem here, but with Go; while there is only a single quasi-standard Go feature, devcontainer users might want to bring in Go via a different way than the Go feature. Also, the way feature configuration parameters are resolved (not really) has even myself caused woe when wanting to install a Go version other than latest, as parallel dependencies might interfere. At this time, I've moved to soft dependencies using |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
devcontainer features can depend upon other features with the
dependsOnkeyword. Features are found and inserted into the dependency graph based on strict equality.This makes it difficult to write general containers which do not tightly couple to particular feature implementations. To make this more concrete, consider that there are multiple features which provide a Python installation:
In many (all?) cases, when making a feature that uses Python, any of these would be sufficient as a dependency. But which one to use is not clear.
Linux package managers have long dealt with this problem. Debian's
aptitudecalls these virtual dependencies, as does Gentoo. Packages list the capabilities theyProvide, and those provisions become the thing that downstream packages depend upon.It is clear that this feature is missing from devcontainers, since the community has started indicating these virtual dependencies by inserting them into feature names. For example, "(via pipx)" appears frequently in the list of features available today; some examples picked at random are aws-sso-util (via pipx) and pre-commit (via pipx). These packages implicitly depend upon pipx; the dependency is not in a
dependsOnclause because there are multiple ways that a devcontainer could have pipx installed.If this isn't addressed, I think it will become a morass of implicit dependencies that makes it difficult to write and use devcontainer features. I'm writing this to try to start discussion:
Beta Was this translation helpful? Give feedback.
All reactions