New Maxima directory structure



Hi!

Since there is some uncertainty about new  Maxima 5.9
directory structure I want to share my ideas on the
subject. Actually they are not so different from
ones already implemented by James in new build
system but anyway. Please, feel free to disagree :-)
One of the most important ideas is to keep files for
different versions. Some concrete directories below
are vary from distro to distro or Unix version.
For the sake of definiteness I present the how they
look like on my Linux system.

1)  Executables

   /usr/bin/                (%_bindir)

main mxaima script and all other miscellaneous executables.
Usually wrapper scripts to  some real executables. If we really
want different executables for different Maxima versions we
can make scripts maxima<ver> and link maxima to
maxima<ver>.

2) Real executables

   /usr/lib/maxima/<ver>/              (%_libexecdir)
   /usr/lib/maxima/<ver>/<lisp>

(on my system libexec is mapped to lib).

3) Share library files

I definitely don't want to mix these files
with others so we have two options.

   /usr/share/maxima/<ver>/             (%_datadir)

In this case we reserve this directory to
Maxima share library files _only_.  But If we want
to install any other files into /usr/share/maxima/<ver>/
(e.g. emacs modes see below) then I propose

   /usr/share/maxima/<ver>/sharelib/

4) Emacs *.el and related files

Once again we have two options. We can either
use some standard directory for elisp files

   /usr/share/emacs/site-lisp/maxima/
   (or /usr/share/emacs/site-lisp/maxima/<ver>)

or Maxima share directory

   /usr/share/maxima/<ver>/emacs/

In either case this directory must be added to the
directories where emacs can find them.

5) Documentation

   /usr/share/doc/maxima/<ver>         (%_docdir)
      or
   /usr/share/doc/maxima-<ver>

with subdirs ./emaxima, ./html and others.

6) Info and man pages should go into standard directories

   /usr/share/info                   (%_infodir)
   /usr/share/man                   (%_mandir)

7) Some other miscellaneous directories

   /usr/lib/menu                (%_menudir)
      - menu entries

   /usr/share/texmf/tex/latex/exmaxima
     - TeX style files.

   /usr/share/icons           (%_iconsdir)
      - icons.  BTW I could contribute .xpm icons but
they are modeled after icons of commercial Macsyma
icons (red M with the blue integral sign). Is it OK?
I don't think they copyrighted them but if any
trouble could expected I can make new ones.

Finally some more proposals concerning new build system.

It seems to me that contrib is not necessary in the Maxima
share library. Maybe it is better to place recently
contributed files directly in the appropriate subdirectory
of share library.

I think that it is necessary to add lisp initialization file
   /usr/lib/maxima/<ver>/gcl/init.lisp
to GCL version of Maxima. And execute this file every
time GCL Maxima starts. This file should preallocate
some memory since without it GCL is terribly slow.
I hope that such GCL behavior will be improved
in the future but some memory preallocation is highly
desirable. In any case init.lisp can be empty.
Afterthought: the best way is to check for
   /usr/lib/maxima/<ver>/gcl/init.lisp
and execute it is exists.

Best wishes,

Vadim





--
    Vadim V. Zhytnikov

     <vvzhy@mail.ru>
   <vvzhy@td.lpi.ac.ru>
    <vvzhy@yandex.ru>