check-available-binaries: Use 'substitutable-paths'.

* build-aux/check-available-binaries.scm: Rewrite to use 'substitutable-paths'
  instead of 'substitution-oracle'.  The latter does more than we need, and it
  no longer check the substitutability of valid items, which is not what we
  want.  Use 'lset-difference' instead of iterating over the items.
This commit is contained in:
Ludovic Courtès 2015-07-21 22:28:20 +02:00
parent e9ade3eeef
commit e348eaaf31

View file

@ -26,7 +26,8 @@
(gnu packages emacs)
(gnu packages make-bootstrap)
(srfi srfi-1)
(srfi srfi-26))
(srfi srfi-26)
(ice-9 format))
(with-store store
(parameterize ((%graft? #f))
@ -38,19 +39,15 @@
%bootstrap-tarballs <>)
'("mips64el-linux-gnuabi64")))
(total (append native cross)))
(define (warn item system)
(format (current-error-port) "~a (~a) is not substitutable~%"
item system)
#f)
(set-build-options store #:use-substitutes? #t)
(let* ((substitutable? (substitution-oracle store total))
(result (every (lambda (drv)
(let ((out (derivation->output-path drv)))
(or (substitutable? out)
(warn out (derivation-system drv)))))
total)))
(when result
(format (current-error-port) "~a packages found substitutable~%"
(length total)))
(exit result)))))
(let* ((total (map derivation->output-path total))
(available (substitutable-paths store total))
(missing (lset-difference string=? total available)))
(if (null? missing)
(format (current-error-port) "~a packages found substitutable~%"
(length total))
(format (current-error-port)
"~a packages are not substitutable:~%~{ ~a~%~}~%"
(length missing) missing))
(exit (null? missing))))))