[Vm-dev] [Cog] I want to be able to configure the executable name

Eliot Miranda eliot.miranda at gmail.com
Sat Feb 23 00:13:52 UTC 2013


Hi Ken,

On Fri, Feb 22, 2013 at 3:54 PM, Ken Causey <ken at kencausey.com> wrote:
>
> I'm (slowly) setting up the hosting infrastructure for the Squeak community
> and I'm trying to utilize somewhat more standard procedures and generally
> make things more easily repeatable where possible.
>
> One aspect of this is when installing software from source to use
> checkinstall to automatically create and install something that at least
> resembles a proper package for the given distribution (Debian in this case).
>
> It is useful on the community server(s) to have multiple versions of the
> Squeak VM installed so that if a particular image works better with a given
> VM, then it is available and easy to use.
>
> To make a long story short I would like to be able to, preferably at the
> configure step I think, to be able to specify an alternate name for the
> installed Cog squeak executable so that there is no clash with the classic
> Squeak Unix VM.
>
> Taking a quick look around it looks like there is an assumption in many
> places in the Cog Unix configuration that the executable is named Squeak.
> I'm willing to do some work to produce my desired change but I would
> appreciate any pointers to where I might start.  Perhaps I'm mistaken but it
> looks to me like platforms/unix/config/ in SVN is a combination of source
> and generated files.  If I'm not mistaken about that, some guidance in which
> files are properly source files and which are not along with how to
> regenerate the generated files would be greatly appreciated.

First, I've needed this for both the Newspeak VM and the special VM we
use at Cadence.
Second, I've failed to implement this by editing the files in
platforms/unix/config/.

The way I do it is with a script, e.g.
http://www.squeakvm.org/svn/squeak/branches/Cog/nscogbuild/unixbuild/bld/mvm.
 There-in you'll find this excrescence:

 if [ -f squeak ]; then
        mv squeak nsvm
        ex -u NONE "+g/squeak/s/squeak/nsvm/g" +w +q nsvm
  fi
  if [ -f bin/squeak ]; then
        mv bin/squeak bin/nsvm
        ex -u NONE "+g/squeak/s/squeak/nsvm/g" +w +q bin/nsvm
  fi

It gets run in the target install dir.

If that's not good enough for you (and you've been forewarned ;) ) then...

The input files that generate the configure script are all postfixed
with .in.  Don't try and edit anything else except perhaps
configure.ac.

The Makefile in platforms/unix/config/ makes configure.  So (on Linux)
one edits (in my case, flails around) the various .in files, runs make
in platforms/unix/config/, and then tests the resulting configure.
Rinse and repeat.

I see squeak hard-coded in configure.ac and I *don't* know where to
supply the name as a parameter to the files apparently operated on by
platforms/unix/config/Makefile.

> Also, is there any reason such a change would not be welcome in the
> canonical source?

None on my part.  I'd be very grateful.

>
> Thanks,
>
> Ken
>
> P.S. It occurs to me that I may be mistaken in thinking that only the
> executable (link?) in $prefix/bin/ is going to result in a crash and that
> the plugins and so on are installed in directories distinct from those used
> by the classic UNIX vm.  Is the problem more widespread than I think?
> Should I just give up on having them both in /usr/local/?

No, that should be fine.  The way Ian set it up one could even have
multiple VMs under the same root directory because the VM and plugins
actually live in

    rootdir/lib/squeak/VERSIONNUMBER

e.g. coglinux/lib/squeak/4.0-2692

So you could even do

    squeak/lib/cog/4.0-2692/{squeak,vm-display-X11,etc}
    squeak/lib/squeak/4..4.7-2357/{squeakvm,so.vm-display-X11,etc}

and have

    squeak/{squeak,cog} squeak/bin/{squeak,cog}

wrapper scripts.

But I think its easier to keep these distinct.

HTH and good luck!
-- 
best,
Eliot


More information about the Vm-dev mailing list