[268] in athena10

home help back first fref pref prev next nref lref last post

OpenAFS package and metapackage build script design

daemon@ATHENA.MIT.EDU (ghudson@MIT.EDU)
Mon Jun 23 16:22:31 2008

Date: Mon, 23 Jun 2008 16:21:46 -0400 (EDT)
From: ghudson@MIT.EDU
Message-Id: <200806232021.m5NKLkbk008534@outgoing.mit.edu>
To: athena10@mit.edu

I've gone back to the drawing board on OpenAFS packages.  My goals
are:

  * Build openafs-modules metapackages to keep kernels in sync with
    modules as described previously.

  * Provide script infrastructure which can be used to automate the
    building of modules as new kernels come out.

  * Stop relying on apt-file, since the Ubuntu security updates
    repository doesn't support it.

Here is my design:

  * Rewrite everything into a script named debathenify-openafs.  The
    script will do nothing for its "source" command, will build
    modules and metapackages for "binary", and will upload what it has
    built for "upload".

  * Our metapackages will mirror the upstream ones.  To find the
    proper set of upstream metapackages, apt-cache search for
    '^linux-image-'.  For each package found, check that (1) its
    source package is linux-meta or linux-latest-* and that (2) it
    depends on a linux-image-* package whose source package is *NOT*
    one of those two.

  * For each metapackage found, look at its linux-image-* dependency,
    and substitute "linux-headers" for "linux-image" in that name.  If
    that name exists (true in all cases except for Ubuntu
    linux-image-debug metapackage, which share headers with their
    non-debug counterparts), add that to the list of linux-headers
    packages to build modules for.

  * For each linux-headers package discovered above, check if there is
    already a corresponding openafs-modules package in the apt
    repository.  If not, attempt to build one.

  * After the modules are built, look at the upstream metapackages
    discovered above.  If there there is no corresponding package with
    a matching version in the apt repository, and if we successfully
    built an openafs-modules package corresponding to its dependency,
    build (with equivs) an openafs-modules metapackage tying the built
    module to the current version of the upstream metapackage.

By providing an interface consistent with Debathenificator, I can use
the same cron job framework (when I get to that point) to keep OpenAFS
modules up to date as I do to keep debathenified packages up to date.

I've implemented this as far as building the list of upstream
metapackages and linux-headers packages.  Since I'm ready to stop for
the day, I'm sending off my design for review in case anyone can see
me coding myself into a dead end.

home help back first fref pref prev next nref lref last post