[racket-dev] having zo files from two versions

From: Dan Liebgold (dan.liebgold at gmail.com)
Date: Thu Jan 8 13:46:03 EST 2015

Actually specifying two different compile root directories seem to work for
most things.

The exception is my json lib. I have it for 5.2.1 (since it wasn't included
in the standard dist). I'd prefer 6.1 to find the standard one, but it's ok
if it uses mine instead. The problem is that maybe it gets confused between
the two and give me this error:

link: module mismatch;
 possibly, bytecode file needs re-compile because dependencies changed
  importing module:
"/tmp/src-copy/danl/main/shared/src/plt/collects/dc2/target.rkt"
  exporting module:
"/tmp/src-copy/danl/main/shared/src/plt/collects/json/main.rkt"
  exporting phase level: 0
  internal explanation: variable not provided (directly or indirectly and
at the expected position)
  in: jsexpr->string31.12
  context...:
   /tmp/src-copy/danl/main/shared/src/plt/collects/dc2/target.rkt: [running
body]
   /tmp/src-copy/danl/main/shared/src/plt/collects/dc2/debug.rkt:
[traversing imports]
   /tmp/src-copy/danl/main/shared/src/plt/collects/dc2/listener.rkt:
[traversing imports]
   /tmp/src-copy/danl/main/shared/src/plt/collects/dc2/main.rkt:
[traversing imports]




On Thu, Jan 8, 2015 at 8:09 AM, Matthew Flatt <mflatt at cs.utah.edu> wrote:

> I see. If you compile with v5.2.1 first, then it puts files immediately
> in "compiled", and those will be found by v6.1.
>
> If you compile v6.1 first, then the files go in a subdirectory of
> "compiled", and they won't interfere with v5.2.1, while v6.1 will
> continue to find the files in the subdirectory. That's what I tried, so
> I didn't think of the problem with the other order.
>
> Were you able to solve this by compiling with v6.1 first? Or some other
> approach?
>
> At Tue, 6 Jan 2015 15:04:40 -0800, Dan Liebgold wrote:
> > Ok, that seems to be exactly what I'm looking for -- however I tried it
> and
> > it eventually seems to wind up using just the "compiled" path during raco
> > setup.
> >
> > Example output is here (I've echoed PLTCOMPILEDROOTS at the top, and note
> > this is under windows): http://pasterack.org/pastes/45913
> >
> > Is that enough context to see the issue?
> >
> > On Tue, Jan 6, 2015 at 11:58 AM, Matthew Flatt <mflatt at cs.utah.edu>
> wrote:
> >
> > > At Tue, 06 Jan 2015 14:14:22 -0500, Neil Van Dyke wrote:
> > > > Dan Liebgold wrote on 01/06/2015 02:00 PM:
> > > > > What is a straightforward way to designate the "compiled"
> directory to
> > > > > look for zo files in that can be based on the Racket version?  I'd
> > > > > like to have Racket 5.2.1 and 6.1 running in parallel to aid in
> > > > > upgrading our version.
> > > > > Thanks!
> > > >
> > > > I'd like for this to be the default behavior for Racket.
> > > >
> > > > One possible way: Insert a directory level between the `compiled`
> > > > directory and its contents, with the directory named with the Racket
> > > > version number with which the code is compiled.  Only that Racket
> > > > version will run that compiled code.
> > >
> > > Although it's not the default, you can get that behavior by setting the
> > > `PLTCOMPILEDROOTS` environment variable to
> > >
> > >  compiled/@(version):
> > >
> > > The trailing ":" allows compiled files to be found in "compiled" in the
> > > installation, while newly generated ".zo" files are put in a
> > > version-specific subdirectory.
> > >
> > > See also
> > >
> > >  http://lists.racket-lang.org/dev/archive/2012-September/010386.html
> > >
> > >
> >
> >
> > --
> > Dan Liebgold    [dan.liebgold at gmail.com]
>



-- 
Dan Liebgold    [dan.liebgold at gmail.com]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/dev/archive/attachments/20150108/627055fb/attachment.html>

Posted on the dev mailing list.