Jump to: navigation, search

osc contrib

The osc command is extensible, so there's a osc-contrib plugin, which makes things easier. Unless the osc it contains only a subset of specialized commands for Contrib only.

All commands begins with osc contrib (or osc cb) prefix.

The osc-contrib package is available in a Contrib itself, so just add the Contrib repository and install the package.


New package request

osc contrib new

If you are in the package dir, this is enough. You can also specify a new package name in argument. If you are not in a package dir, then you have to specify a source project and a package name (and as a last argument a new package name).

Show of opened requests

osc contrib show

This command shows you all opened requests. If you are a maintainer, you are interested at it.

Review process

osc contrib checkout package|ID

This will save a package to local disc. You could use a package name, or a request's ID as argument.

vi spec_file # review the spec
osc contrib build

The last command is for a test build againts Contrib. This checks, that package is correct and there are not missing build dependencies. It's and equivalent of osc build --alternative-project=openSUSE:Factory:Contrib standard but it's shorter (and it's an original purpose of this tool, reduce an amount of typing)


osc contrib accept|decline package|ID

Note: the -m "message" is mandatory. Only the accept will work without it. You could use a package name, or a request's ID as argument.

Command help

For help type

osc cb --help

and you will get a complete help for all available commands. Please note that this documentation should be older than current described version (0.1.6) of osc-contrib. Help is actual with a current state.


osc contrib show [-f|--full-view] [-s|--state] [PACKAGE]

The 'show' command shows all new requests opened for Contrib. The default output is compact, so for a full view (like osc submitreq show ID) you have to type -f argument. With argument '-s' you could list other requests, not only the new ones. For complete list of all requests type -s 'any'.

The optional parameter PACKAGE will filter a result only for selected package.


Show all opened requests:

osc cb show
  4940  new     (saigkill)   home:saigkill/kde4-skrooge                          ->  openSUSE:Factory:Contrib
                 'add kde4-skrooge'

A full view

osc cb show -f

Request to submit (sri4940):

    home:saigkill/kde4-skrooge  ->  openSUSE:Factory:Contrib/kde4-skrooge

Source revision MD5:

    add kde4-skrooge

State:   new          2009-01-12T01:28:45 saigkill
Comment: None

View of all requests

osc cb show -s 'any'
  4908  declined (elvigia)    home:m4r3k:fatrat/libgloox                          ->  openSUSE:Factory:Contrib
                 'new library needed for fatrat :-)'
  4916  accepted (mvyskocil)  home:saigkill/lynis                                 ->  openSUSE:Factory:Contrib
                 'add lynis'
  4918  accepted (mvyskocil)  home:saigkill/rkhunter                              ->  openSUSE:Factory:Contrib
                 'add rkhunter'
  4927  accepted (elvigia)    home:m4r3k:fatrat/libgloox                          ->  openSUSE:Factory:Contrib
  4940  new     (saigkill)   home:saigkill/kde4-skrooge                          ->  openSUSE:Factory:Contrib
                 'add kde4-skrooge'
  4954  accepted (puzel)      Java:esmska/esmska                                  ->  openSUSE:Factory:Contrib
                 "please add a 'esmska' to Contrib"

View all requests for one package

osc cb show -s 'any' scheme48
  4390  declined (puzel)      home:mvyskocil:Contrib/scheme48                     ->  openSUSE:Factory:Contrib
                 'add scheme48'
  4704  accepted (puzel)      home:mvyskocil:Contrib/scheme48                     ->  openSUSE:Factory:Contrib
                 'Fixed version, now use RPM_OPT_FLAGS and all gcc and warnings errors has been fixed.'


osc contrib new [-m|--message] [DEST_PACKAGE]
osc contrib new [-m|--message] PROJECT PACKAGE [DEST_PACKAGE]

The first form of command is for case if the current directory is the package one. The information about source project and a package will be read from metadata, so the user doesn't have to specify them. The DEST_PACKAGE should be used if the name of package in Contrib may be different.

The second form is intended to run from a common dir, because in that case it is not possible to read the metadata automatically. So the user needs to specify a source project and a package by hand. The new package name should be also given.

The argument [-m|message] is fully optional here.

checkout (co)

osc contrib checkout (co) [-l|--last] [-i|--id=ID] PACKAGE|ID

This download the requested package. This command is useful for reviewers, if they want to build the package in their local machine. The --last and --id are for handling of cases if the same package was requested several times (and all requests have a new state), so reviewer could specify a last request, or type an exact id. You could use a package name or a request ID as argument.

Note: this command download the package to the package/ directory, not to project/package/ as osc checkout does!


Simple usage:

osc cb co esmska
A    /home/mvyskocil/work/contrib_test/esmska
A    /home/mvyskocil/work/contrib_test/esmska/esmska-0.12.2.tar.bz2
A    /home/mvyskocil/work/contrib_test/esmska/esmska.desktop
A    /home/mvyskocil/work/contrib_test/esmska/esmska.spec

The package esmska is now in esmska directory.

How are the multiple requests handled:

osc cb co scheme48
There are multiple requests (4390, 4704) towards package scheme48. Specify one by -i/--id, or use -l/--last-request argument!

In this case you can use a osc cb co -i <ID> or osc cb co -l scheme48 to checkout the last request, which is probably reasonable in most cases.

What if I specify a wrong id:

osc cb co -i 1234 scheme48
The package scheme48 and request id 1234 doesn't match!                         Use one of these (4390, 4704)

There's some minor error in output :), but the osc cb -i always check if the current id and a package name match!

request state change

osc contrib [accept|decline|revoke] PACKAGE|ID

It's an equivalent of osc submitreq [accept|decline|revoke] PACKAGE_REQ_ID. Multiple requests could be handled via --last or --id argument. It's the same as in the 'new' command descibed above. You could use a package name or a request ID as argument.

The --message argument is mandatory for decline and revoke commands. For 'accept' exists a default one.

The accept command also do some additional job, which the original osc submitreq accept doesn't. It warn if the current state of the requests was changed, so users have to manually commit his change. And for new packages it also set the requesting user as a new maintainer and a bugowner of package in Contrib, so the reviewer don't need to change it manually.


   -i, --id        id of request (if multiple exists)
   -l, --last      use a last request (if multiple exists)
   -m, --message   the submit message (optional for accept)

who is a maintainer/bugowner

osc cb maintainer/bugowner PACKAGE [PACKAGE2...]

Introduced in 0.1.5. Shows a maintainer/bugowner of specific package(s). Command prints a result as package:person. It has a -f/--full-view option which shows an email.


Show maintainers of some packages

osc cb maintainer apg esmska
apg: csbuild
esmska: mvyskocil
esmska: kamil_paral

Show an email

osc cb maintainer openproj -f
openproj: mvyskocil,

A bugowner command

osc cb bugowner openproj
openproj: mvyskocil


 osc cb build [ARCH]

Introduced in 0.1.6. It is an abbrev for osc build --alternative-project openSUSE:Factory:Contrib standard [ARCH] and it serves for test build. So reviewer should be able to check, if package will work after accept. The optional argument is an architecture.

Comments, bugs, etc.

If you found a bug, just contact me (mvyskocil at suse cz). If you have a feature request, you could also contact me directly (patches are welcome ;-)), or it could be discussed in opensuse-contrib ML first.

Source code are available in a git repository on (gitweb).

For download, just type:

git clone git://