Bug 43081 - omitted 'provides'-information for packages containing perl
Summary: omitted 'provides'-information for packages containing perl
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: rpm
Version: 7.1
Hardware: i386
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Crutcher Dunnavant
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2001-05-31 16:56 UTC by Daniel Resare
Modified: 2008-05-01 15:38 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2003-01-01 18:46:54 UTC
Embargoed:


Attachments (Terms of Use)
a patch for the two problems decribed (1.70 KB, patch)
2001-05-31 16:58 UTC, Daniel Resare
no flags Details | Diff
when starting to use perl dependencies for real, some pragmas needs to be provided by perl (1.09 KB, patch)
2001-06-01 09:36 UTC, Daniel Resare
no flags Details | Diff

Description Daniel Resare 2001-05-31 16:56:01 UTC
Description of Problem:
Due to a bug in /usr/lib/rpm/perl.prov a bogous POD-directive in a perl
module overshadows all provides symbols until an inverted POD-directive
shows up. This is because the internal state of the '..' operator in perl
is persistant between function calls.

How Reproducible:
Build a reasonably big program with perl modules (the easy example is
'perl') and check the 'provides' output. Compare to the list of included
modules, and you will see that it don't match. For example perl-5.6.0-12
includes the IO::Handle module, but don't advertise it in the 'Provides' field.

Additional Information:
The effects of this bug is overshadowed of the fact that requires is not
correctly checked when building new perl programs

I will attach a patch that fixes those two problems. Those will lead to a
chain reaction of things needed to be fixed (for for example perl doesnt
provide 'perl(strict)' that most installed scripts require)

Comment 1 Daniel Resare 2001-05-31 16:58:15 UTC
Created attachment 20037 [details]
a patch for the two problems decribed

Comment 2 Daniel Resare 2001-06-01 09:36:01 UTC
Created attachment 20074 [details]
when starting to use perl dependencies for real, some pragmas needs to be provided by perl

Comment 3 Jeff Johnson 2001-06-01 19:31:26 UTC
OK, I've merged the find-{requires,provides}.perl changes into the main
find-{requires,provides}, so the find-*.perl stuff can be removed.
Changes are in CVS on the rpm-4_0 branch, will be in rpm-4.0.3-0.31
as well.

What's still bothersome is that perl.prov takes like ~150MB to do it's
dirty when invoked as
	find /usr/lib -type f | /usr/lib/rpm/perl.prov
Any chance that you could take a look at *why* perl.prov consumes
so much memory? TIA ...

Comment 4 Jeff Johnson 2001-06-01 20:14:40 UTC
Off to perl to add the Provides to the spec file ...

Comment 5 Crutcher Dunnavant 2001-06-14 00:47:42 UTC
adding provides

Comment 6 Eugene Byrganov 2001-07-12 06:57:19 UTC
I have found ERROR in rpm-4.0.2/scripts/find-requires.perl:
 perllist=
 for f in $scriptlist; do
     [ -x $f ] || continue
     */perl) perllist="$perllist $f" ;;
     esac
 done | sort -u
 
 perllist always be empty after this code, because subshell use.
 Try 'echo perllist=$perllist 1>&2'. Why  need  '| sort -u'?

rpm-4.0.2-perl-provides.patch don't correct this bug.


Comment 7 Daniel Resare 2003-01-01 18:46:54 UTC
From what I can see this bug seems fixed in Phoebe (rpm-4.2-0.25.1, perl-5.8.0-73).

Eugene, could you please file another bug with the oddity you've found.
Preferably with a simple test case showing that things actually go wrong as a
result of what you describe.


Note You need to log in before you can comment on or make changes to this bug.