From 4400e60622f3d97a534be0736ff2085333335326 Mon Sep 17 00:00:00 2001 From: Vinicius Moreira Date: Tue, 4 Aug 2020 15:35:15 -0300 Subject: [PATCH] [arch] improvement -> upgrade summary: displaying the reason a given package must be installed --- CHANGELOG.md | 7 +++++++ bauh/gems/arch/updates.py | 10 ++++++++-- bauh/view/qt/thread.py | 2 +- pictures/releases/0.9.7/arch_install_reason.png | Bin 0 -> 32027 bytes 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 pictures/releases/0.9.7/arch_install_reason.png diff --git a/CHANGELOG.md b/CHANGELOG.md index fbeaf601..3dc1effb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [0.9.7] 2020 +### Improvements +- Arch + - upgrade summary: displaying the reason a given package must be installed +

+ +

+ ### Fixes - Arch - not able to upgrade a package that explicitly defines a conflict with itself (e.g: grub) diff --git a/bauh/gems/arch/updates.py b/bauh/gems/arch/updates.py index 3187d11d..ee010f8d 100644 --- a/bauh/gems/arch/updates.py +++ b/bauh/gems/arch/updates.py @@ -334,7 +334,7 @@ class UpdatesSummarizer: context.aur_index.update(names) self.logger.info("AUR index loaded on the context") - def _map_requirement(self, pkg: ArchPackage, context: UpdateRequirementsContext, installed_sizes: Dict[str, int] = None) -> UpgradeRequirement: + def _map_requirement(self, pkg: ArchPackage, context: UpdateRequirementsContext, installed_sizes: Dict[str, int] = None, to_install: bool = False, to_upgrade: Set[str] = None) -> UpgradeRequirement: requirement = UpgradeRequirement(pkg) if pkg.repository != 'aur': @@ -347,6 +347,11 @@ class UpdatesSummarizer: if current_size is not None and data['s']: requirement.extra_size = data['s'] - current_size + if to_install and context.pkgs_data and context.to_update: + names = context.pkgs_data[pkg.name].get('p', {pkg.name}) + required_by = ','.join([p for p in to_upgrade if p != pkg.name and context.pkgs_data[p]['d'] and any([n for n in names if n in context.pkgs_data[p]['d']])]) + requirement.reason = '{}: {}'.format(self.i18n['arch.info.required by'].capitalize(), required_by if required_by else '?') + return requirement def summarize(self, pkgs: List[ArchPackage], root_password: str, arch_config: dict) -> UpgradeRequirements: @@ -422,6 +427,7 @@ class UpdatesSummarizer: res.cannot_upgrade = [d for d in context.cannot_upgrade.values()] if context.to_install: - res.to_install = [self._map_requirement(p, context) for p in context.to_install.values()] + to_upgrade = {r.pkg.name for r in res.to_upgrade} if res.to_upgrade else None + res.to_install = [self._map_requirement(p, context, to_install=True, to_upgrade=to_upgrade) for p in context.to_install.values()] return res diff --git a/bauh/view/qt/thread.py b/bauh/view/qt/thread.py index 6915b7d8..7a561002 100644 --- a/bauh/view/qt/thread.py +++ b/bauh/view/qt/thread.py @@ -236,7 +236,7 @@ class UpgradeSelected(AsyncAction): return FormComponent(label=self.i18n['action.update.cannot_update_label'], components=comps) def _gen_to_install_form(self, reqs: List[UpgradeRequirement]) -> Tuple[FormComponent, Tuple[int, int]]: - opts = [self._req_as_option(r) for r in reqs] + opts = [self._req_as_option(r, custom_tooltip=r.reason) for r in reqs] comps = [MultipleSelectComponent(label='', options=opts, default_options=set(opts))] required_size, extra_size = self._sum_pkgs_size(reqs) diff --git a/pictures/releases/0.9.7/arch_install_reason.png b/pictures/releases/0.9.7/arch_install_reason.png new file mode 100644 index 0000000000000000000000000000000000000000..0085061469b0febe57bc922096073b6d1f5a11ab GIT binary patch literal 32027 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