raco setup: move doc dependency and duplicate checking to database

This change makes document building --- and specially incremental
document building --- more scalable. The global duplicate-definition
check is handled by a database query, for example.

original commit: 9888fac99e32131a6e848f30c40024abb893a9b9
This commit is contained in:
Matthew Flatt 2012-11-21 16:15:17 -07:00
parent b5865f2f79
commit f2c9297253
2 changed files with 16 additions and 11 deletions

View File

@ -746,7 +746,10 @@
(let ([parent (collected-info-parent (part-collected-info sec ri))]) (let ([parent (collected-info-parent (part-collected-info sec ri))])
(if parent (if parent
(collected-info-info (part-collected-info parent ri)) (collected-info-info (part-collected-info parent ri))
(collect-info-ext-ht (resolve-info-ci ri)))) (let ([ci (resolve-info-ci ri)])
;; Force all xref info:
((collect-info-ext-demand ci) #f ci)
(collect-info-ext-ht ci))))
(lambda (k v) (lambda (k v)
(when (and (pair? k) (eq? 'index-entry (car k))) (when (and (pair? k) (eq? 'index-entry (car k)))
(set! l (cons (cons (cadr k) v) l))))) (set! l (cons (cons (cadr k) v) l)))))

View File

@ -42,8 +42,9 @@
[load-source (lambda (src ci) [load-source (lambda (src ci)
(parameterize ([current-namespace (parameterize ([current-namespace
(namespace-anchor->empty-namespace here)]) (namespace-anchor->empty-namespace here)])
(let ([v (src)]) (let ([vs (src)])
(when v (send renderer deserialize-info v ci #:root root-path)))))] (for ([v (in-list (if (procedure? vs) (vs) (list vs)))])
(when v (send renderer deserialize-info v ci #:root root-path))))))]
[ci (send renderer collect null null fp [ci (send renderer collect null null fp
(lambda (key ci) (lambda (key ci)
(define src (demand-source key)) (define src (demand-source key))
@ -57,14 +58,15 @@
;; Xref reading ;; Xref reading
(define (xref-index xrefs) (define (xref-index xrefs)
(filter (define ci (resolve-info-ci (xrefs-ri xrefs)))
values ;; Force all xref info:
(hash-map ((collect-info-ext-demand ci) #f ci)
(collect-info-ext-ht (resolve-info-ci (xrefs-ri xrefs))) ;; look for `index-entry' keys:
(lambda (k v) (for/list ([(k v) (in-hash (collect-info-ext-ht ci))]
(and (pair? k) #:when
(eq? (car k) 'index-entry) (and (pair? k)
(make-entry (car v) (cadr v) (cadr k) (caddr v))))))) (eq? (car k) 'index-entry)))
(make-entry (car v) (cadr v) (cadr k) (caddr v))))
;; dest-file can be #f, which will make it return a string holding the ;; dest-file can be #f, which will make it return a string holding the
;; resulting html ;; resulting html