mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-04-06 21:20:33 +02:00
refresh: Make --list-updaters fast if web.cvs.savannah.gnu.org is broken.
--list-updaters loops through all packages and all updaters to see whether they match. The gnu-ftp updater used to use official-gnu-packages to fetch a list of packages from web.cvs.savannah.gnu.org. official-gnu-packages only caches the result if it succeeds; but does not cache upon a timout or 5xx status. official-gnu-packages times out after a minute and is called for all 30k+ packages. refresh --list-updaters could therefore take 30000 minutes. Now --list-updaters uses official-gnu-packages* (from lint.scm) that memoizes the result also on failure, thereby limiting the time to 1 minute. * guix/gnu-maintenance.scm: Add official-gnu-packages* from guix/lint.scm. Call official-gnu-packages* from gnu-package? * guix/lint.scm: Move official-gnu-packages* to guix/gnu-maintenance.scm Change-Id: I5e2e094bfb1042b03db47e119ced0e94b49b417c Signed-off-by: Ludovic Courtès <ludo@gnu.org> Merges: #4949
This commit is contained in:
committed by
Ludovic Courtès
parent
785f4c6ed9
commit
3b90fc5b3c
@@ -61,6 +61,7 @@
|
||||
gnu-package-download-url
|
||||
|
||||
official-gnu-packages
|
||||
official-gnu-packages*
|
||||
find-package
|
||||
gnu-package?
|
||||
|
||||
@@ -181,6 +182,13 @@ to fetch the list of GNU packages over HTTP."
|
||||
(close-port port)
|
||||
lst)))
|
||||
|
||||
(define official-gnu-packages*
|
||||
(mlambda ()
|
||||
"A memoizing version of 'official-gnu-packages' that returns the empty
|
||||
list when something goes wrong, such as a networking issue."
|
||||
(let ((gnus (false-if-exception (official-gnu-packages))))
|
||||
(or gnus '()))))
|
||||
|
||||
(define (find-package name)
|
||||
"Find GNU package called NAME and return it. Return #f if it was not
|
||||
found."
|
||||
@@ -189,7 +197,6 @@ found."
|
||||
(official-gnu-packages)))
|
||||
|
||||
(define gnu-package?
|
||||
(let ((official-gnu-packages (memoize official-gnu-packages)))
|
||||
(mlambdaq (package)
|
||||
"Return true if PACKAGE is a GNU package. This procedure may access the
|
||||
network to check in GNU's database."
|
||||
@@ -231,9 +238,9 @@ network to check in GNU's database."
|
||||
((gnu) #t)
|
||||
((non-gnu) #f)
|
||||
(else
|
||||
(and (member name (map gnu-package-name (official-gnu-packages)))
|
||||
(and (member name (map gnu-package-name (official-gnu-packages*)))
|
||||
#t)))))
|
||||
(_ #f))))))
|
||||
(_ #f)))))
|
||||
|
||||
|
||||
;;;
|
||||
|
||||
@@ -1237,13 +1237,6 @@ upstream status")
|
||||
'()
|
||||
str)))
|
||||
|
||||
(define official-gnu-packages*
|
||||
(mlambda ()
|
||||
"A memoizing version of 'official-gnu-packages' that returns the empty
|
||||
list when something goes wrong, such as a networking issue."
|
||||
(let ((gnus (false-if-exception (official-gnu-packages))))
|
||||
(or gnus '()))))
|
||||
|
||||
(define (check-gnu-synopsis+description package)
|
||||
"Make sure that, if PACKAGE is a GNU package, it uses the synopsis and
|
||||
descriptions maintained upstream."
|
||||
|
||||
Reference in New Issue
Block a user