On Tue, Sep 30, 2008 at 12:23:17AM +0200, Christian Jaeger wrote :
But then you can't choose which Gambit binary to use by setting PATH anymore.
Well, actually, I would suggest *not* having several instances of gambit. More on this below.
Environment variables are the best way to choose between alternatives; unix environment variables are what |make-parameter| is in Scheme. It allows for parametrization of programs without having to pass data lexically (for which the pendant in unix would be program arguments), and without having to do it by side-effecting globals (which in unix would be changing the symlinks you mention above).
The only program I'm aware of that works this way is the autotools (which I don't like at all).
What tradition exactly? You mean using $prefix/{lib,doc,share,info}? For example apache had (maybe still has, dunno) the tradition to do it like Gambit by default, i.e. put all of it's files into one common subdirectory (the advantage being that you can easily uninstall the whole program by just deleting one directory -- a bit like OS X is doing it now I think, btw). If you start creating subdirectories and thus deviate from standard places anyway (i.e. once you feel the need to add library paths to the ld config to avoid having to set LD_LIBRARY_PATH), it doesn't matter anymore?
As far as I know, that's the case for apache 1.3 and apache 2. That's a big version difference. In that sense, I would personnally (by default, though configurable) have just one directory per X.Y version. All X.Y.* would be in the same place, for this is bugfixes or improvements that happen in a minor version upgrade. Your approach is much like what Gobolinux does though, but then, it's a layer above the "standard" one.
What does it solve for you?
A huge script and makefile can be avoided to make the installation compliant with what is expected by all BSD users (where files go, only one version at time of the software), and I do believe it would help us have an up to date version of gambit in software distributions of most OSs (which of your Linux offers 4.2.9 or even 4.2.8 ? Not Debian/Ubuntu)
What is the conflict there?
gsi and gsc are names already taken for binaries.
(a) move files to different installation places in the filesystem, i.e. changing the exec and linker paths. (b) change the include (sub-)paths
Yes.
Then, it's just a matter of a sed one liner to fix all the programs
Not quite, if you don't know in advance whether your program is going to be used with a Gambit version from before or after your changes.
Minor update: the newer version can just do better than the previous one. Major update: new path (and since it's a major update, *you* are responsible for checking the consistency of your code with respect to the update).
Christian.
Adrian