From patchwork Wed Nov 28 02:27:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Bavier X-Patchwork-Id: 334 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id 2D52916834; Wed, 28 Nov 2018 02:29:19 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, T_DKIM_INVALID,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) by mira.cbaines.net (Postfix) with ESMTPS id BBE1916821 for ; Wed, 28 Nov 2018 02:29:18 +0000 (GMT) Received: from localhost ([::1]:45502 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRpbJ-00005q-UB for patchwork@mira.cbaines.net; Tue, 27 Nov 2018 21:29:17 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49539) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRpb7-0008Vu-5R for guix-patches@gnu.org; Tue, 27 Nov 2018 21:29:06 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRpb4-00019a-Ec for guix-patches@gnu.org; Tue, 27 Nov 2018 21:29:05 -0500 Received: from debbugs.gnu.org ([208.118.235.43]:48441) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gRpb4-00019U-Bp for guix-patches@gnu.org; Tue, 27 Nov 2018 21:29:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gRpb4-0000ll-79 for guix-patches@gnu.org; Tue, 27 Nov 2018 21:29:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#33535] [PATCH] refresh: Account for overlapping updater coverage. Resent-From: ericbavier@centurylink.net Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Wed, 28 Nov 2018 02:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 33535 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 33535@debbugs.gnu.org X-Debbugs-Original-To: guix-patches@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.15433721002905 (code B ref -1); Wed, 28 Nov 2018 02:29:02 +0000 Received: (at submit) by debbugs.gnu.org; 28 Nov 2018 02:28:20 +0000 Received: from localhost ([127.0.0.1]:52699 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRpaO-0000kl-20 for submit@debbugs.gnu.org; Tue, 27 Nov 2018 21:28:20 -0500 Received: from eggs.gnu.org ([208.118.235.92]:39691) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gRpaM-0000kZ-Vm for submit@debbugs.gnu.org; Tue, 27 Nov 2018 21:28:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRpaH-0000dt-08 for submit@debbugs.gnu.org; Tue, 27 Nov 2018 21:28:13 -0500 Received: from lists.gnu.org ([2001:4830:134:3::11]:60668) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gRpaG-0000do-Tk for submit@debbugs.gnu.org; Tue, 27 Nov 2018 21:28:12 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49288) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gRpaF-0007ve-EY for guix-patches@gnu.org; Tue, 27 Nov 2018 21:28:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gRpaC-0000cN-Mb for guix-patches@gnu.org; Tue, 27 Nov 2018 21:28:11 -0500 Received: from mail.onyx.syn-alias.com ([206.152.134.66]:26099 helo=smtp.centurylink.net) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gRpaC-0000br-G1 for guix-patches@gnu.org; Tue, 27 Nov 2018 21:28:08 -0500 DKIM-Signature: v=1; a=rsa-sha1; d=centurylink.net; s=ctl201402; c=relaxed/simple; q=dns/txt; i=@centurylink.net; t=1543372087; h=From:Subject:Date:To:MIME-Version; bh=9uPqpxXNlB6bXnN6TIF1ixgVKYE=; b=Za6/y254YAjyMUZDjJXYJE62Zpx7wsNIbZQxF9ZwoJUGqWwNmgIe30kc2H4MACtj 0u/SvMbQ5vYyE1W8AROCSvcIKXktOz+rShf9GjaXzq3Y2BLENt1tv3UFIU/Hx0gj jYq8832i1e4LrM8nO0Ir7ghkw03JhhI87z6fNvlqJ3APDFKDQulkP0lJQfF21p1H 4+azCVHDLnzrsX38Xc6fmi4ZUaKGSEAjitWtCN3XyPU9n9Nv4UclCJNkssAeGt13 RVyYnBO9wCw7LJ48lp2dTr1TR28AqIDc5xpXLt4LDVVzVWozFr0uk/vLQAf4bu36 INuqqRwZTfhztpdeNFcCuQ==; X_CMAE_Category: , , X-CNFS-Analysis: v=2.2 cv=RqKHF2uK c=1 sm=1 tr=0 a=PfFp8hmzMLas+YAS7JUBXg==:117 a=PfFp8hmzMLas+YAS7JUBXg==:17 a=KGjhK52YXX0A:10 a=JHtHm7312UAA:10 a=zSv6zi-ZgakA:10 a=inoG4m36AAAA:8 a=7Nk6JicNMJbZTrWe8JsA:9 a=93VgcTwNqkpEecET:21 a=qjMAKVMZgvMTGy5u:21 a=_Qgj-RFg6mImvLaOgLPg:22 X-CM-Score: 0 X-Scanned-by: Cloudmark Authority Engine X-Authed-Username: ZXJpY2JhdmllckBjZW50dXJ5bGluay5uZXQ= Authentication-Results: smtp04.onyx.dfw.sync.lan smtp.user=ericbavier@centurylink.net; auth=pass (LOGIN) Received: from [97.116.107.116] ([97.116.107.116:51300] helo=localhost.localdomain) by smtp.centurylink.net (envelope-from ) (ecelerity 3.6.25.56547 r(Core:3.6.25.0)) with ESMTPSA (cipher=DHE-RSA-AES128-GCM-SHA256) id 37/4A-19453-63DFDFB5; Tue, 27 Nov 2018 21:28:06 -0500 From: ericbavier@centurylink.net Date: Tue, 27 Nov 2018 20:27:37 -0600 Message-Id: <20181128022737.18091-1-ericbavier@centurylink.net> X-Mailer: git-send-email 2.19.1 MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Eric Bavier Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: "Guix-patches" X-getmail-retrieved-from-mailbox: Patches From: Eric Bavier * guix/scripts/refresh.scm (list-updaters-and-exit): Do not assume updater predicates are disjoint. Track covered packages directly. --- Hello Guix, Some of our packages are covered by more than one of our updaters: scheme@(guile-user)> ,use(gnu packages)(guix packages)(guix upstream) scheme@(guile-user)> ,use(srfi srfi-1)(srfi srfi-26) scheme@(guile-user)> (define updaters (force (@@ (guix upstream) %updaters))) scheme@(guile-user)> (define predicates (map upstream-updater-predicate updaters)) scheme@(guile-user)> (define doubles (fold-packages (lambda (pkg result) (if (> (count (cut <> pkg) predicates) 1) (cons pkg result) result)) '())) scheme@(guile-user)> (length doubles) $1 = 469 scheme@(guile-user)> (map package-name doubles) $2 = ("agda" "emacs-agda2-mode" "fribidi" "raincat" "ghc-tasty-quickcheck" ... "ghc-hxt") It seams mostly packages covered by both the "hackage" and "stackage" updaters. And Fribidi is a GNU package but hosted on github. Currently this leads to double-counting while computing total package coverage and a too optimistic result (by about 5.4%). The below patch fixes it by tracking the (un)covered packages directly. guix/scripts/refresh.scm | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/guix/scripts/refresh.scm b/guix/scripts/refresh.scm index 58fc64db1..f7d2cffb7 100644 --- a/guix/scripts/refresh.scm +++ b/guix/scripts/refresh.scm @@ -179,24 +179,24 @@ specified with `--select'.\n")) (let* ((packages (fold-packages cons '())) (total (length packages))) - (define covered - (fold (lambda (updater covered) - (let ((matches (count (upstream-updater-predicate updater) - packages))) + (define uncovered + (fold (lambda (updater uncovered) + (let ((matches (filter (upstream-updater-predicate updater) + packages))) ;; TRANSLATORS: The parenthetical expression here is rendered ;; like "(42% coverage)" and denotes the fraction of packages ;; covered by the given updater. (format #t (G_ " - ~a: ~a (~2,1f% coverage)~%") (upstream-updater-name updater) (G_ (upstream-updater-description updater)) - (* 100. (/ matches total))) - (+ covered matches))) - 0 + (* 100. (/ (length matches) total))) + (lset-difference eq? uncovered matches))) + packages (force %updaters))) (newline) (format #t (G_ "~2,1f% of the packages are covered by these updaters.~%") - (* 100. (/ covered total)))) + (* 100. (/ (- total (length uncovered)) total)))) (exit 0)) (define (warn-no-updater package)