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

RFC: using em_autobuild and embug for automated package tracking.



In emdebian-tools 0.9.3, I'm adding a new script, em_autobuild and I'm
extending the embug support to track various issues in Emdebian:

1. Patches that are out of date - these flags will be recorded by
emsource when any patch (except emdebian-changelog.patch) fails to
apply. There are now too many packages for me to track manually and
people wanting to use Emdebian patches for architectures other than ARM
need some kind of assurance that the patches will apply or are in the
process of being updated.

2. Packages that are older than Debian - these flags are to be recorded
by emtargetcmp (which has a few problems of it's own at the moment
caused by a regression in the underlying apt support).

3. Packages that need patches applied in Debian to support
cross-building - these flags are handled via a SOAP interface to the
BTS. (The original purpose of embug and already fully implemented).

4. A sane autobuilder for the target packages. em_autobuild [0] is a
new script in 0.9.3 that runs emsource once for each source package
listed in our root filesystem scripts. It can easily be extended to run
plain emsource *not* emsource -b to run as a cron job merely checking
the patches. em_autobuild extends the previous rough idea in the
emsandbox manpage into a fully operational script that mixes shell and
perl to read the apt-cross cache and convert binary package names in the
suite script into source package names for the autobuilder. It can work
with any suite script using the standard machine:variant support or
explicitly on the command line.

Current methods in embug and the (very early) development of
em_autobuild are limited to local files, principally on my own systems.

I'm interested in ideas on two parts of these scripts:

First the expanded embug options and their names:

 $progname [-v|--verbose] [-q|--quiet] [-p|--package] -f|--flag
 $progname [-v|--verbose] [-q|--quiet] [-p|--package] -r|--remove
 $progname [-v|--verbose] [-q|--quiet] [-p|--package] -g|--get-number
 $progname [-v|--verbose] [-q|--quiet] [-p|--package] -o|--outdated
 $progname [-v|--verbose] [-q|--quiet] [-p|--package] -d|--debian
 $progname [-v|--verbose] [-q|--quiet] --prepare
 $progname [-v|--verbose] [-q|--quiet] -l|--list
 $progname [-v|--verbose] [-q|--quiet] -u|--update
 $progname [-v|--verbose] [-q|--quiet] -m|--missing
 $progname -?|-h|--help|--version

Commands:
 -f|--flag:          Flag this package as needing a bug report.
 -g|--get-number:    Get the bug number of the report filed for this
                      package.
 -l|--list:          List all known bug report numbers, with package 
                      names.
 -m|--missing:       List all flagged packages without bug reports.
 -r|--remove:        Remove the flag if no bug report has been filed
                      or the package has been updated.
 -u|--update:        Update the list of known cross-building bugs
                      by querying bugs.debian.org.
 -o|--outdated:      Record that the Emdebian SVN patches are out of
                      date.
 -d|--debian:        Record that the Emdebian package is older than the
                      Debian package.
    --prepare:       Create a temporary directory suitable for patch
                      creation and testing.
 -?|-h|--help:       Print this usage message and exit
 --version:          Print this usage message and exit

 Options:
 -p|--package:        Specify the source package name instead of 
                       looking in debian/control.
 -v|--verbose:        be verbose (repeat for more verbosity)
 -q|--quiet:          be quiet [default]

 $progname assumes that each source package only has one bug
 tagged with the 'crossbuilt' usertag for user 'codehelp\@debian.org'.

embug -o and embug -d are new and I'd like feedback on whether those
options are understandable and unambiguous.

Secondly, some method of remote support for these flags.

Something to which many people can commit and which everyone can read.
Something that can be updated whilst doing something else (so that
merely running emsource can update the flag that the patches are
failing).

Now there are a few ways of doing this:

A: Run emsource (via em_autobuild) and emtargetcmp regularly on
buildd.emdebian.org via cron so that lots of people don't *need* to
commit in the first place. As the packages are not *being built*, only
patched, this makes it easy to purge the source after testing the
patches and prevents the need to look after build dependencies (cross or
native). The first run would check the basic rootfs packages, subsequent
runs of em_autobuild would only check packages already flagged. Each run
of emtargetcmp will ensure that any source package that has been
uploaded will be checked against Debian, even ones that are not
currently utilised in suite scripts.

B: email somewhere ?

C: ?? the other standard methods all rely on authentication and thereby
limit the number of people who can update this stuff. SVN seems like
complete overkill for this flag stuff.

D: don't do it at all.

E: Actually implement em_autobuild on buildd.emdebian.org to cross build
Emdebian target packages and upload them directly to the repository
automatically by extending it into a form of sbuild. We tried something
approaching that before and quickly ran into file space issues due to
the collected size of each build and each set of cross and native build
dependencies and em_autobuild isn't yet compatible with standard buildd
methods. I think this is the eventual goal but maybe we can do something
simple before this is ready.

Ideas? Comments?

[0] http://linux.codehelp.co.uk/emdebian/man/re10.html

-- 


Neil Williams
=============
http://www.data-freedom.org/
http://www.nosoftwarepatents.com/
http://www.linux.codehelp.co.uk/


Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: