[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Proposal: An OOC Package Tool



At 05:47 PM 5/4/99 +0200, Michael van Acken wrote:

>Oberon was designed as an extensible from the very beginning.  But
>extending an installation by adding new modules and programms has
>always been a very low-level operation.  This process can be made much
>more user friendly.  Here is an outline of an OOC Package Tool,
>tentatively called "oopt" for now.  I would like to know if anyone
>supports the idea of such a beast.

This is an interesting proposal which should simplify the maintenance of
software packages. I don't know why this sort of thing is not already in
one of the existing Oberon systems.

[...]

>Packages are associated with meta information.  A package lists the
>names of other packages it depends on, or which it suggests to install
>first.  Additionally, after installing a package, it is sometimes
>necessary to provide information to the compiler how to use it,
>e.g. by listing external libraries that need to be linked in when
>using the package.

As with "make" it ought to be possible to consider the tools themselves as
packages. For example, a package may require a certain version of the
compiler, libtool, etc. Where a tool depends only on O2 source, it is
probably a simple matter for the tool to be fetched and compiled. I'm
thinking in particular of immature tools (like h2o), where functionality
might vary greatly between releases.

[...]

>Oberon-2's relationship to packages is, simply put, non existent.  The
>single flat namespace for modules sucks.  It is strange that a system
>designed for extensibility has no means to keep the complexity of
>managing extensions at an acceptable level.  Prefixing all modules of
>a package with a unique string is a step in the right direction, but
>at the same time it's only a half-hearted attempt.  There is still
>just a flat name space, and there is no way to associate packages with
>meta information as long as the compiler does not know anything about
>packages.

Blackbox has a subsystem naming scheme that prefixes module names with
strings. Sub-systems are stored in sub-directories (with the same name as
the prefix) of the Oberon root, and sub-directories within a sub-system
have particular uses. Eg.

  Doc   - documentation
  Rsrc  - resources (eg. dialogs, forms)
  Mod   - source code
  Sym   - symbol files
  Code  - object files

The compiler / run-time system understands the meanings of the directories.
Thus, if you get a TRAP in module SysFoo, the debugger looks in Sys/Mod to
find the source code to module Foo. It seems to work fairly well, but I
think the proposed scheme is probably more useful.

- Stewart