Esempio n. 1
0
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
Esempio n. 2
0
 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))
Esempio n. 3
0
    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)
Esempio n. 4
0
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
Esempio n. 5
0
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()
Esempio n. 6
0
 def test_parse_version(self):
     self.assertEqual(strings.parse_version("3.6-staging"),
                      ([3, 6], '', '-staging'))
Esempio n. 7
0
 def test_parse_version(self):
     self.assertEqual(strings.parse_version("3.6-staging"), ([3, 6], '', '-staging'))