: thetango SRPM dependency system

Prarit Bhargava prarit at redhat.com
Sun Jul 1 23:47:20 UTC 2007


Hi Axel,
>
> How can thetango know that perl-Foo will be providing perl(Bar) which
> perl-Baz BuildRequires?
>   

Good question, and I knew someone was going to ask how I got around that 
particular issue.  perl-* was a real pain to deal with.

/usr/lib/rpm/perl.prov is run on every source package to generate a 
close-to-complete list of perl(Bar::Foo) includes.

I explode the source, but do not compile, and run perl.prov on it.  This 
generates the perl(Bar::Foo) package entries.

For example perl-AppConfig-1.64-1.fc7.src.rpm provides:

perl-AppConfig
perl(AppConfig)
perl(AppConfig::Args)
perl(AppConfig::CGI)
perl(AppConfig::File)
perl(AppConfig::Getopt)
perl(AppConfig::State)
perl(AppConfig::Sys)

> E.g. how can any automatic provides be guessed by thetango? A
> not-too-far away goal is to have a perl()-like system for python and
> other languages, which means more and more BRs depending on virtual
> automatic provides that you can only detect after a build, not before.
>
>   
IIRC, there were only a handful of these.  I haven't decided what to do 
with these packages.  It maybe useful to have an additional list 
(perl-prov?) that is queried and perl.prov is run on them if they are in 
the list.

perl(mod_perl2) mod_perl-2.0.3-7.src.rpm
perl(Apache2::Cookie) libapreq2-2.09-0.rc2.4.fc7.src.rpm
perl(Apache2::Request) libapreq2-2.09-0.rc2.4.fc7.src.rpm
perl(Apache::Test) mod_perl-2.0.3-7.src.rpm
perl(Config) perl-5.8.8-18.fc7.src.rpm
perl(Data::UUID) uuid-1.5.1-3.fc7.src.rpm
perl(Errno) perl-5.8.8-18.fc7.src.rpm
perl(Image::Magick) ImageMagick-6.3.2.9-3.fc7.src.rpm
perl(Mail::SpamAssassin) spamassassin-3.2.0-1.fc7.src.rpm
perl(Newt) newt-0.52.6-3.fc7.src.rpm
perl(RRDs) rrdtool-1.2.23-3.fc7.src.rpm
perl(SVN::Core) subversion-1.4.3-4.src.rpm
perl(XML::SAX::Base) perl-XML-SAX-0.15-1.noarch.rpm
perl(XML::SAX::Exception) perl-XML-SAX-0.15-1.noarch.rpm
php-pear(PEAR) php-pear-PEAR-Command-Packaging-0.1.2-5.fc6.src.rpm

As I point out in the code, this same process needs to be done for python.

P.



> I guess that if thetango cannot compute the depdency then it probably
> gets discarded to at least get some better ordering, but the final
> build will still need a brute force iterative approach.
>
>   

Nope.  This absolutely is 100 times better than a brute force iterative 
approach.  IMO of course :)

P.




More information about the Fedora-buildsys-list mailing list