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

Re: OOC Package Tool: Repositories



Ian Rae <ianrae@istar.ca> writes:

> ----------
> > From: Michael van Acken <acken@vanacken.do.uunet.de>
> > To: ooc-list@informatik.uni-kl.de
> > [..]
> > With a repository, the placement of files is fixed.  The files for a
> > module `foo.bar.zap' can be found at these places:
> > 
> >   source file  : <rep-root>/src/foo/bar/zap.Mod
> >   symbol file  : <rep-root>/sym/foo/bar/zap.Sym
> >   object files : <rep-root>/obj/foo/bar/zap.*
> >   documentation: <rep-root>/doc/foo/bar/zap.html
> > 
> 
> These leads to foo's files being spread across five directories
> (including _pkg).  It would be "cleaner" to put everything under
> <rep-root>/foo.  This would also allow two packages to have
> (unrelated) modules with the same name without conflict.  And it
> would allow two versions of the same package to be installed,
> presumably because some projects need the older version.

Could it be that you are mixing the terms "repository" and "package"?
A repository holds installed files, a package holds source code that
is installed into a repository.  Except for package meta data (read:
OPTIONS and PRAGMA variables) in some package related subdirectory
(the _pkg/ you mentioned), there is no connection between the two.

Module names, like `foo.bar.zap', have no relation with package names,
although my very first mail said something else.  I hoped that the
second posting cleared some of the mess I created with the first one
;-)  Here is the relevant quote:

MVA> Hierarchical module names and packages have no connection whatsoever,
MVA> although I messed that up in my first mail.  IMO a package is a means
MVA> of distributing a set of modules, together with some simple mechanism
MVA> to get the modules installed.  A hierarchical namespace is just a way
MVA> to reduce the chance that modules from different packages step on each
MVA> others toes (names), and, more importantly, to give structure to a
MVA> larger number of modules.
MVA> 
MVA> A package can populate any part of the module namespace.  On the other
MVA> hand, a well behaved package called "foo-bar-7.4.1" should either
MVA> contain a module `foo.bar' or a set of modules `foo.bar.*'.

The reason why I don't want to mix the two concepts is simple.  E.g.,
I would like to have a name space for `Channel' implementations.  For
example, the bzip2 compression channel would be installed into a
module `Channel.Bzip2', where also the standard channels from the OOC
core library and other channel implementations are located.

Besides, a clear separation between package and repository should make
many things much simpler: implementation, documentation, explanation,
and the like.

-- mva