Currently there are a few headaches when one tries to keep concurrent copies of DrScheme on one machine, and I'd like to eliminate some of them. Essentially, problems of one sort or another arise when two different copies of DrScheme both try to "own" the same set of generated files. The end result is that one copy of DrScheme ends up reading files generated by the other, and the results become inconsistent (usually a compilation error or inconsistent documentation).
Currently, I know of four categories of files generated by DrScheme: the user preferences file, the planet cache, user-specific Scribble documentation, and ZOs for user programs (including, and especially, planet development links). The user preferences file is fine -- I really only want one copy of that. The planet cache can be dealt with: the PLTPLANETDIR environment variable overrides its default location. This is the kind of configuration I am looking for in general. Currently, generated Scribble documentation files go in a default (platform-specific) place, and cannot be overridden. As a result, if I have two copies of 4.2.1.5, but with different planet packages installed, my documentation will reflect only one or the other; Help Desk in one of them will be wrong. I'd like control over Scribble index placement similar to the PLTPLANETDIR environment variable. Generated files (e.g. compiled/ and doc/ subdirectories) for user code go in whatever directory the user code lives in. Again, as a result, if I have code for a planet package, I can try it out in one copy of DrScheme, but the minute I load another, it tries to read the .zo files generated by the other and runs into problems (a compilation error if different version numbers, goodness knows what behavior if the same). If there were an option to store these files in a user-specific location (e.g. store all .zos in ~/.plt-scheme/compiled, or at least store development link generated files in ~/.plt-scheme/planet/devel), development code could be reusable across different copies of DrScheme. It seems to me that resolving the issue for Scribble files, at least, should be straightforward. We could institute either a PLTSCRIBBLEDIR variable for placement of the Scribble index, or PLTUSERDIR that overrides the common parent directory of Scribble and Planet installation. I prefer the latter, since it would generalize to include any other kind of generated file we come up with in the future (or any current ones I've forgotten about). I would also like to pick a conventional place in the PLT tree to store this PLTUSERDIR at (similar to <PLT>/src/build for the results of 'make') and set up a 'svn:ignore' property for it. That way, just as removing an old PLT trunk checkout cleans up its build/ tree, it would also clean up planet/ and doc/ trees that are no longer needed. The development link issue is trickier -- it's not a matter of just setting up one environment variable to replace one (or maybe two, or some small fixed N) hard-coded strings, but rather changing a compilation policy for a subset of code. I don't have a concrete proposal here, but it's been brought up before and is a headache so I wanted to bring up the issue for discussion. Does anyone have a good idea how to handle this one? That's a bunch of issues, and three proposals: (1) set up PLTUSERDIR to control placement of Planet and Scribble generated files, (2) pick a conventional place in the PLT tree for users to store it who can and wish to do so, and (3) longer term, think about a way to fit development link code into this story. So -- what do the rest of you developer folks think? Carl Eastlund _________________________________________________ For list-related administrative tasks: http://list.cs.brown.edu/mailman/listinfo/plt-dev