def is_version_esync(path): """Determines if a Wine build is Esync capable Params: path: the path to the Wine version Returns: bool: True is the build is Esync capable """ try: version = path.split("/")[-3].lower() except IndexError: logger.error("Invalid path '%s'", path) return False version_number, version_prefix, version_suffix = parse_version(version) esync_compatible_versions = ["esync", "lutris", "tkg", "ge", "proton"] for esync_version in esync_compatible_versions: if esync_version in version_prefix or esync_version in version_suffix: return True wine_ver = str(subprocess.check_output([path, "--version"])).lower() version, *_ = wine_ver.split() version_number, version_prefix, version_suffix = parse_version(version) if "esync" in wine_ver: return True if "staging" in wine_ver and version_number[0] >= 4 and version_number[ 1] >= 6: # Support for esync was merged in Wine Staging 4.6 return True return False
def is_installed(self, version=None, fallback=True, min_version=None): """Check if Wine is installed. If no version is passed, checks if any version of wine is available """ if not version: wine_versions = get_wine_versions() if min_version: min_version_list, _, _ = parse_version(min_version) for version in wine_versions: version_list, _, _ = parse_version(version) if version_list > min_version_list: return True logger.warning("Wine %s or higher not found", min_version) return bool(wine_versions) return system.path_exists(self.get_executable(version, fallback))
def is_installed(self, version=None, fallback=True, min_version=None): """Check if Wine is installed. If no version is passed, checks if any version of wine is available """ if version: return system.path_exists(self.get_executable(version, fallback)) wine_versions = get_wine_versions() if min_version: min_version_list, _, _ = parse_version(min_version) for version in wine_versions: version_list, _, _ = parse_version(version) if version_list > min_version_list: return True logger.warning("Wine %s or higher not found", min_version) return bool(wine_versions)
def is_version_esync(path): """Determines if a Wine build is Esync capable Params: path: the path to the Wine version Returns: bool: True is the build is Esync capable """ try: version = path.split("/")[-3].lower() except IndexError: logger.error("Invalid path '%s'", path) return False _version_number, version_prefix, version_suffix = parse_version(version) esync_compatible_versions = [ "esync", "lutris", "tkg", "ge", "proton", "staging" ] for esync_version in esync_compatible_versions: if esync_version in version_prefix or esync_version in version_suffix: return True wine_version = get_wine_version(path) if wine_version: wine_version = wine_version.lower() return "esync" in wine_version or "staging" in wine_version return False
def is_version_fsync(path): """Determines if a Wine build is Fsync capable Params: path: the path to the Wine version Returns: bool: True is the build is Fsync capable """ try: version = path.split("/")[-3].lower() except IndexError: logger.error("Invalid path '%s'", path) return False _, version_prefix, version_suffix = parse_version(version) fsync_compatible_versions = ["fsync", "lutris", "ge", "proton"] for fsync_version in fsync_compatible_versions: if fsync_version in version_prefix or fsync_version in version_suffix: return True return "fsync" in get_wine_version(path).lower()
def test_parse_version(self): self.assertEqual(strings.parse_version("3.6-staging"), ([3, 6], '', '-staging'))
def test_parse_version(self): self.assertEqual(strings.parse_version("3.6-staging"), ([3, 6], '', '-staging'))