Description of problem: I was looking through the output of "package-cleanup --problems" (from yum-utils) and I noticed the following: Package perl-Tk requires perl(Tk) >= 800.005 Package perl-Tk requires perl(Tk) >= 800.015 Package perl-Tk requires perl(Tk) >= 804.000 Sure enough, there are versioned perl(Tk) dependencies, but the package doesn't provide a versioned perl(Tk). $ rpm -q --requires perl-Tk | grep 'perl(Tk)' perl(Tk) perl(Tk) >= 800.005 perl(Tk) >= 800.015 perl(Tk) >= 804.000 $ rpm -q --provides perl-Tk | grep 'perl(Tk)' perl(Tk) It looks like the simple fix would be to add "Provides: perl(Tk) = %{version}" to the spec. Version-Release number of selected component (if applicable): perl-Tk-804.027-6.fc4
Makes sense... done
I believe there are more than a few affected packages out there (I'm not 100% sure if it's a problem or not), but it would be more productive to track down why rpmbuild's perl autoprov stuff doesn't grok the versioned one and see if it's fixable there instead of modifying all affected packages.
I was wondering why this was not done via autoprov in the first place. I will let it sit in there for now and we will see if it gets fixed in autoprov.
perl.prov says the following in the comments at the top: # If there are lines in the file which match the pattern # (m/^\s*\$VERSION\s*=\s+/) # then these are taken to be the version numbers of the modules. # Special care is taken with a few known idioms for specifying version # numbers of files under rcs/cvs control. And, sure enough, the pattern match is for '\$VERSION'. Tk.pm contains the following though: $Tk::VERSION = '804.027'; So the pattern match doesn't pick it up...
Once upon a time, I patched perl.req/perl.prov to accommodate stuff like this, see bug 61797 comment 2. If you want to start patching the Perl autodep stuff, that might save some time.