Bug 58536
| Summary: | dependancy problem with perl *.ph files | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Retired] Red Hat Linux | Reporter: | dharris | ||||
| Component: | rpm-build | Assignee: | Jeff Johnson <jbj> | ||||
| Status: | CLOSED RAWHIDE | QA Contact: | |||||
| Severity: | medium | Docs Contact: | |||||
| Priority: | medium | ||||||
| Version: | 7.2 | ||||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | i386 | ||||||
| OS: | Linux | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | Doc Type: | Bug Fix | |||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2002-01-19 00:08:39 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: | |||||||
| Attachments: |
|
||||||
Created attachment 42854 [details]
This is the patch that I am using to remove adding *.ph requirements.
Integrated with your other patch, should be in rpm-4.0.4-0.17. Thanks again! |
Description of Problem: Perl uses .ph files as kind of "perl header" files, where standard C header files are translated into perl. This way, perl scripts that need to get at the value of a C preprocessor define can still do get this value by including the appropriate .ph file. The RPM automatic provides and requires detection mechanism doesn't work right in regard to .ph files: it detects when a package requires a .ph file, but not when a package provides a .ph file. Version-Release number of selected component (if applicable): rpm-devel-4.0.3-1.03 SHELL SESSION TRANSCRIPT WITH COMMENTARY THAT SHOWS BUG ------------------------------------------------------------------ I have a SPEC file generated by /usr/lib/rpm/cpanflute to build a perl extension that I created. This extension uses the .ph file "syscall.ph". The SPEC file includes the following lines that help determine how requirements are generated: Provide perl-specific find-{provides,requires}. %define __find_provides /usr/lib/rpm/find-provides.perl %define __find_requires /usr/lib/rpm/find-requires.perl I build the extension and see that the requirements are: # ./rpm -ba SPECS/*.spec [[snip]] # rpm -qp RPMS/i386/perl-drhperllib-1.15-7.i386.rpm --requires perl >= 0:5.00503 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(VersionedDependencies) <= 3.0.3-1 perl(Authen::PAM) perl(Carp) perl(Cwd) perl(Exporter) perl(strict) perl(syscall.ph) perl(vars) Notice the "perl(syscall.ph)" requirement. This was generated by /usr/lib/rpm/find-requires.perl when it called /usr/lib/rpm/perl.req and the following line was found in my module: require 'syscall.ph'; The problem is that the perl module does not provide "perl(syscall.ph)", even though it contains the syscall.ph file: # rpm -q perl --provides | grep syscall [[no output]] # rpm -ql perl | grep syscall /usr/lib/perl5/5.6.0/i386-linux/asm/syscall.ph /usr/lib/perl5/5.6.0/i386-linux/linux/syscall.ph Ack! This means that I can't install my RPM without a dependency failure. Lets try: # rpm -ih RPMS/i386/perl-drhperllib-1.15-7.i386.rpm error: failed dependencies: perl(syscall.ph) is needed by perl-drhperllib-1.15-7 Yup. Not fun! RECOMENDED FIX ---------------------------------------------------------- I simply modified /usr/lib/rpm/perl.req so that it does not create requirements for .ph files. I'll include a patch for this. The proper solution might be to modify the provides/requires mechanics so that the .ph files are added to the provides list and then provided by the perl package. However, this requires rebuilding the perl package, which I am not up to doing right now. This is something that RedHat could do on Red Hat Linux version upgrade.