[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