Differences between revisions 18 and 19
Revision 18 as of 2008-11-22 22:40:25
Size: 5878
Editor: ?GregorHerrmann
Comment: link to PET project page instead of listing PET-using projects twice
Revision 19 as of 2009-03-16 03:29:53
Size: 5880
Editor: anonymous
Comment: 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

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

  1. <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

  1. (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