Fix latex doc generation

This commit is contained in:
Kevin Tew 2010-07-24 08:56:35 -06:00
parent 57d3dd7df7
commit 1111c48fdb

View File

@ -286,7 +286,7 @@
(and (info-need-run? i)
(begin
(when (info-need-in-write? i)
(write-in/info i)
(write-in/info latex-dest i)
(set-info-need-in-write?! i #f))
(set-info-deps! i (filter info? (info-deps i)))
(set-info-need-run?! i #f)
@ -319,7 +319,10 @@
(lambda (i)
(say-rendering i)
(s-exp->fasl (serialize (info-doc i))))
(lambda (i r outstr errstr) (update-info i (deserialize (fasl->s-exp r))))
(lambda (i r outstr errstr)
#;(printf "~a" outstr)
#;(printf "~a" errstr)
(update-info i (deserialize (fasl->s-exp r))))
(lambda (i errmsg outstr errstr) (parallel-do-default-error-handler i errmsg outstr errstr) #f)
(define-worker (build-again!-worker2 workerid verbosev latex-dest)
(define (with-record-error cc go fail-k)
@ -344,8 +347,7 @@
(when infos
(make-loop #t 0)
;; cache info to disk
(unless latex-dest
(for ([i infos] #:when (info-need-in-write? i)) (write-in/info i)))))
(for ([i infos] #:when (info-need-in-write? i)) (write-in/info latex-dest i))))
(define (make-renderer latex-dest doc)
(if latex-dest
@ -390,6 +392,12 @@
[(memq 'multi-page (doc-flags doc)) (doc-dest-dir doc)]
[else (build-path (doc-dest-dir doc) "index.html")]))
(define (sxref-path latex-dest doc file)
(cond [latex-dest
(let-values ([(base name dir?) (split-path (doc-src-file doc))])
(build-path latex-dest (path-replace-suffix name (string-append "." file))))]
[else (build-path (doc-dest-dir doc) file)]))
(define (can-build? only-dirs doc)
(or (not only-dirs)
(ormap (lambda (d)
@ -461,9 +469,9 @@
(define ((get-doc-info only-dirs latex-dest auto-main? auto-user?
with-record-error setup-printf)
doc)
(let* ([info-out-file (build-path (or latex-dest (doc-dest-dir doc)) "out.sxref")]
[info-in-file (build-path (or latex-dest (doc-dest-dir doc)) "in.sxref")]
[stamp-file (build-path (or latex-dest (doc-dest-dir doc)) "stamp.sxref")]
(let* ([info-out-file (sxref-path latex-dest doc "out.sxref")]
[info-in-file (sxref-path latex-dest doc "in.sxref")]
[stamp-file (sxref-path latex-dest doc "stamp.sxref")]
[out-file (build-path (doc-dest-dir doc) "index.html")]
[src-zo (let-values ([(base name dir?) (split-path (doc-src-file doc))])
(build-path base "compiled" (path-add-suffix name ".zo")))]
@ -618,12 +626,10 @@
#f
#f)])
(when need-out-write?
(unless latex-dest
(render-time "xref-out" (write-out/info info sci)))
(render-time "xref-out" (write-out/info latex-dest info sci))
(set-info-need-out-write?! info #f))
(when (info-need-in-write? info)
(unless latex-dest
(render-time "xref-in" (write-in/info info)))
(render-time "xref-in" (write-in/info latex-dest info))
(set-info-need-in-write?! info #f))
(when (or (stamp-time . < . aux-time)
@ -663,9 +669,8 @@
(time expr)
(collect-garbage) (collect-garbage) (printf "post ~a ~s\n" what (current-memory-use)))))
(define (load-sxrefs doc vers)
(define dest-dir (doc-dest-dir doc))
(match (list (load-sxref (build-path dest-dir "in.sxref")) (load-sxref (build-path dest-dir "out.sxref")))
(define (load-sxrefs latex-dest doc vers)
(match (list (load-sxref (sxref-path latex-dest doc "in.sxref")) (load-sxref (sxref-path latex-dest doc "out.sxref")))
[(list (list in-version undef deps-rel searches dep-dirs) (list out-version sci provides))
(unless (and (equal? in-version (list vers (doc-flags doc)))
(equal? out-version (list vers (doc-flags doc))))
@ -686,7 +691,7 @@
(path-element->bytes f)))))
(delete-file (build-path dir f)))))))
(define (load-doc-sci dest-dir)
(cadr (load-sxref (build-path (or latex-dest dest-dir) "out.sxref"))))
(cadr (load-sxref (sxref-path latex-dest doc "out.sxref"))))
(define doc (if (info? info ) (info-doc info) info))
(define renderer (make-renderer latex-dest doc))
(with-record-error
@ -701,7 +706,7 @@
(info-deps->doc-dest-dir info)
(load-doc-sci (doc-dest-dir doc))
(info-provides info))
(load-sxrefs doc vers)))
(load-sxrefs latex-dest doc vers)))
(parameterize ([current-directory (doc-src-dir doc)])
(let* ([v (render-time "load" (load-doc/ensure-prefix doc))]
@ -727,11 +732,9 @@
(doc-src-file doc)))
(when in-delta?
(unless latex-dest
(render-time "xref-in" (write-in vers doc undef ff-deps-rel ff-searches ff-dep-dirs))))
(render-time "xref-in" (write-in latex-dest vers doc undef ff-deps-rel ff-searches ff-dep-dirs)))
(when out-delta?
(unless latex-dest
(render-time "xref-out" (write-out vers doc sci defs))))
(render-time "xref-out" (write-out latex-dest vers doc sci defs)))
(cleanup-dest-dir doc)
(render-time
@ -776,31 +779,32 @@
(parameterize ([current-namespace p])
(call-in-nested-thread (lambda () (dynamic-require mod-path 'doc)))))))
(define (write- vers doc name data)
(let* ([filename (build-path (doc-dest-dir doc) name)])
(define (write- latex-dest vers doc name data)
(let* ([filename (sxref-path latex-dest doc name)])
(when (verbose) (printf " [Caching to disk ~a]\n" filename))
(make-directory* (doc-dest-dir doc))
(with-compile-output filename
(lambda (out tmp-filename)
(write-bytes (s-exp->fasl (append (list (list vers (doc-flags doc))) data)) out)))))
(define (write-out vers doc sci provides)
(write- vers doc "out.sxref"
(define (write-out latex-dest vers doc sci provides)
(write- latex-dest vers doc "out.sxref"
(list sci
(serialize provides))))
(define (write-out/info info sci)
(write-out (info-vers info) (info-doc info) sci (info-provides info)))
(define (write-out/info latex-dest info sci)
(write-out latex-dest (info-vers info) (info-doc info) sci (info-provides info)))
(define (write-in vers doc undef rels searches dest-dirs)
(write- vers doc "in.sxref"
(define (write-in latex-dest vers doc undef rels searches dest-dirs)
(write- latex-dest vers doc "in.sxref"
(list (serialize undef)
rels
(serialize searches)
dest-dirs)))
(define (write-in/info info)
(write-in (info-vers info)
(define (write-in/info latex-dest info)
(write-in latex-dest
(info-vers info)
(info-doc info)
(info-undef info)
(info-deps->rel-doc-src-file info)