Re: djblinux/djbos/"D. J. Bix"

"Nicholas E. Walker" <[email protected]> Mon, 23 Jun 2003 17:19:56 -0400
Newsgroups gmane.comp.djb.package
Message-ID <[email protected]>
On Mon, Jun 23, 2003 at 03:00:06PM -0400, Paul Jarc wrote:
> "Nicholas E. Walker" <[email protected]> wrote:
> > How about defining the set of directories living in / and what they
> > all do?
> 
> <URL:http://cr.yp.to/slash.html> would seem to be an effort in that
> direction.

Rephrased: in the reformulated system shall-we-call-it distribution what
directories would be in the root and what would their purposes be?
Presumably Paul does not have all of the directories and files listed in
cr.yp.to/slash.html extant in his /package-based system.

> > What are opinions about locating libraries?  A 'slashlib' or
> > 'slashlibrary' like slashcommand, or do they stay under /package?
> 
> They can stay in /package.  It's easy enough to refer to them by full
> pathnames.  Flattening the namespace requires more coordination among
> developers.
> 
> > What about making ports (e.g. Paul's sp-foreign) first-class citizens of
> > the sp hierarchy?
> 
> Stefan Karrmann registered text/gnu-ed-sk for his "port" of GNU ed.
> Is that the sort of thing you had in mind?  (The word "port" doesn't
> seem quite right to me.)

"Port" seems just as appropriate here as in the case of the BSDs.  Given
that code is being modified or wrappers are being generated, there is a
modification of the original package for the sake of compatibility.  Is
that not a port?

What I was intending was to clarify is how 'foreign' packages should
take a place when being integrated into the /package system.  Putting
everything under /package/misc/spf creates an irregular classification
for packages that seemingly should belong under e.g. /package/prog for
gcc.

That 'ed' is under /package/text and 'gcc' is under /package/misc/spf
indicates a lack of coherency and needless complexity.  

Let me rephrase my original question:

In /package, do 'foreign' packages belong integrated into the
classification system outlined by DJB or do they belong under a
secondary hierarchy?

I am asking this because the issue is unclear.  Does GNU ed belong under
/package/text, or should Stefan have submitted a patch to Paul for
sp-foreign?  Paul has created something of a divergent de facto
standard.  If Paul is doing the right thing by putting foreign packages
under a secondary hierarchy, it seems sensical to allocate
/package/ports for the purpose instead of using /package/misc/spf.

> > What about an extension to the slashpackage format along the lines of
> > making /package/..../command be a symlink to command-$(syst), allowing
> > for precompiled tarballs and the ability to serve heterogenous systems
> > from a single /package tree?
> 
> Have you read <URL:http://cr.yp.to/slashpackage/sharability.html>?

That document does not address the issue of distributing precompiled
packages.  I understand that some personalities on the list may be in
favor of compiling everything from source when installing on a new
system.  Let me tell you sometime about how much fun it is to natively
compile a kernel or GCC on the embedded hardware I work with.  What I
perhaps too briefly attempted to indicate for discussion was the
structuring of tarballs including object files and/or linked binaries.

Curtly pointing me at that document does not address this issue.  The
document does address sharing /packaged packages but not the issue of
distributing targeted objects.  Using the /shared hierarchy does not
make sense for e.g. an embedded system.  Being able to install a
precompiled package does.  Being able to share that precompiled package
with others does.  Providing that package to others in such a way so
that it can coexist nicely with otherly-targeted versions of the package
does.

It is feasible to produce a tarball that can either be written as part
of a ROM image or be extracted on a server to be used by an NFS-rooted
client.  The structure could perhaps be like this:

daemontools-0.76-linux-arm7tdmi.tar.gz:
/package/admin/daemontools-0.76/
/package/admin/daemontools-0.76/command-linux-arm7tdmi/
/package/admin/daemontools-0.76/command-linux-arm7tdmi/svscan
.....

I could install this on to the embedded device or my linux-i686 without
creating any problems or introducing the /shared hierarchy.  The package
installation tools could be modified to understand cross-compilation at
least to the degree that they would install object files in a directory
with the target appended to the name.  To affect minimal change,
"command-$(target)" could be linked to "command" when $(target) is the
host.  To allow direct exporting of the /package hierarchy, symlinks
could be made as:

/command/svscan -> /package/admin/daemontools/command-linux-i686/svscan

In the worst case, where there is no need for multiple targets
installed and etc., the only loss is the extension of 'command' to
'command-linux-i686'.  In my case, I have a more useful packaging system
with minimal, optional, complexity.  In the central-NFS-server case,
standard tools or scripts can handle relocating the right bits to the
right places in /shared on the server with less complexity, since the
system already takes multiple targets into account.

Comments?

Nicholas