[PATCH v2] pactree: Hide dependency satisfiers in more cases

Daniel M. Capella polyzen at archlinux.org
Wed Sep 2 19:40:21 UTC 2020


On Wed Sep 2, 2020 at 1:41 PM EDT, Sebastian Jakubiak wrote:
> Pactree takes care not to print both a dependency and the package to
> which it resolves if they are equal. Extend (fix?) this to cover
> versioned dependencies and optional dependencies containing
> descriptions, so that e.g. `gnupg provides gnupg>=2` and `clang provides
> clang: for qdoc` will be made more compact.
>
> Implementation suggested by Eli Schwartz.
>
> Signed-off-by: Sebastian Jakubiak <jakseb.dev at gmail.com>
> ---
>
> Note that, in addition to the completely changed commit message and
> implementation, this version produces compact output for more cases than
> v1. To get v1's behavior, the condition should be changed to:
>
> result = dep->mod != ALPM_DEP_MOD_ANY || strcmp...
>
> src/pactree.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/src/pactree.c b/src/pactree.c
> index e34ecc84..ad3dd737 100644
> --- a/src/pactree.c
> +++ b/src/pactree.c
> @@ -383,6 +383,16 @@ static int parse_options(int argc, char *argv[])
> return 0;
> }
>  
> +static int should_show_satisfier(const char *pkg, const char
> *depstring)
> +{
> + int result;
> + alpm_depend_t *dep = alpm_dep_from_string(depstring);
> + if(!dep) return 1;
> + result = strcmp(pkg, dep->name) != 0;
> + free(dep);
> + return result;
> +}
> +
> /* pkg provides provision */
> static void print_text(const char *pkg, const char *provision,
> tdepth *depth, int last, int opt_dep)
> @@ -419,12 +429,12 @@ static void print_text(const char *pkg, const char
> *provision,
> if(!pkg && provision) {
> printf("%s%s%s%s [unresolvable]%s%s\n", tip, color->leaf1,
> provision, color->branch1, opt_str, color->off);
> - } else if(provision && strcmp(pkg, provision) != 0 &&
> *(style->provides) != '\0') {
> + } else if(provision && *(style->provides) != '\0' &&
> should_show_satisfier(pkg, provision)) {
> printf("%s%s%s%s%s %s%s%s%s\n", tip, color->leaf1, pkg,
> color->leaf2, style->provides, color->leaf1, provision, opt_str,
> color->off);
> } else {
> - printf("%s%s%s%s%s\n", tip, color->leaf1, pkg, opt_str, color->off);
> + printf("%s%s%s%s%s\n", tip, color->leaf1, provision ? provision : pkg,
> opt_str, color->off);
> }
> }
>  
> --
> 2.28.0

Merged, thanks!

--
Best,
Daniel <https://danielcapella.com>


More information about the pacman-contrib mailing list