hermit
hermit copied to clipboard
First class support for package variants
Sometimes we want to create a variant of a package, with different envars, deps, etc. eg.
The mainline package:
platform amd64 {
source = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-${version}-${os}-x86_64.tar.gz"
}
platform arm64 {
source = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-${version}-${os}-arm.tar.gz"
}
version "369.0.0" {
requires = ["python3"]
env = {
"CLOUDSDK_PYTHON": "python3",
}
}
The variant, where we have to override source
because ${version}
will contain the semver metadata:
version "369.0.0+mlmt" {
platform amd64 {
source = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-369.0.0-${os}-x86_64.tar.gz"
}
platform arm64 {
source = "https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-369.0.0-${os}-arm.tar.gz"
}
}
This is not great.
I propose adding an optional variant
attribute that will be appended to the version as semver metadata after interpolation. eg.
version "369.0.0" {
variant = "mlmt"
}