Bug 198033
Summary: | [patch]: tweak perl.req to cut down false Requires | ||||||||
---|---|---|---|---|---|---|---|---|---|
Product: | [Fedora] Fedora | Reporter: | J. Randall Owens <jrowens.fedora> | ||||||
Component: | rpm | Assignee: | Paul Nasrat <nobody+pnasrat> | ||||||
Status: | CLOSED UPSTREAM | QA Contact: | Mike McLean <mikem> | ||||||
Severity: | low | Docs Contact: | |||||||
Priority: | medium | ||||||||
Version: | 5 | CC: | kestes, rdieter | ||||||
Target Milestone: | --- | ||||||||
Target Release: | --- | ||||||||
Hardware: | All | ||||||||
OS: | Linux | ||||||||
Whiteboard: | |||||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||||
Doc Text: | Story Points: | --- | |||||||
Clone Of: | Environment: | ||||||||
Last Closed: | 2006-07-08 14:08:14 UTC | Type: | --- | ||||||
Regression: | --- | Mount Type: | --- | ||||||
Documentation: | --- | CRM: | |||||||
Verified Versions: | Category: | --- | |||||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||||
Cloudforms Team: | --- | Target Upstream Version: | |||||||
Embargoed: | |||||||||
Bug Depends On: | |||||||||
Bug Blocks: | 198027 | ||||||||
Attachments: |
|
Description of problem: False requirements for many perl packages; the latest example that happened to come to my attention while I was learning a bit of spec file work anyway was perl-Image-ExifTools. /usr/lib/rpm/perl.req finds some lines that are actually quoted by q{} but have "use..." at the beginning of a line. It interprets these as perl dependencies (could happen for "require..." too, but that's not such a common word). Version-Release number of selected component (if applicable): rpm-4.4.2-15.2 perl-5.8.8-5 perl-Image-ExifTools-6.26-1.fc5 How reproducible: Try to install perl-Image-ExifTools, either from downloaded package or a frontend that should find dependencies for you, e.g. yum or smart, or even from SRPM. Steps to Reproduce: 1. download perl-Image-ExifTools-6.26-1.fc5.noarch.rpm & perl-Image-ExifTools-6.26-1.fc5.src.rpm 2. rpm -Uhv perl-Image-ExifTools-6.26-1.fc5.noarch.rpm 3. rpm -i perl-Image-ExifTools-6.26-1.fc5.src.rpm ; rpmbuild -ba SPECS/perl-Image-ExifTool.spec ; rpm -Uhv RPMS/noarch/perl-Image-ExifTools-6.26-1.fc5.noarch.rpm Actual results: error: Failed dependencies: perl(the) is needed by perl-Image-ExifTool-6.26-1.fc5.noarch Exit 1 Expected results: Preparing... ########################################### [100%] 1:perl-Image-ExifTool ########################################### [100%] Additional info: $ rpm -qp --requires perl-Image-ExifTool-6.26-1.fc5.noarch.rpm /usr/bin/perl perl >= 0:5.002 perl >= 0:5.004 perl(:MODULE_COMPAT_5.8.8) perl(Exporter) perl(File::RandomAccess) perl(Image::ExifTool) perl(Image::ExifTool::APP12) perl(Image::ExifTool::ASF) perl(Image::ExifTool::Canon) perl(Image::ExifTool::Exif) perl(Image::ExifTool::GPS) perl(Image::ExifTool::ID3) perl(Image::ExifTool::MakerNotes) perl(Image::ExifTool::Nikon) perl(Image::ExifTool::Real) perl(Image::ExifTool::Shortcuts) perl(Image::ExifTool::XMP) perl(strict) perl(the) <====- this is the one perl(vars) rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(VersionedDependencies) <= 3.0.3-1 I poked around in /usr/lib/rpm/perl.req, after a verbose rpmbuild showed me that's what was finding those dependencies. I think I have an improvement that will cut down on such things without missing too much. I have a patch for a regular version, attached here, and then I'll do a second attachment with a perl.req-test, which outputs the chunks that were skipped over by my bit, plus the two characters it found and is looking for, for debugging (I'm sure my regexp has room for improvement). It's not perfect, but neither is what we have now. I think it's a little bit better. I ran rpmbuild after setting %__perl_requires in my .rpmmacros, it installed just fine, and a diff of the outputs of `rpm -qp --requires` on each package shows that the only difference there is perl(the). I'm adding the author whose email is in comments in perl.req as a Cc: to this, since I'm not sure just who has the overall authority on the contents. I'm also listing the perl-Image-ExifTool bug I'd already reported as an "external" bug reference; I'm not sure just how that works, so please be forgiving if I should've just skipped it. Created attachment 132101 [details]
patch for /usr/lib/rpm/perl.req with debugging output
Extra patch with some debugging output.
Oh, and as an extra note, here are other related bugs I found while looking to see whether my patch might best be attached to one of them: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=109934 (with a patch right where mine goes) https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=130531 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=157195 https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=161921 There seems to be some debate on whether to go with perl.req or perldeps.pl --requires, but here this is for what it's worth. No worries if it ends up on the cutting room floor. Yah, Requires: perl(the) comes back againa and again and again, everyone is dying to tell me about perl.req problems even if the real problem is the inability to upgrade rpm with a "fix" ;-) The problem really needs to be approached per-distro release, not in rpm, since there are filters in pkgs as well as multiple versions of perl.req floating around. Too bad that FC has insufficient QA clue to undertake running this rpm-4.4.3 command on an "everything" clean install: /usr/lib/rpm/rpmdeps --perl -vv That command finds Provides: from all installed perl scripts, and matches against Requires: from packages, and prints out any unmatched dependencies. The command is not perfect, mind you, there's an even better script on <rpm-perl.duke.edu> but it also demonstrates how easy the QA pn perl(...) would be to do if anyone really cared. Thanks for the patch. Added to rpm cvs, will be in rpm-4.4.7-0.13 and later when built/released. Oh, I forgot to mention, the patch also cleans up a few typos in comments, and removes the irrelevant and probably cycle-wasting case-insensitive option on a pair of regexps where it doesn't matter. Figured I might as well hit those while I was at it. |
Created attachment 132100 [details] patch for /usr/lib/rpm/perl.req