Dear all,
I'm currently installing the CM3 distribution in a Windows
environment and have severe problems with the packaging
philosophy of Modula-3.
As far as I understand M3 modules belonging together are
grouped in the same directory residing under "pkg" in the
file system. This directory represents a "package".
E.g. the core system modules of Modula-3 reside in
"pkg/m3core" and below.
This means that packages are more or less a construct in
quake outside of the Modula-3 language itself (there is no
indication in a module to which package it belongs or what
packages it imports). This is dissimilar to packages in
Java, but seems to be very similar to the clusters in Eiffel
(where the location of classes is defined in configuration
files called LACE files but the clustering is a construct
outside of the Eiffel language).
My problem is as follows: On the one hand the CM3
distribution obviously assumes that all packages like
"binIO", "bitVector", "libm3" are top-level subdirectories
of "pkg". When rebuilding this works very well.
On the other hand the CM3 source distribution inserts
another structuring layer for those packages. E.g. the
"libm3" and "m3core" packages are put into a superpackage
called "m3-libs". This also reflects in the directory
structure where package "libm3" has path
"pkg/m3-libs/libm3".
Unfortunately when rebuilding the system, CM3 cannot cope
well with this structure. It will not find files probably
because the flat structure is encoded in the m3makefiles.
I have noticed the m3override-files but according to the
documentation using overrides prevents shipping.
I'm a complete rookie in quake, but I might manage the
adaptation of all the m3makefiles somehow. Nevertheless I
want to stay compatible with the rest of the M3 community.
So is there a universally agreed packaging structure for
Modula-3? If yes, we should ensure that every
implementation of M3 conforms to it (and that all quake
files are adapted accordingly).
If no, we should either invent a universal structure
(possibly similar to the one Java uses) or even better take
care that individual package structures can be easily put
into the quake files.
Note that I do _not_ propose that we should use qualified
module names like "Modula3.UserInterface.WinVBT" in
Modula-3. My opinion is that modules are still the top
level structure in Modula-3, but that we have to make the
packaging mechanism in quake so flexible that individual
repackaging is possible. The LACE-mechanism in Eiffel might
be a good guidance.
Any opinions on that?
Regards
Thomas
--
Dr. Thomas Tensi
sd&m AG, software design & management
Carl-Wery-Str. 42, 81739 Muenchen, Germany
Tel: +49 89 63812-313 Fax -220, http://www.sdm.de


|