X-Git-Url: http://git.webkit.org/?p=WebKit-https.git;a=blobdiff_plain;f=Tools%2Fflatpak%2Fflatpakutils.py;h=172ad1cb697e3e2f6b8db0c94a35de5f4f922363;hp=5484b48c56e1866d7484ead07230a35cf86d6228;hb=103db959e7e9c45b63e4dfb63662838a0cae7486;hpb=9a458fc6acd37c945c999b7c0e0f0b5d7b8c4c8f diff --git a/Tools/flatpak/flatpakutils.py b/Tools/flatpak/flatpakutils.py index 5484b48..172ad1c 100644 --- a/Tools/flatpak/flatpakutils.py +++ b/Tools/flatpak/flatpakutils.py @@ -52,6 +52,8 @@ FLATPAK_REQ = [ ("flatpak-builder", "0.10.0"), ] +FLATPAK_VERSION = {} + WPE_MANIFEST_MAP = { "qt": "org.webkit.WPEQT.yaml", } @@ -110,7 +112,9 @@ def check_flatpak(verbose=True): return tuple(map(int, (version.split(".")))) version = output.decode("utf-8").split(" ")[1].strip("\n") - if comparable_version(version) < comparable_version(required_version): + current = comparable_version(version) + FLATPAK_VERSION[app] = current + if current < comparable_version(required_version): Console.message("\n%s%s %s required but %s found." " Please update and try again%s\n", Colors.FAIL, app, required_version, version, Colors.ENDC) @@ -260,23 +264,35 @@ class FlatpakPackages(FlatpakObject): self.apps = self.__detect_apps() self.packages = self.runtimes + self.apps + def __detect_packages(self, *args): packs = [] - package_defs = [rd - for rd in self.flatpak("list", "-d", "--all", *args).split("\n") - if rd] - for package_def in package_defs: - splited_packaged_def = package_def.split() - name, arch, branch = splited_packaged_def[0].split("/") + if FLATPAK_VERSION["flatpak"] < (1, 1, 2): + out = self.flatpak("list", "-d", *args) + package_defs = [line for line in out.split("\n") if line] + for package_def in package_defs: + splited_packaged_def = package_def.split() + name, arch, branch = splited_packaged_def[0].split("/") + + # If installed from a file, the package is in no repo + repo_name = splited_packaged_def[1] + repo = self.repos.repos.get(repo_name) + + packs.append(FlatpakPackage(name, branch, repo, arch)) + else: + out = self.flatpak("list", "--columns=application,arch,branch,origin", *args) + package_defs = [line for line in out.split("\n") if line] + for package_def in package_defs: + name, arch, branch, origin = package_def.split("\t") - # If installed from a file, the package is in no repo - repo_name = splited_packaged_def[1] - repo = self.repos.repos.get(repo_name) + # If installed from a file, the package is in no repo + repo = self.repos.repos.get(origin) - packs.append(FlatpakPackage(name, branch, repo, arch)) + packs.append(FlatpakPackage(name, branch, repo, arch)) return packs + def __detect_runtimes(self): return self.__detect_packages("--runtime") @@ -297,36 +313,47 @@ class FlatpakRepos(FlatpakObject): def update(self): self.repos = {} - remotes = [row - for row in self.flatpak("remote-list", "-d").split("\n") - if row] - for repo in remotes: - for components in [repo.split(" "), repo.split("\t")]: - if len(components) == 1: - components = repo.split("\t") - name = components[0] - desc = "" - url = None - for elem in components[1:]: - if not elem: - continue - parsed_url = urlparse(elem) - if parsed_url.scheme: - url = elem + if FLATPAK_VERSION["flatpak"] < (1, 1, 2): + out = self.flatpak("remote-list", "-d") + remotes = [line for line in out.split("\n") if line] + for repo in remotes: + for components in [repo.split(" "), repo.split("\t")]: + if len(components) == 1: + components = repo.split("\t") + name = components[0] + desc = "" + url = None + for elem in components[1:]: + if not elem: + continue + parsed_url = urlparse(elem) + if parsed_url.scheme: + url = elem + break + + if desc: + desc += " " + desc += elem + + if url: break - if desc: - desc += " " - desc += elem + if not url: + Console.message("No valid URI found for: %s", repo) + continue - if url: - break - - if not url: - Console.message("No valid URI found for: %s", repo) - continue - - self.repos[name] = FlatpakRepo(name, url, desc, repos=self) + self.repos[name] = FlatpakRepo(name, url, desc, repos=self) + else: + out = self.flatpak("remote-list", "--columns=name,title,url") + remotes = [line for line in out.split("\n") if line] + for remote in remotes: + name, title, url = remote.split("\t") + parsed_url = urlparse(url) + if not parsed_url.scheme: + Console.message("No valid URI found for: %s", remote) + continue + + self.repos[name] = FlatpakRepo(name, url, title, repos=self) self.packages = FlatpakPackages(self)