When a tag is serializable but not `write'--`read' invariant,
then it needs to be serialized and deserialized.
Also, clarify and check in `tag?' that a tag should be
serializable.
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.
corner of the definitions window, based on the information that check
syntax computes
This commit contains two separate changes to make this work:
- adding a new renderer, based on the text renderer, that
pulls out the contents of the blue boxes and saves them
in the doc/ directories (specifically in the files named
contract-blueboxes.rktd)
- extend check syntax to use and display the information
build by the new renderer
them and use that to order 'raco setup'
The dep-list.rkt file contains code that reads .dep files
and computes the topological sort; this result is expected
to be copied over into setup-unit.rkt
This reverts commit 89581f5e21.
Putting "drscheme" last is useful because it avoids having two
places try to compile "drracket" and "drscheme" at the same time,
in which case the "drscheme" place gets stuck waiting on the
"drracket" place. Moving "drscheme" to the end is a hack, but
it improves the build time for 2-4 cores.
The change allows `raco setup' to reach a fixed point under Windows
for "redex/examples/cont-mark-transform".
I'm more and more convinced that `normal-case-path' is never
a good idea. In some cases, maybe it's good to recognize a
few extra equivalences, but it works badly when paths are taken
from many sources and are not consistently normalized. It's better
to just preserve case.
For basic normalization, `simplify-path' is the right choice. Use
inode identity (as `raco setup' does) when anything stronger
than `simplify-path' is needed.
The format previously included relative paths in the syntax
of the platform used to run `raco setup'. While a "cache.rktd"
built on Unix would work for Windows, the reverse would not
be true. Also, `raco setup' under Windows would get confused
because it would arrive at different relative paths for the
same collection (e.g., "drracket/private" and "drracket\\private").
The portable representation of relative paths is also
normalized.
A "cache.rktd" file still has absolute paths for Planet packages
or links installed with `raco link', but that's not a problem for
packaging a distribution with a portable "cache.rktd".
Also, `raco setup' cleans "cache.rtkd" by removing collections
that are omitted and by not including collections that have no
"info.rkt"/"info.ss" file.
`setup/private/path-utils'.
The API is a little different: instead of getting the alist and the
path, there's a curried function that gets the alist and produces a
function to do the substitutions.
including adding some uses of `with-module-read-parameterization'
so that `read-accept-lang' is set right anyway; still, so many
many places just set `read-accept-reader' to #t that making
`read-accept-lang' #f by default looks like too big of an
incompatibility
which solves the problem of forgetting a Planet-based tool when a
new Planet-based tool is installed (if the old tool used "info.ss"
instead of "info.rkt")
--- a reversal of opinion from my earlier commit; the problem
with syntactic simplification is that it may not refer to the
same file, due to soft links; given that true normalization is
impossible, simplify-path and simple-form-path provide a good
compromise between preserving paths as given and exanding
soft links as neede
A mixture of filesystem-insensitive `simplify-path', filesystem-sensitive
`simplify-path', and `normalize-path' was used in different parts
of `raco setup'. This causes a mismatch, for example, when a Planet
hard link uses a path that is a symlink.
In general, I think filesystem-insensitive simplification (i.e., syntactic
simplification) is the right choice for comparing paths, so that is now
used consistently.