[repoman] moving forward

Paul Mattal paul at mattal.com
Sat Jul 7 18:08:18 EDT 2007


So it sounds like we have some rough consensus:

1) Python is good. We'll use Python.

2) Pluggable SCM support is good. Since there's initial interest in at 
least Subversion, GIT, and Mercurial, I think each of me, Dan, and 
Essien should write those plugins, respectively. Once we have a plugin 
interface figured out, of course.

3) DB-OO mapping: it will save us code, and we expect our DB to be 
simple anyway. I vote we use the Django DB layer and apply KISS 
liberally. Django will let us just jump out and do actual SQL if we end 
up needing to, so let's use it where we can and get automatic benefits 
of integration with the main site someday, and not be afraid to jump out 
into SQL for things that are cumbersome in OO land. It will also let us 
use sqlite, mysql, postgres, and a host of other things behind the 
scenes as desired.

4) For initial implementation, we should use sqlite as the DB for 
simplicity and ease of setup.

5) Based on what others have said and my further thinking, my UPL 
(Uniform Package Locator) may not be necessary or helpful. The UPL is 
what the database should be holding behind the scenes for each binary 
package in each binary repo, but we probably don't need to see these 
presented this way.

6) We need to define our terms. Let me try this as a start:

architecture - a single platform, used as an element in the arch=() 
array in a PKGBUILD

version - combination of pkgver and pkgrel, as used in a PKGBUILD

package - a single unit of installable software, identified by pkgname; 
packages have versions and may be built for multiple architectures

binary package - a particular version of a particular package, built for 
a particular architecture

repo (or repository) - a collection of packages, each with a different 
pkgname

binary repo (or binary repository) - a collection of binary packages, 
each with a different package name, all built for the same architecture

tags - a mechanism that existed in CVS which allowed developers to 
specify which specific version of the PKGBUILD was used to build the 
binary package currently in a particular repository; we hope this idea 
will go away, and our database will just specify directly the SCM 
version of a particular PKGBUILD that was used to build the binary 
package currently in a particular repository

7) Based on all this, I will jump in and begin by taking a first crack 
at the Django db model, based on these thoughts and put them in the 
source repository so we can all discuss them and consider changes that 
might be necessary. I will make the db as lightweight as possible, with 
KISS in mind.

I'll probably send another email here soon to hash out some of the model.

- P



More information about the repoman mailing list