[rosa-devel] Mass migration of packages to 'pkgconfig' BRs

Denis Silakov denis.silakov at rosalab.ru
Mon May 13 16:24:24 MSK 2013

Hi all,

As many of you likely know, many lib*-devel packages have several 
"Provides" entries that can be used to identify them - traditional 
'libfoo-devel' and something like 'pkgconfig(foo)' (in case when library 
provides *pc files for pkgconfig).
Quite long ago it was decided that if you want to add BuildRequires on 
libfoo, the preferred way is to use 'pkgconfig(foo)', not libfoo-devel. 
One of the reasons is that pkgconfig() provides are generated 
automatically, while libfoo-devel should be added manually. For many 
libraries 'libfoo-devel' provides are missing now, but not all of the 
packages are switched to pkgconfig() BRs (though maintainers have spent 
a lot of time on this). This is one of the often reasons of package 
build failures, and we even have a rpmlint check to detect old-style BRs 

The good news is that as a part of FBA (http://fba.rosalinux.ru/) 
development, we've recently created an automated tool to fix 
"invalid-build-requires" errors which tries to transform 'libfoo-devel' 
to appropriate 'pkgconfig()' entries.

The tool has been launched for a first time not long ago and is working 
right now. I expect ~350 packages to be fixed (~350 in cooker and ~350 
in rosa2012.1). To ensure that nothing is broken after the tool work, 
rebuild of every package is triggered, so abf will be a little busy in 
the nearest hours. Sorry for inconvenience, but this is a necessary step 
which will allow us to avoid many problems in future.

Updated packages will be automatically published for cooker/main, 
cooker/contrib and rosa2012.1/contrib. Packages for rosa2012.1/main will 
not be published, since formally we need to start QA process for them, 
but I don't think it makes much sense (since there is no change in 
functionality, we only need to ensure that new BRs work).

Denis Silakov, ROSA Laboratory.

More information about the rosa-devel mailing list