From patchwork Wed Sep 2 17:41:08 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sebastian Jakubiak X-Patchwork-Id: 1766 Return-Path: Delivered-To: patchwork@archlinux.org Received: from apollo.archlinux.org (localhost [127.0.0.1]) by apollo.archlinux.org (Postfix) with ESMTP id 18BBC1AE4DE01 for ; Wed, 2 Sep 2020 17:43:10 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on apollo.archlinux.org X-Spam-Level: X-Spam-Status: No, score=-1.7 required=5.0 tests=DKIM_ADSP_CUSTOM_MED=0.001, DKIM_INVALID=1,DKIM_SIGNED=0.1,FREEMAIL_FROM=0.5,MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_MED=-2.3,RCVD_IN_MSPIKE_H4=0.001,RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001,T_DMARC_POLICY_NONE=0.01,T_DMARC_SIMPLE_DKIM=0.01 autolearn=ham autolearn_force=no version=3.4.4 X-Spam-BL-Results: [127.0.9.2] [127.0.0.19] Received: from orion.archlinux.org (orion.archlinux.org [88.198.91.70]) by apollo.archlinux.org (Postfix) with ESMTPS for ; Wed, 2 Sep 2020 17:43:10 +0000 (UTC) Received: from orion.archlinux.org (localhost [127.0.0.1]) by orion.archlinux.org (Postfix) with ESMTP id DAE711D3888CE7; Wed, 2 Sep 2020 17:43:08 +0000 (UTC) Authentication-Results: luna.archlinux.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=A6Vg+o0h Authentication-Results: orion.archlinux.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=A6Vg+o0h DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YAnM6tNnwWonjqEk/1uzi4BSULQqpDiqlqXODO9xFC8=; b=A6Vg+o0h1L1gXZA4fDcnQexOtwcMgPaZTNp9uvbaK1649iMqvJBdHEdn6cBNSiT7mc yqDSK0/sr6J4Rwrg4+QH1hL5XmtFST6hJt/XVEtZgspST2brXsUz9qsaV2x5mwBLQOzi R/q1Mqtktm6vMMu2sT1zV+AinOhQEWogb5fzMIzJ4hH3S7pFv8zobD/qt38qMC81O428 4xg2CG3aC1BEDUElIBltOmWIgvqY48Uezm0HkcoIXtXW0akK4EJMgz8hy5crMObTo3Cl 7jIx2lgQha0y8cG+ioqBjsGtNtoLKoOdCrs7RZETdEjIQg1y3wfvBcY7233HLtdc2mRs F61Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YAnM6tNnwWonjqEk/1uzi4BSULQqpDiqlqXODO9xFC8=; b=cqK8AKAuAOn8KSl1JEiGa9Q2TriRU5MUe+vlVKxZU9HpXkZ8VuyFPRSKJXDLNB2k6p ecG59aFl5LRO1BZR6ACORtXnhdqgfS7XbrU6/LoBF4FbiL+bMH0LO5/wjOrXnUHtc6Mv sGoAuFByy115F+sISRLFwfSELmbkL4sedJddid3yXJ5cnaUZa8XuyxWxvSemMIUpF3WF AKXbg6gxtQxvRWyuaBEHgaJXLXRXAE5w/6SO+wXc/y6Z7G9DWdoOZVmz5Zs76lhoWO20 +YzbGUo2uWzio0Z4e1/lRBfn0zTZVIJRcR5dKHS0oNVDL0KNTfW8PwV7uHL5mcyG5Q3R jhmQ== X-Gm-Message-State: AOAM530MP1oLhvulZ+BxDwM3144jnHdUmRu9Gk8VPGygUAaWu+IuWBvH /ySGWAAT8bLUwygHaINvrVi9YhzCWSE= X-Google-Smtp-Source: ABdhPJxoedYa7j8snS1fDBDSUvviSJP3IeBrL+nQH/bGLJoADTex9l3+3wGaAK+39/F2r/MPkd11yA== X-Received: by 2002:a17:906:1f43:: with SMTP id d3mr1060032ejk.295.1599068583044; Wed, 02 Sep 2020 10:43:03 -0700 (PDT) From: Sebastian Jakubiak To: pacman-contrib@lists.archlinux.org Subject: [PATCH v2] pactree: Hide dependency satisfiers in more cases Date: Wed, 2 Sep 2020 19:41:08 +0200 Message-Id: <20200902174108.73478-1-jakseb.dev@gmail.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200731160029.34268-1-jakseb.dev@gmail.com> References: <20200731160029.34268-1-jakseb.dev@gmail.com> MIME-Version: 1.0 X-BeenThere: pacman-contrib@lists.archlinux.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Discussion list for pacman-contrib development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: pacman-contrib-bounces@lists.archlinux.org Sender: "pacman-contrib" 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 --- 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); } }