cpu_map : sync_qemu_models : fix versionned models

Currently, a new versionned model is only generated when an alias exist
in the version.

This is wrong, because not all versions have an alias, so some models
are not generated, and last version is override the main model.
(with newer flags not present in the original model)

This patch create an "<modelname>-v<version>.xml" for each versionned model,
and keep the extra "<alias>.xml"
This commit is contained in:
Alexandre Derumier 2023-05-20 08:37:01 +02:00
parent 90404c5368
commit 31f446cf37

View File

@ -304,9 +304,10 @@ def expand_model(model):
"""Expand a qemu cpu model description that has its feature split up into """Expand a qemu cpu model description that has its feature split up into
different fields and may have differing versions into several libvirt- different fields and may have differing versions into several libvirt-
friendly cpu models.""" friendly cpu models."""
name = model.pop(".name")
result = { result = {
"name": model.pop(".name"), "name": name,
"vendor": translate_vendor(model.pop(".vendor")), "vendor": translate_vendor(model.pop(".vendor")),
"features": set(), "features": set(),
"extra": dict()} "extra": dict()}
@ -329,7 +330,8 @@ def expand_model(model):
for version in versions: for version in versions:
result = copy.deepcopy(result) result = copy.deepcopy(result)
result["name"] = version.pop(".alias", result["name"]) version_num = version.pop(".version", '1')
result["name"] = name + "-v" + version_num
props = version.pop(".props", dict()) props = version.pop(".props", dict())
for k, v in props: for k, v in props:
@ -350,6 +352,11 @@ def expand_model(model):
yield result yield result
alias = version.pop(".alias", None)
if alias:
result = copy.deepcopy(result)
result["name"] = alias
yield result
def output_model(f, model): def output_model(f, model):
if model["extra"]: if model["extra"]: