5878
Comment: link to PET project page instead of listing PET-using projects twice
|
← Revision 19 as of 2009-03-16 03:29:53 ⇥
5880
converted to 1.6 markup
|
Deletions are marked like this. | Additions are marked like this. |
Line 85: | Line 85: |
See [http://pet.alioth.debian.org/ PET project page] | See [[http://pet.alioth.debian.org/|PET project page]] |
The debian Perl group's Quality Assuarance software
This page documents perl scripts developed to monitor the condition of each package the debian-perl group maintains. (We should get a real name for them )
These perl scripts have recently been rewritten to clean up the code, ease improvements and make them usable by other groups. This page is meant to be a place to discuss development and provide documentation.
Current components:
- DebianQA/: perl namespace
- Svn.pm: SVN repository scanning, detection of available packages, changelog and watchfile extraction. Cache name: svn, indexed by: directory name. Data extracted:
- pkgname: source package name.
- version,
- date and
- changer: data from latest non-UNRELEASED entry in the changelog.
- un_version,
- un_date and
- un_changer: data from latest UNRELEASED entry in the changelog (if it's newer than latest non-UNRELEASED).
- watch: array of data from the watch file, one element per watch line later processed further in Watch.pm:
- opts: array of options.
- line: cleaned-up line (without options nor actions).
- md5: result of md5hex($opts.$line), where $opts is the raw options string.
- (un?)mangled_ver: the version field, modified according to this watch line.
- (un?)mangled_un_ver: the un_version field, modified according to this watch line. (This is not existant now)
- (un?)mangled_ver: the highest (un?)mangled_ver from all the watch lines.
- (un?)mangled_un_ver: the highest (un?)mangled_un_ver from all the watch lines.
- BTS: BTS bugs search and extraction for each source package. Cache name: bts, indexed by source package name, then by bug number. Data extracted:
All the data returned by the ?DebBugs SOAP interface for the bug.
- Watch.pm: Processing of watch files, scanning of upstream releases. Cache name: watch, indexed by: MD5 hash of watch line (as generated by Svn.pm). Each element represents a single line on some watch file. Data extracted:
- watch_error: if any.
- upstream_url: URL to the source tarball.
- upstream_version: upstream version detected.
- upstream_unmangled: upstream version after modification specified in watch line.
- Archive.pm: Download and parsing of Debian archive lists, also processes incoming and new information pages. Cache name: archive, indexed by suite (testing, unstable, etc.), then by source package name. Data extracted:
- Version number.
- Cache.pm
- Common.pm
- Config.pm
- Svn.pm: SVN repository scanning, detection of available packages, changelog and watchfile extraction. Cache name: svn, indexed by: directory name. Data extracted:
Things to-do:
- Add support for comments in the CGI script. A Comments.pm would be a good place to put the logic on.
Maybe put all the classification logic into another module. done!
From h0lger: it would be great if http://debian-edu.alioth.debian.org/cgi-bin/qareport.cgi could also display the version in etch, not only the newest in etch-test. So, I'm forced to also look at http://ftp.skolelinux.org/skolelinux/needs_love.html
- Handle the case where versions in unstable and experimental have a different watchfile. Example: Package foo: Version 1 in unstable, version 2 in experimental, watch file from unstable returns 1, watch file from experimental 2. QA scripts now complains that there's a strange version in the archive. DEHS makes a difference between the watchfiles, so probably there's a way to implement that here, too.
Classification issues
Classifying the different package status has proven to be confusing and hard to get right. So, I think we should first agree "on paper".
SVN released version |
SVN unreleased version |
upstream version |
archive most recent version |
archive other version |
category |
notes |
missing changelog |
|
|
|
Error |
|
|
|
|
missing watchfile |
|
|
Error |
|
none |
1.1 |
1.0 |
* |
* |
Needs upgrade / invalid? |
could be work in anticipation |
1.0 |
1.1 |
1.0 |
* |
* |
WiP / not shown / needs upgrade / invalid? |
|
none |
1.0 |
1.0 |
* |
* |
Needs upgrade / WiP? |
|
none |
1.0 |
1.1 |
* |
* |
Needs upgrade? |
|
1.0 |
* |
0.9 |
* |
* |
Invalid version |
|
1.0 |
* |
* |
1.1 |
* |
Invalid version |
|
1.0 |
none |
1.0 |
0.9 |
* |
Needs upload |
|
1.0 |
none |
1.0 |
1.0 |
* |
OK |
|
1.0 |
none |
1.1 |
* |
* |
Needs upgrade |
|
1.0 |
none |
1.1 |
0.9 |
* |
Needs upload + upgrade? |
|
1.0 |
1.1 |
1.1 |
0.9 |
* |
Needs upload + upgrade? |
|
1.0 |
1.1 |
1.1 |
1.0 |
* |
Needs upgrade / WiP? |
|
1.0 |
none |
1.0 |
1.1 |
* |
Invalid version |
|
1.0 |
1.1 |
1.1 |
* |
* |
Needs upgrade / WiP? |
|
and many more cases....
A different approach
If we have the following variables
- SVN_released_version
- SVN_unreleased_version
- Upstream_version
- Archive_version
we could try to define categories and conditions as follows:
Needs Upgrade: Upstream_version >> max(SVN_released_version, SVN_unreleased_version)
Needs Upload: SVN_released_version >> Archive_version
Needs More Work: SVN_unreleased_version == Upstream_version && SVN_unreleased_version >> Archive_version
Wishlist bugs
<man-di> Tincho: 1) would it easy to show unstable and experimental for packages with versions in experimental?
<Tincho> man-di: uhm, seems sane. It is easy, but AFAICR there was no hardcoded suite, except for unstable. I should look into a way of doing it in a elegant way, but yes, count on that
- (for man-di too) having a max-ttl on watch data, using cached data with only a info msg when download fails, and upgrading to warn (and visible error in qareport) when max-ttl is reached?
Users of the scripts
See PET project page