how to prevent rpmbuild from incorrectly discovering a Perl module (non)dependency

Fulko Hew fulko.hew at gmail.com
Fri May 13 20:12:46 UTC 2011


On Fri, May 13, 2011 at 2:40 PM, Tim Mooney <Tim.Mooney at ndsu.edu> wrote:

> In regard to: how to prevent rpmbuild from incorrectly discovering a
> Perl...:
>
>
>  What I have in one of my Perl programs something like:
>>
>> print <<EOF;
>>   use Net::SNMP::AgentX qw(:types :pdus :errors :options);
>> EOF
>>
>> So my code 'emits' a line of text that contains a 'use' statement,
>> but it does not actually ever execute that 'use' statement,
>> therefore _my_ package is NOT dependent on that module.
>>
>
> Perl is incredibly challenging to parse correctly, which is why the
> dependency generator sometimes gets it wrong.
>
> The easiest thing to try would be to break your very small here-doc into
> pieces that the dependency detector won't notice.  Something like
>
>        print 'use ';
>        print 'Net::SNMP::AgentX ';
>        print 'qw(:types :pdus :errors :options);';
>        print "\n";
>
> or
>
>        print join(' ', 'use', 'Net::SNMP::AgentX',
>                'qw(:types :pdus :errors :options);'), "\n";
>

Thanks, I didn't think of that... I'll try it.

In the mean time, I added the following statement to my spec file:

          Provides: perl(Net::SNMP::AgentX)

I know I'm lying, but it got around my issue.

As long as we're talking about the 'challenging to parse correctly issue:

I also have a case like:

      return "" unless (eval "use GraphViz; 1");

And it _doesn't_ detect the 'use' inside of 'evals' so I have manually
added Requires: directives for those cases.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rpm.org/pipermail/rpm-list/attachments/20110513/d9af3cea/attachment.html>


More information about the Rpm-list mailing list