return cid
+def config_parse_minimum_version(value: Optional[str], old: Optional[GenericVersion]) -> Optional[GenericVersion]:
+ if not value:
+ return old
+
+ new = GenericVersion(value)
+
+ if not old:
+ return new
+
+ return max(old, new)
+
+
@dataclasses.dataclass(frozen=True)
class MkosiConfigSetting:
dest: str
include: tuple[str, ...]
images: tuple[str, ...]
dependencies: tuple[str, ...]
+ minimum_version: Optional[GenericVersion]
distribution: Distribution
release: str
parse=config_make_list_parser(delimiter=","),
help="Specify other images that this image depends on",
),
+ MkosiConfigSetting(
+ dest="minimum_version",
+ section="Config",
+ parse=config_parse_minimum_version,
+ help="Specify the minimum required mkosi version",
+ ),
MkosiConfigSetting(
dest="distribution",
short="-d",
Include: {line_join_list(config.include)}
Images: {line_join_list(config.images)}
Dependencies: {line_join_list(config.dependencies)}
+ Minimum Version: {none_to_none(config.minimum_version)}
{bold("DISTRIBUTION")}:
Distribution: {bold(config.distribution)}
def default(self, o: Any) -> Any:
if isinstance(o, StrEnum):
return str(o)
+ elif isinstance(o, GenericVersion):
+ return str(o)
elif isinstance(o, os.PathLike):
return os.fspath(o)
elif isinstance(o, uuid.UUID):
)
return ret
+ def generic_version_transformer(
+ version: Optional[str],
+ fieldtype: type[Optional[GenericVersion]],
+ ) -> Optional[GenericVersion]:
+ return GenericVersion(version) if version is not None else None
+
transformers = {
Path: path_transformer,
Optional[Path]: optional_path_transformer,
Verb: enum_transformer,
DocFormat: enum_transformer,
list[QemuDrive]: config_drive_transformer,
+ GenericVersion: generic_version_transformer,
}
def json_transformer(key: str, val: Any) -> Any:
image and will be pulled in as dependencies of this image when
`Images=` is used.
+`MinimumVersion=`, `--minimum-version=`
+
+: The minimum mkosi version required to build this configuration. If
+ specified multiple times, the highest specified version is used.
+
### [Distribution] Section
`Distribution=`, `--distribution=`, `-d`
Verb,
)
from mkosi.distributions import Distribution
+from mkosi.versioncomp import GenericVersion
@pytest.mark.parametrize("path", [None, "/baz/qux"])
"json",
"changelog"
],
+ "MinimumVersion": "123",
"Mirror": null,
"NSpawnSettings": null,
"Output": "outfile",
locale_messages = "",
make_initrd = False,
manifest_format = [ManifestFormat.json, ManifestFormat.changelog],
+ minimum_version = GenericVersion("123"),
mirror = None,
nspawn_settings = None,
output = "outfile",