mirror of
https://github.com/lutris/lutris
synced 2024-10-04 14:59:37 +00:00
Supply a missing architecture for a wine version taken from an install script.
Resolves #5362
This commit is contained in:
parent
e513e442a6
commit
eb96626451
|
@ -195,17 +195,30 @@ def download_runner_versions(runner_name: str) -> list:
|
||||||
|
|
||||||
|
|
||||||
def format_runner_version(version_info: Dict[str, str]) -> str:
|
def format_runner_version(version_info: Dict[str, str]) -> str:
|
||||||
version = version_info.get("version")
|
version = version_info.get("version") or ""
|
||||||
if not version:
|
|
||||||
return ""
|
|
||||||
arch = version_info.get("architecture")
|
arch = version_info.get("architecture")
|
||||||
|
return format_version_architecture(version, arch)
|
||||||
|
|
||||||
|
|
||||||
|
def normalize_version_architecture(version_name: str) -> str:
|
||||||
|
"""Ensures the version name has an architecture on the end ofit;
|
||||||
|
adds the system's architecture if it is missing."""
|
||||||
|
base_version, arch = parse_version_architecture(version_name)
|
||||||
|
return format_version_architecture(base_version, arch) if base_version else ""
|
||||||
|
|
||||||
|
|
||||||
|
def format_version_architecture(base_version: str, arch: Optional[str] = None) -> str:
|
||||||
|
"""Assembles a version with architecture from the version and architecture."""
|
||||||
|
if not base_version:
|
||||||
|
return ""
|
||||||
|
|
||||||
if arch:
|
if arch:
|
||||||
return "{}-{}".format(version, arch)
|
return "{}-{}".format(base_version, arch)
|
||||||
|
|
||||||
return version
|
return base_version
|
||||||
|
|
||||||
|
|
||||||
def parse_version_architecture(version_name: Optional[str]) -> Tuple[Optional[str], str]:
|
def parse_version_architecture(version_name: str) -> Tuple[str, str]:
|
||||||
"""Splits a version that ends with an architecture into the plain version and
|
"""Splits a version that ends with an architecture into the plain version and
|
||||||
architecture, as a tuple. If the version has no architecture, this provides
|
architecture, as a tuple. If the version has no architecture, this provides
|
||||||
the system's architecture instead."""
|
the system's architecture instead."""
|
||||||
|
@ -216,7 +229,7 @@ def parse_version_architecture(version_name: Optional[str]) -> Tuple[Optional[st
|
||||||
return version_name, LINUX_SYSTEM.arch
|
return version_name, LINUX_SYSTEM.arch
|
||||||
|
|
||||||
|
|
||||||
def get_default_runner_version_info(runner_name: str, version: str = None) -> Dict[str, str]:
|
def get_default_runner_version_info(runner_name: str, version: Optional[str] = None) -> Dict[str, str]:
|
||||||
"""Get the appropriate version for a runner
|
"""Get the appropriate version for a runner
|
||||||
|
|
||||||
Params:
|
Params:
|
||||||
|
@ -228,7 +241,7 @@ def get_default_runner_version_info(runner_name: str, version: str = None) -> Di
|
||||||
a dict containing only the version itself.
|
a dict containing only the version itself.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
version, arch = parse_version_architecture(version)
|
version, arch = parse_version_architecture(version or "")
|
||||||
|
|
||||||
def get_from_cache():
|
def get_from_cache():
|
||||||
# Prefer to provide the info from our local cache if we can; if this can't find
|
# Prefer to provide the info from our local cache if we can; if this can't find
|
||||||
|
|
|
@ -6,7 +6,7 @@ from gettext import gettext as _
|
||||||
from typing import Dict, Optional, Tuple
|
from typing import Dict, Optional, Tuple
|
||||||
|
|
||||||
from lutris import runtime, settings
|
from lutris import runtime, settings
|
||||||
from lutris.api import format_runner_version
|
from lutris.api import format_runner_version, normalize_version_architecture
|
||||||
from lutris.config import LutrisConfig
|
from lutris.config import LutrisConfig
|
||||||
from lutris.database.games import get_game_by_field
|
from lutris.database.games import get_game_by_field
|
||||||
from lutris.exceptions import (
|
from lutris.exceptions import (
|
||||||
|
@ -789,6 +789,7 @@ class wine(Runner):
|
||||||
version = None
|
version = None
|
||||||
if installer.script.get(installer.runner):
|
if installer.script.get(installer.runner):
|
||||||
version = installer.script[installer.runner].get("version")
|
version = installer.script[installer.runner].get("version")
|
||||||
|
version = normalize_version_architecture(version)
|
||||||
# If the installer is an extension, use the wine version from the base game
|
# If the installer is an extension, use the wine version from the base game
|
||||||
elif installer.requires:
|
elif installer.requires:
|
||||||
db_game = get_game_by_field(installer.requires, field="installer_slug")
|
db_game = get_game_by_field(installer.requires, field="installer_slug")
|
||||||
|
|
Loading…
Reference in a new issue