Build Service/osc plugins/Overview

From openSUSE

Contents

Introduction

Overview plugin allows you to build a table comparing versions in different sources including openSUSE build service projects.

post

Download

You can install from or from home:dmacvicar

zypper ar http://download.opensuse.org/repositories/home://dmacvicar/openSUSE_11.1 dmacvicar
zypper in osc-plugin-overview

Changelog

0.3

[1]

0.2

  • new release 0.2
  • support for freshmeat sources
change syntax of package macros to *x: now *2 means packages from source 2 and $2 means source 2.


  • add patchinfo and changelog generation (alpha)
  • smarter version comparision when version is the same

0.1

  • First release

Source code

git clone git://git.opensuse.org/people/dmacvicar/osc-plugin-overview.git

Supported data sources

  • Build service project ( obs://project )
  • Build service pending submit requests against project ( obssr://project )
  • Upstream gem repository ( gem://server )

Example views

To use it, you call it with:

osc overview groupviewname

The groupview is a ini file in ~/.osc-overview/viewname.ini, A groupview contains one or more views, which are sections of the ini file.

Examples:

[openSUSE-11.1]
repos=obs://openSUSE:11.1,obs://zypp:Code11-Branch,obs://openSUSE:11.1:Update
packages=libzypp,zypper

This compares libzypp and zypper version from 3 different projects. The output is similar to:

** openSUSE-11.1 **
+------------------+------------------+------------------+------------------+
|     package      | obs://openSUSE:1 | obs://zypp:Code1 | obs://openSUSE:1 |
|                  |       1.1        |     1-Branch     |    1.1:Update    |
+==================+==================+==================+==================+
| libzypp          | 5.24.5           | 5.29.5           | 5.25.3           |
+------------------+------------------+------------------+------------------+
| zypper           | 1.0.2            | 1.0.8            | 1.0.5            |
+------------------+------------------+------------------+------------------+

Another example, is to compare versions with upstream:

[gems]
repos=obs://devel:languages:ruby:extensions,gem://gems.rubyforge.org
packages=*1

Here, you can see the package list uses *1, that means, fetch the package list from the first source being compared. Be careful to use *1 with projects like openSUSE:Factory unless you really mean that. Usually you use the package list from the less common denominator across all sources.

The resulting table is:

** gems **
+-------------------------+-------------------------+-------------------------+
|         package         | obs://devel:languages:r | gem://gems.rubyforge.or |
|                         |     uby:extensions      |            g            |
+=========================+=========================+=========================+
| rubygem-hpricot         | 0.7                     | 0.8                     |
+-------------------------+-------------------------+-------------------------+
...
+-------------------------+-------------------------+-------------------------+

Filters

Only outdated packages

To only display a row, if certain repo contains a package older than any of the other repos, Add to the view definition:

filter.older={repoexpr}

repoexpr can be the repository in repos option, or a shortcut $pos ($1 is the first one).

filter.older=$1

Example:

[gems]
repos=obs://devel:languages:ruby:extensions,gem://gems.rubyforge.org
packages=rubygem-hpricot
packages=*1
filter.older=$1

Will display only outdated packages with respect to the upstream gem server:

+-------------------------+-------------------------+-------------------------+          
|         package         | obs://devel:languages:r | gem://gems.rubyforge.or |          
|                         |     uby:extensions      |            g            |          
+=========================+=========================+=========================+          
| rubygem-commonwatir     | 0                       | 1.6.2                   |          
+-------------------------+-------------------------+-------------------------+          
| rubygem-erubis          | 2.6.2                   | 2.6.4                   |          
+-------------------------+-------------------------+-------------------------+          
| rubygem-facets          | 2.5.0                   | 2.5.1                   |          
+-------------------------+-------------------------+-------------------------+          
| rubygem-fastthread      | 1.0.1                   | 1.0.6                   |          
+-------------------------+-------------------------+-------------------------+ 
...

Planed features

  • filter by name
  • other outputs, like .changes and patchinfo
  • show a package only if certain column is the smallest version [DONE]

Use cases

Upstream Maintainer

  • Developer maintains 3 packages for openSUSE factory.
  • All packages can be found upstream in freshmeat
  • he maintains them in his home build service project
  • He wants to see 3 columnns:
    • What is upstream
    • What he has packaged in his repository
    • What he has submited to Factory
  • He can use the filter.older feature and set his home project as base. Then he will be informed when the upstream column is newer
    • In theory he would be informed if Factory has a newer version than his home project, but this is not an expected case.

Maintenance

  • Maintenance coordinator for a certain area
  • Packages A,B,C,D,E present in openSUSE 11.1 GA
  • Packages A,B,C, with bugfixes w/r to 11.1 versions come from one project in build service
  • Packages D,E come from another developer, who keeps the updated versions in his home project.
  • Coordinator wants to overview versions from GA, development projects, pending submissions to any of these packages to the 11.1 update repository and the update repository iteself.
  • He wants to generate the .changes list from what is in the development project which are not yet in the update repository
  • He wants to get a prototype of the PATCHINFO
11.1 Updates
Package 11.1 GA repo1 repo2 Update submitted Updates
A 1.0 1.2 - - 1.1
B 1.0 1.3 - - -
C 1.0 1.2 - - 1.1
D 2.0 - 2.2 - -
E 2.0 - 2.3 - 2.1