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

Re: Potato now stable



(This may be better on the debian-pool list, I guess)

On Wed, Aug 23, 2000 at 03:26:51PM +1000, Drake Diedrich wrote:
>    pinstall (part of the packagepool at http://master.debian.org/~dld/pool/
> ) does the signature check and initial install into the pool database.  The
> location within the pool archive is currently simply pool/sourcename .  The
> pool itself can handle any hash though, 

The structure Jason and I have been discussing is slightly different,
and has some really nice properties. The archive layout would be
something like:

	pool/main/libf/libfoo/libfoo-dev_1.2-1_i386.deb

That is:

	* separate pools for each component (main, contrib, and non-free,
	  and presumably non-US/main, non-US/contrib, and non-US/non-free
	  also)

	* binaries included based on the source package name

	* hashing based on either the first character of the source
	  package, or the first four characters, if it's a library source
	  (to keep it fairly evenly distributed)

This means to find a package you need to know five things:

	its name
	the version you want
	the architecture you want it for
	the name of its source package
	the component its in

It also means it's trivial to not mirror non-free if you want.

Now, while the actual pool layout separates components at the top level,
the database *doesn't* do this, at least the way we've been talking about
on IRC. Instead, we have (in relational speak) a single huge table that
basically says:

 [ binary_name, binary_version, architecture, source, component, ... ]
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

(translating, that is that given a binary package, its version and its
architecture (ie, the filename libfoo-dev_1.2-3_i386.deb), we can uniquely
determine the source, component, and any other applicable details)

This means we *won't* permit more than one of, eg:

	pool/main/libf/libfoo/libfoo-doc_1.2-3_all.deb
	pool/main/libf/libfoo-hurd/libfoo-doc_1.2-3_all.deb
	pool/non-free/libf/libfoo/libfoo-doc_1.2-3_all.deb

It also means that when we decide which packages are in which
distribution, we don't need to separate by component. So to specify
packages in potato, say, we can simply have a table:

	potato, fileutils, 4.0l-8, alpha
	potato, fileutils, 4.0l-8, arm
	potato, fileutils, 4.0l-8, i386
	potato, xv,        3.10a-25, alpha
	potato, xv,        3.10a-24, arm
	potato, xv,        3.10a-35, i386

(this would be done differently in LDAP. The relational way seems clearer
for this purpose though, IMO)

> [...]

> non-free/contrib under the current model would have to be separate upload
> queues and archives, possibly running on the same server and physically
> overlapped though. It wouldn't be terribly difficult to add special casing
> for non-free or contrib sections, but it's a little unclean to have the
> install tool making policy decisions like that IMO.

It's probably suboptimal to have to have separate incoming queues.

The above layout basically just means you have to construct a new
"Component:" field for the all-packages-in-the-pool table.

This isn't entirely straight forward to extract at present, it either comes
from the .changes file, as in an upload to:
 mosaic (2.7b5-8.1) non-free; urgency=low
or an upload to:
 distributed-net-pproxy (277b-1) unstable; urgency=low
with Section: non-free/misc

In any event, it's not *making* policy decisions, it's simply enforcing
them. I'm inclined to think having a separate "Component:" field in the
source control stanza would be a better way of expressing it.

If experimental .debs are to be included in the pool, the above would
probably imply we'd end up with:
	dists/experimental/{main,contrib,non-free}
which probably isn't a bad thing.

Cheers,
aj

-- 
Anthony Towns <aj@humbug.org.au> <http://azure.humbug.org.au/~aj/>
I don't speak for anyone save myself. GPG signed mail preferred.

  ``We reject: kings, presidents, and voting.
                 We believe in: rough consensus and working code.''
                                      -- Dave Clark

Attachment: pgpXLzGZ4WCVJ.pgp
Description: PGP signature


Reply to: