This project aims to create a lintian-like tool to test ISO files created with debian-cd. It is being developed as a Google Summer of Code project, the project description follows.

It's hosted on Alioth, with the name "pancután". The subversion repository is at svn://svn.debian.org/pancutan/

Project description

Abstract

The Debian Project routinely builds CD and DVD images of specific distributions, like Debian stable, Debian testing and Debian unstable. Each one of those in different 'flavours' that fit different needs (business card, net-inst, full archive) and for different target architectures [ 1 ]. Also there are images for various Custom Debian Distributions like Skolelinux, and even live-CD systems.

Many of those images are built weekly or even daily, this results in a *lot* of ISO files.

As verifying that the built images work is currently a manual process, there is too much work spent in this task. Also, images meant for a release need more presumption of correctness, as it would be very bad publicity to ship a broken image.

To alleviate this situation, a modular lintian-like CD-image testing tool is proposed.

Proposal

The objective for this project is to build from scratch said tool, and a set of base tests. So three tasks must be completed:

The most vital part is to understand what needs to be done, so the first task would be given much effort and time.

The design will strive to be simple yet powerful, a clear interface for writing two types of modules: data collection modules and testing modules. The former will be executed first to collect and cache data from the image, and then the latter will execute using the data collected. Every test module will be able to inform of warnings and errors it finds.

The core of the application will direct the show and finally report to the user in a form similar to that of lintian.

During the entire process, reports will be published in blog or email form, so the mentor and any Debian contributor can watch how things are going and to give feedback.

Benefits for Debian

This tool will greatly help the teams involved, and allow them to focus on important things that can't be automated. By easily adding test-cases they would be improving the confidence on the tool with a one-time coding work.

The results of each run could be published along with the images, like it's currently done for lintian reports, so users and developers can easy review an image's health.

This tool could also be used by other Debian derivatives as well.


Involved parties

I've already surveyed some people who currently use debian-cd and related tools to build CD's. I plan to support vanilla Debian CDs as well as CDDs as much as possible. I still have to research about live distributions to see if it's possible/reasonable to support them.

Drafts

Incomplete list of things written as I gather them

Sources of information

Some tests

My idea is that tests should have preconditions to be met for the test to be executed. Those preconditions will be satisfied by flags set by other tests and/or datasources.

Draft plug-in spec

Each plug-in is a Perl module, that should adhere to the following:

Stages of execution

There are three stages:

A task can depend on a task from a different stage if: the dependency belongs to a previous stage (post -> *_cd -> pre) or if it's a *_cd type task and its dependency is any_cd type.

After all the plug-ins have been loaded, a running plan is built in a form of a tree of dependencies. The tree is checked for consistency and then the execution starts. When more than one task is ready to be executed (i.e. all its dependencies have been met) it's possible to run them in different processes, if decoupled subroutines have been specified. The master subroutine is be responsible of writing back the data sent from the slave subroutine in a serialization format thru socketpairs.

Bootable CD info

Some data I've gathered about the different boot processes for each arch. Mail from Sledge.

http://www.netbsd.org/docs/bootcd.html

http://www.gnu.org/software/libcdio/libcdio.html