[Rpm-maint] PATCH: Python: allow access to packages & headers from spec object

Panu Matilainen pmatilai at laiskiainen.org
Sat Sep 20 10:01:48 UTC 2008

On Thu, 18 Sep 2008, Daniel P. Berrange wrote:

> I'm trying todo some automated processing & analysis of RPM specfiles
> and have found the python binding is lacking a number of key features

Yup, the bindings for build/spec parsing have been almost non-existent.

> - The 'spec' object allows access to the lists of sources, but doesn't
>   expose the RPMBUILD_ISXXXX constants
> - The 'spec' object does not provide access to the 'packages' objects
>   so you can't query most metadata about the spec.
> - None of the RPMTAG_XXX constants are defined, which makes using the
>   'header' object unpleasant.
> This patch addresses all these missing pieces. I'm not entirely clear on
> whether the reference counting / object lifecycle stuff is correct here
> though. It seems like there's the possibility of python garbage collecting
> the 'spec' object while there's still a live 'pkg' and/or 'header' object
> live.

Would you mind renaming the python-visible "pkg" object to something like 
"specpkg" to make it clear that these particular packages only exist in 
the spec-world as opposed to something you can install? I'd like to 
preserve the "pkg" name for "real" rpm/rpmdb package objects (for future 

Other than that (and possible refcounting issues, those are always a bit 
of a PITA and tend to require a couple of rounds to get right), looks ok 
to me.

One thing worth mentioning here is that the in-rpm python bindings are not 
going to be actively developed, new bindings to address various issues and 
misdesigns in the current ones are in the works here: 
http://devel.linux.duke.edu/gitweb/?p=rpm-python.git. See the rpm-python 
TODO to get an idea what sort of things are planned (for example the 
"package object"). Also worth noting in the new bindings is that they lack 
the build/spec part completely right now: the idea is to have a separate 
python module for that, in order to avoid dragging in librpmbuild 
dependency into the main bindings (as get used in things like installers 
where diskspace counts). Work on that would be very welcome too...

Nice to see somebody interested in this area, and better yet with patches 

 	- Panu -

More information about the Rpm-maint mailing list