コード例 #1
0
    def _map_requirement(self,
                         pkg: ArchPackage,
                         context: UpdateRequirementsContext,
                         installed_sizes: Dict[str, int] = None,
                         to_install: bool = False,
                         to_sync: Set[str] = None) -> UpgradeRequirement:
        requirement = UpgradeRequirement(pkg)

        if pkg.repository != 'aur':
            pkgdata = context.pkgs_data.get(pkg.name)

            if pkgdata:
                requirement.required_size = pkgdata['ds']
                requirement.extra_size = pkgdata['s']

                current_size = installed_sizes.get(
                    pkg.name) if installed_sizes else None

                if current_size is not None and pkgdata['s'] is not None:
                    requirement.extra_size = pkgdata['s'] - current_size

            required_by = set()

            if to_install and to_sync and context.pkgs_data:
                names = pkgdata.get('p', {pkg.name}) if pkgdata else {pkg.name}
                to_sync_deps_cache = {}
                for p in to_sync:
                    if p != pkg.name and p in context.pkgs_data:
                        deps = to_sync_deps_cache.get(p)

                        if deps is None:
                            deps = context.pkgs_data[p]['d']

                            if deps is None:
                                deps = set()
                            else:
                                deps = {
                                    RE_DEP_OPERATORS.split(d)[0]
                                    for d in deps
                                }

                            to_sync_deps_cache[p] = deps

                        if deps:
                            for n in names:
                                if n in deps:
                                    required_by.add(p)
                                    break

                requirement.reason = '{}: {}'.format(
                    self.i18n['arch.info.required by'].capitalize(),
                    ','.join(required_by) if required_by else '?')

        return requirement
コード例 #2
0
    def _map_requirement(self, pkg: ArchPackage, context: UpdateRequirementsContext, installed_sizes: Dict[str, int] = None) -> UpgradeRequirement:
        requirement = UpgradeRequirement(pkg)

        if pkg.repository != 'aur':
            data = context.pkgs_data[pkg.name]
            requirement.required_size = data['ds']
            requirement.extra_size = data['s']
    
            current_size = installed_sizes.get(pkg.name) if installed_sizes else None

            if current_size is not None and data['s']:
                requirement.extra_size = data['s'] - current_size

        return requirement
コード例 #3
0
    def get_upgrade_requirements(self, pkgs: List[AppImage], root_password: Optional[str], watcher: ProcessWatcher) -> UpgradeRequirements:
        to_update = []

        for pkg in pkgs:
            requirement = UpgradeRequirement(pkg)
            installed_size = self.http_client.get_content_length_in_bytes(pkg.url_download)
            upgrade_size = self.http_client.get_content_length_in_bytes(pkg.url_download_latest_version)
            requirement.required_size = upgrade_size

            if upgrade_size and installed_size:
                requirement.extra_size = upgrade_size - installed_size

            to_update.append(requirement)

        return UpgradeRequirements([], [], to_update, [])