[racket] raco distribute has a problem with runtime paths on win32

From: Matthew Flatt (mflatt at cs.utah.edu)
Date: Wed Apr 30 18:11:59 EDT 2014

Now that we have packages, they provide a natural boundary. The
relative placement of files from different packages shouldn't matter,
since packages don't have a fixed installation location relative to
each other. So, I've changed `raco distribute` to preserve relative
locations only among files from the same package.

At Wed, 30 Apr 2014 12:56:01 -0600, Matthew Flatt wrote:
> At Wed, 30 Apr 2014 22:23:25 +0400, Dmitry Pavlov wrote:
> >  > Sometimes, that strategy ends up saving more information about the
> >  > source directories than you'd like to appear in an executable, such as
> >  > a user's directory name. We need some strategy to avoid that extra
> >  > information while preserving relative file locations when needed.
> > 
> > Yes, I noticed that too. There is certainly no need to save the full
> > directory structure (starting from C:\) to some "exts\\ert\\r0"
> > directory. Some deeper common ancestor should suffice (is the
> > directory structure needs to be saved at all)?
> In your example, the obstacle is that `raco dist` must include both
>  C:\program files\racket\share\pkgs\srfi-lite-lib\srfi\29\bundles
> and
>  C:\repo\era\rea\epm2004-booka\venus.rea
> in the distribution, and `raco dist` currently has no way of knowing
> whether the relative path from "bundles" to "venus.rea" is significant.
> For example, "bundles" might contain some non-Racket file with the
> relative path
>  ..\..\..\..\..\..\..\..\repo\era\rea\epm2004-booka\venus.rea
> where that relative path is expected to work after `raco dist` copies
> everything into place for the distribution.
> Of course, "bundles" doesn't contain such a relative path. Possibly,
> the fact that "bundles" is in the main installation and "venus.rea"
> isn't should be a clue for `raco dist`. Or maybe relative locations of
> runtime files should be assumed irrelevant unless a programmer
> explicitly declares otherwise.

Posted on the users mailing list.