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

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

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

Ken Causey-3
 
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.

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

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/?
Reply | Threaded
Open this post in threaded view
|

Re: [Cog] I want to be able to configure the executable name

Eliot Miranda-2
 
Hi Ken,

On Fri, Feb 22, 2013 at 3:54 PM, Ken Causey <[hidden email]> 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
Reply | Threaded
Open this post in threaded view
|

Re: [Cog] I want to be able to configure the executable name

Mariano Martinez Peck
 
I know it doesn't help, but with the Pharo infrastructure (using CMake and CMakeVMMaker), you can very easily change binary's name. In fact, we already use different names for different configurations (Stack, CogVM, CogMT, iOSVM, etc...).

Best, 

On Fri, Feb 22, 2013 at 9:13 PM, Eliot Miranda <[hidden email]> wrote:

Hi Ken,

On Fri, Feb 22, 2013 at 3:54 PM, Ken Causey <[hidden email]> 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



--
Mariano
http://marianopeck.wordpress.com