Пример #1
0
    def extract(self,
                archive=None,
                dest=None,
                merge_single=None,
                callback=None):
        if not system.path_exists(archive):
            raise RunnerInstallationError(
                "Failed to extract {}".format(archive))
        try:
            extract_archive(archive, dest, merge_single=merge_single)
        except ExtractFailure as ex:
            logger.error(
                "Failed to extract the archive %s file may be corrupt",
                archive)
            raise RunnerInstallationError("Failed to extract {}: {}".format(
                archive, ex))
        os.remove(archive)

        if self.name == "wine":
            logger.debug("Clearing wine version cache")
            from lutris.util.wine.wine import get_wine_versions
            get_wine_versions.cache_clear()

        if callback:
            callback()
Пример #2
0
    def install(self, version=None, downloader=None, callback=None):
        """Install runner using package management systems."""
        logger.debug(
            "Installing %s (version=%s, downloader=%s, callback=%s)",
            self.name,
            version,
            downloader,
            callback,
        )
        runner = self.get_runner_version(version)
        if not runner:
            raise RunnerInstallationError(
                "Failed to retrieve {} ({}) information".format(
                    self.name, version))
        if not downloader:
            raise RuntimeError("Missing mandatory downloader for runner %s" %
                               self)
        opts = {"downloader": downloader, "callback": callback}
        if "wine" in self.name:
            opts["merge_single"] = True
            opts["dest"] = os.path.join(
                settings.RUNNER_DIR, self.name,
                "{}-{}".format(runner["version"], runner["architecture"]))

        if self.name == "libretro" and version:
            opts["merge_single"] = False
            opts["dest"] = os.path.join(settings.RUNNER_DIR, "retroarch/cores")
        self.download_and_extract(runner["url"], **opts)
Пример #3
0
 def install(self, version=None, downloader=None, callback=None):
     """Install runner using package management systems."""
     logger.debug("Installing %s (version=%s, downloader=%s, callback=%s)",
                  self.name, version, downloader, callback)
     runner_info = self.get_runner_info(version)
     if not runner_info:
         raise RunnerInstallationError(
             '{} is not available for the {} architecture'.format(
                 self.name, self.arch
             )
         )
         dialogs.ErrorDialog(
         )
         return False
     opts = {}
     if downloader:
         opts['downloader'] = downloader
     if callback:
         opts['callback'] = callback
     if 'wine' in self.name:
         version = runner_info['version']
         opts['merge_single'] = True
         dirname = '{}-{}'.format(version, runner_info['architecture'])
         opts['dest'] = os.path.join(settings.RUNNER_DIR,
                                     self.name, dirname)
     if self.name == 'libretro' and version:
         opts['merge_single'] = False
         opts['dest'] = os.path.join(settings.RUNNER_DIR, 'retroarch/cores')
     url = runner_info['url']
     self.download_and_extract(url, **opts)
Пример #4
0
 def extract(self, archive=None, dest=None, merge_single=None,
             callback=None):
     if not os.path.exists(archive):
         raise RunnerInstallationError("Failed to extract {}", archive)
     extract_archive(archive, dest, merge_single=merge_single)
     os.remove(archive)
     if callback:
         callback()
Пример #5
0
 def extract(archive=None, dest=None, merge_single=None, callback=None):
     if not system.path_exists(archive):
         raise RunnerInstallationError(
             "Failed to extract {}".format(archive))
     extract_archive(archive, dest, merge_single=merge_single)
     os.remove(archive)
     if callback:
         callback()