racket-index: fix document links for layered installations
When a layer renders new documentation that refers to a previous layer, the redirection script was not generated as needed to reach the previous layer. The documentation currently implements less sharing that would be possible across layers. For each installation layer, `raco setup` duplicates the documentation database in "docindex.sqlite", and it duplicates the search index, and it duplicates the local-redirection index. That duplication avoids having to join across an an arbitrary number of SQLite databases or chain the search and local-redirection indexes.
This commit is contained in:
parent
dfbb7040aa
commit
a40bfc5204
|
@ -545,6 +545,10 @@ Optional @filepath{info.rkt} fields trigger additional actions by
|
|||
@item{@racket['no-search] : Build the document without a search
|
||||
box.}
|
||||
|
||||
@item{@racket['every-main-layer] : With @racket['main-doc],
|
||||
indicates that the document should be rendered separately
|
||||
at every installation layer (see @secref["layered-install"]).}
|
||||
|
||||
]
|
||||
|
||||
The @racket[_category] list specifies how to show the document in
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
#lang info
|
||||
|
||||
(define scribblings
|
||||
'(("start.scrbl"
|
||||
(main-doc-root depends-all-main no-depend-on) (omit))
|
||||
("search.scrbl" (depends-all-main no-depend-on) (omit) "search" 1 10)
|
||||
("local-redirect.scrbl" (depends-all-main no-depend-on) (omit) "local-redirect" 1 10)
|
||||
'(("start.scrbl" (main-doc-root depends-all-main no-depend-on) (omit))
|
||||
("search.scrbl" (depends-all-main no-depend-on every-main-layer) (omit) "search" 1 10)
|
||||
("local-redirect.scrbl" (depends-all-main no-depend-on every-main-layer) (omit) "local-redirect" 1 10)
|
||||
("license.scrbl" () (omit))
|
||||
("acks.scrbl" () (omit))
|
||||
("release.scrbl" (depends-all-main no-depend-on) (omit))))
|
||||
|
|
|
@ -284,7 +284,8 @@
|
|||
[i (in-naturals)])
|
||||
(define name (extract-name e))
|
||||
(fprintf o (if (zero? i) "\n" ",\n"))
|
||||
(fprintf o " [~s, ~s]" name (if user?
|
||||
(fprintf o " [~s, ~s]" name (if (or user?
|
||||
(not (immediately-in-doc-dir? e)))
|
||||
(url->string (path->url e))
|
||||
(format "../~a" name))))
|
||||
(fprintf o "];\n\n")
|
||||
|
@ -305,4 +306,8 @@
|
|||
(js-addition (string->url "local-user-redirect.js"))
|
||||
(js-addition
|
||||
(string->bytes/utf-8 search-code))))
|
||||
null)))
|
||||
null)))
|
||||
|
||||
(define (immediately-in-doc-dir? path)
|
||||
(define-values (base name dir?) (split-path path))
|
||||
(equal? (path->directory-path (find-doc-dir)) base))
|
||||
|
|
|
@ -23,12 +23,13 @@
|
|||
(memq 'main-doc flags)
|
||||
(pair? (path->main-collects-relative dir)))
|
||||
(and main?
|
||||
;; check for existing directory in search path before
|
||||
;; assuming the main doc directory
|
||||
(or (for/or ([dir (get-doc-search-dirs)])
|
||||
(define p (build-path dir name))
|
||||
(and (directory-exists? p)
|
||||
p))
|
||||
;; check for existing directory in search path (unless
|
||||
;; 'every-main-layer) before assuming the main doc directory
|
||||
(or (and (not (memq 'every-main-layer flags))
|
||||
(for/or ([dir (get-doc-extra-search-dirs)])
|
||||
(define p (build-path dir name))
|
||||
(and (directory-exists? p)
|
||||
p)))
|
||||
(build-path (find-doc-dir) name)))]
|
||||
[else
|
||||
(and (not (eq? 'never user-doc-mode))
|
||||
|
|
|
@ -158,7 +158,8 @@
|
|||
(define (scribblings-flag? sym)
|
||||
(memq sym '(main-doc main-doc-root user-doc-root user-doc multi-page
|
||||
depends-all depends-all-main depends-all-user
|
||||
no-depend-on always-run keep-style no-search)))
|
||||
no-depend-on always-run keep-style no-search
|
||||
every-main-layer)))
|
||||
(define (validate-scribblings-infos infos)
|
||||
(define (validate path [flags '()] [cat '(library)] [name #f] [out-count 1] [order-hint 0])
|
||||
(and (string? path) (relative-path? path)
|
||||
|
|
Loading…
Reference in New Issue
Block a user