Subject: Windows builds and the build system rationale
From: Stephen Leake
Date: 16 Sep 2002 10:06:43 -0400
James Amundson <amundson@fnal.gov> writes:
> Hi,
>
> I meant to send these notes in response to some message in the many
> threads on building under Windows. I've forgotten which one. Anyway, I
> would like to explain a little bit about the rationale behind the way
> the build system installs files. Here are some of the requirements I
> had:
>
> 1) The installed layout should try to be as compatible as possible with
> the GNU standards, and those of various Unix incarnations.
>
> 2) The installed layout should support simultaneous installs of multiple
> versions.
>
> 3) The installed layout and build should support multiple lisp
> implementations simultaneously.
>
> 4) The installed files should be relocatable without requiring setting
> any environment variables to the extent possible. Where automatic
> detection is not possible, an environment variable should make manual
> relocation possible. The automatic relocation relies on the maxima or
> xmaxima script being installed in <prefix>/bin to determine <prefix>. If
> we need, for some reason, to make another assumption under windows,
> please say so.
>
> 5) The build should be runnable in place, i.e., before it is installed.
These are all very reasonable requirements.
However, the use of the term "script" is a problem. If it is assumed
that <prefix>/bin/maxima is a "script", that means we have to have a
standard scripting language. On Unix systems, the standard is /bin/sh.
On Windows, it is "the DOS box". The two are _not_ compatible.
It would be much simpler (from a cross-platform point of view) if
<prefix>/bin/maxima were an executable, that required no command line
arguments. Non-standard ways to run maxima could be supported via
command line options and/or environment variables.
> The current build system meets those requirements under unix-like
> systems. I don't know enough about windows to have any idea what to
> do there. I did my best to not avoid things I knew would cause new
> problems under Windows, but I did so with little guidance. If the
> people working on the windows packaging would like to offer some
> guidance, now would be the time.
The main problem is the use of a shell script. I believe it is
possible to accomplish all of the requirements above without shell
scripts (on both Windows and Unix). I suspect the shell scripts
actually provide much more functionality than these requirements
imply. It would be good to know what that extra functionality is, so
we know what we are giving up if we get rid of them.
At the moment, I can run command line maxima without a shell script by
executing (in a DOS box):
set MAXIMA_PREFIX=c:/programs/maxima-5.9
%MAXIMA_PREFIX%/lib/maxima/5.9.0rc1/binary-gcl/maxima.exe -eval (run)
This is acceptable for now. I'm not clear if xmaxima is this easy to
run.
Redoing this is a big job; I suggest that we are close enough at the
moment to release 5.9.0, and fix this in a better way next time around.
--
-- Stephe