Proposal for location of fasls



It's been mentioned previously that some of the share packages like
lapack and affine (previously) were trying to compile into the same
directories as the source.  However, in many situations, these
directories are not generally writable.

Andreas has modified the affine system so that the affine fasls are
saved in the directory binary-foo in *maxima-tempdir*.  This is much
better than what we have today.

However, there is no guarantee that different systems will always have
different filenames, so they'll overwrite each other.  Also,
*maxima-tempdir* defaults to the user's home directory, so fasls from
maxima subsystems will clutter the users home directory.

I propose that systems should place fasls not in *maxima-tempdir* but in
*maxima-userdir*, and they should be in some subdirectory, preferably
based on the actual source pathname.   Thus, affine would store it fasls
in *maxima-userdir*/share/affine/binary-foo and minpack goes in
*maxima-userdir*/share/minpack/binary-foo.

Let's add a function maxima-subsystem-binary-path:

    maxima-subsystem-binary-pathname &rest base

This creates the pathname *maxima-userdir*/<base>/binary-<lispname>

This can be used by systems to create the base directory in which to
store the compiled fasls.

Another useful utility is maxima-subsystem-source-directory which
returns the directory where the defsystem file lives.  This is useful in
defsystem files to set the source directory relative to the location of
the defsystem file itself.


Ray