[268] in athena10
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.