[flatpak] sorting packages before updating

This commit is contained in:
Vinícius Moreira
2020-02-06 19:40:14 -03:00
parent 44ad20f613
commit ecd936c6fd
9 changed files with 171 additions and 21 deletions

View File

@@ -79,21 +79,21 @@ class AURClient:
self.logger.info('{p} is based on {b}. Retrieving {b} .SRCINFO'.format(p=info_name, b=info_base))
return self.get_src_info(info_base)
def extract_all_dependencies(self, pkginfo: dict) -> Set[str]:
def extract_required_dependencies(self, pkginfo: dict) -> Set[str]:
deps = set()
for attr in ('makedepends', 'depends', 'checkdepends'):
if pkginfo.get(attr):
deps.update([pacman.RE_DEP_OPERATORS.split(dep)[0] for dep in info[attr]])
deps.update([pacman.RE_DEP_OPERATORS.split(dep)[0] for dep in pkginfo[attr]])
return deps
def get_all_dependencies(self, name: str) -> Set[str]:
def get_required_dependencies(self, name: str) -> Set[str]:
info = self.get_src_info(name)
if not info:
raise PackageNotFoundException(name)
return self.extract_all_dependencies(info)
return self.extract_required_dependencies(info)
def _map_names_as_queries(self, names) -> str:
return '&'.join(['arg[{}]={}'.format(i, urllib.parse.quote(n)) for i, n in enumerate(names)])

View File

@@ -1009,7 +1009,7 @@ class ArchManager(SoftwareManager):
for n in names:
names_map[n] = pkg
pkg_deps[pkg] = self.aur_client.extract_all_dependencies(srcinfo)
pkg_deps[pkg] = self.aur_client.extract_required_dependencies(srcinfo)
except:
pkg_deps[pkg] = None
self.logger.warning("Could not retrieve dependencies for '{}'".format(pkg.name))

View File

@@ -71,7 +71,7 @@ class DependenciesAnalyser:
missing_sub = []
for rdep in missing_root:
subdeps = self.aur_client.get_all_dependencies(rdep[0]) if rdep[1] == 'aur' else pacman.read_dependencies(rdep[0])
subdeps = self.aur_client.get_required_dependencies(rdep[0]) if rdep[1] == 'aur' else pacman.read_dependencies(rdep[0])
subdeps_not_analysis = {sd for sd in subdeps if sd not in global_in_analysis}
if subdeps_not_analysis:
@@ -93,7 +93,7 @@ class DependenciesAnalyser:
in_analyses = {*names}
for name in names:
subdeps = self.aur_client.get_all_dependencies(name) if mirror == 'aur' else pacman.read_dependencies(name)
subdeps = self.aur_client.get_required_dependencies(name) if mirror == 'aur' else pacman.read_dependencies(name)
if subdeps:
missing_subdeps = self.get_missing_packages(subdeps, in_analysis=in_analyses)