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.
Needed so that `raco setup' doesn't rebuild documents as it
decides, say, that the "games/cards" document depends on
"games/scribblings\\games.scrbl" instead of
"games/scribblings/games.scrbl".
Has this been needed for a while, or did it somehow
become needed with recent changes to `raco setup' to
support `raco link'?
Although the ".plt" format is going to be replaced, the format is
currently viable for distributing collections, and I have wanted
a raw `unpack' command for a while. It was useful today to fix
problems with `raco pack' and collection links.
- simpler and more reliable break protocol
- use logging instead of `eprintf' for non-exception errors
- avoid runtime code duplication in parallel-do macro
- fix some non-tail calls that should be tail calls
- print relevant place in "making" lines
- minor source formatting
`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.
`setup/path-relativize'.
`setup/path-relativize' is freed from a bunch of things that were due to
historical baggage, but some remain. (Also, update its docs.)