GNU bug report logs -
#33535
[PATCH] refresh: Account for overlapping updater coverage.
Previous Next
Reported by: ericbavier <at> centurylink.net
Date: Wed, 28 Nov 2018 02:29:02 UTC
Severity: normal
Tags: patch
Done: Eric Bavier <ericbavier <at> centurylink.net>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
From: Eric Bavier <bavier <at> member.fsf.org>
* 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)
--
2.19.1
This bug report was last modified 6 years and 162 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.