From bfb12960d28c109a45b947a6db550a1144870fb7 Mon Sep 17 00:00:00 2001 From: Mathieu Comandon Date: Mon, 31 May 2021 19:34:00 -0700 Subject: [PATCH] Revert "simplify architecture detection for runners" This reverts commit 7cecda9d504a7db5074f5629d7014598e7b2bb80. --- lutris/runners/runner.py | 46 ++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 25 deletions(-) diff --git a/lutris/runners/runner.py b/lutris/runners/runner.py index 5ab4d14ff..f52a2e145 100644 --- a/lutris/runners/runner.py +++ b/lutris/runners/runner.py @@ -315,27 +315,29 @@ class Runner: # pylint: disable=too-many-public-methods logger.error("Failed to get runner information") return - system_architecture = system.LINUX_SYSTEM.arch - runner_versions = runner_info.get("versions") or [] - - compatible_runner_versions = list( - filter(lambda runner_version: True if runner_version.get("architecture") == system_architecture else False, - runner_versions)) - - logger.debug(compatible_runner_versions) - - runner_info_for_provided_version = [] + versions = runner_info.get("versions") or [] + arch = system.LINUX_SYSTEM.arch if version: - runner_info_for_provided_version = [v for v in compatible_runner_versions if v["version"] == version] - if len(runner_info_for_provided_version) != 0: - logger.info("Using provided version compatible for architecture") - return runner_info_for_provided_version[0] - elif len(compatible_runner_versions) > 0: - logger.info("Using latest version compatible for architecture") - return compatible_runner_versions[len(compatible_runner_versions) - 1] + if version.endswith("-i386") or version.endswith("-x86_64"): + version, arch = version.rsplit("-", 1) + versions = [v for v in versions if v["version"] == version] + versions_for_arch = [v for v in versions if v["architecture"] == arch] + if len(versions_for_arch) == 1: + return versions_for_arch[0] - logger.error("The system architecture does not match any architecture currently provided by Lutris.net") - return {} + if len(versions_for_arch) > 1: + default_version = [v for v in versions_for_arch if v["default"] is True] + if default_version: + return default_version[0] + elif len(versions) == 1 and system.LINUX_SYSTEM.is_64_bit: + return versions[0] + elif len(versions) > 1 and system.LINUX_SYSTEM.is_64_bit: + default_version = [v for v in versions if v["default"] is True] + if default_version: + return default_version[0] + # If we didn't find a proper version yet, return the first available. + if len(versions_for_arch) >= 1: + return versions_for_arch[0] def install(self, version=None, downloader=None, callback=None): """Install runner using package management systems.""" @@ -425,9 +427,3 @@ class Runner: # pylint: disable=too-many-public-methods output = item break return output - - def has_system_architecture(runner_info): - if runner_info["architecture"] == system.LINUX_SYSTEM.arch: - return True - else: - return False