Hi there,
I'm creating a specfile for a CPAN module and I'm facing some issues with the Provides: tag.
The module I want to package (Nmap::Scanner) creates Perl namespaces on-the-fly using Class::Generate, so the perl.prov script can't detect them. This of course creates an incomplete list of Provides:, which conflicts with the list of Requires:. Therefore the RPM package cannot find the dependencies provided by itself.
I would like to know what would be the recommended alternative for adding the missing Provides:.
In Bug #167797 [1] there was the alternative of patching the code and submitting the patch upstream. In this case it would be unreasonable, since the module would have to be basically rewritten.
Should I just add a bunch of Provides: in the spec header like this?
Provides: perl(Nmap::Scanner::Address) Provides: perl(Nmap::Scanner::Distance) Provides: perl(Nmap::Scanner::ExtraPorts) Provides: perl(Nmap::Scanner::Host) Provides: perl(Nmap::Scanner::Hostname) Provides: perl(Nmap::Scanner::Hosts) Provides: perl(Nmap::Scanner::NmapRun) Provides: perl(Nmap::Scanner::OS) Provides: perl(Nmap::Scanner::OS::Class) Provides: perl(Nmap::Scanner::OS::Fingerprint) Provides: perl(Nmap::Scanner::OS::IPIdSequence) Provides: perl(Nmap::Scanner::OS::Match) Provides: perl(Nmap::Scanner::OS::PortUsed) Provides: perl(Nmap::Scanner::OS::TCPSequence) Provides: perl(Nmap::Scanner::OS::TCPTSSequence) Provides: perl(Nmap::Scanner::OS::Uptime) Provides: perl(Nmap::Scanner::Port) Provides: perl(Nmap::Scanner::RunStats) Provides: perl(Nmap::Scanner::RunStats::Finished) Provides: perl(Nmap::Scanner::ScanInfo) Provides: perl(Nmap::Scanner::Service) Provides: perl(Nmap::Scanner::Task) Provides: perl(Nmap::Scanner::TaskProgress)
[1] https://bugzilla.redhat.com/show_bug.cgi?id=167797
Thanks,
Pedro Padron ppadron@w3p.com.br
On 02/05/2010 04:29 PM, Pedro Padron wrote:
Should I just add a bunch of Provides: in the spec header like this?
Provides: perl(Nmap::Scanner::Address) Provides: perl(Nmap::Scanner::Distance) Provides: perl(Nmap::Scanner::ExtraPorts) Provides: perl(Nmap::Scanner::Host) Provides: perl(Nmap::Scanner::Hostname) Provides: perl(Nmap::Scanner::Hosts) Provides: perl(Nmap::Scanner::NmapRun) Provides: perl(Nmap::Scanner::OS) Provides: perl(Nmap::Scanner::OS::Class) Provides: perl(Nmap::Scanner::OS::Fingerprint) Provides: perl(Nmap::Scanner::OS::IPIdSequence) Provides: perl(Nmap::Scanner::OS::Match) Provides: perl(Nmap::Scanner::OS::PortUsed) Provides: perl(Nmap::Scanner::OS::TCPSequence) Provides: perl(Nmap::Scanner::OS::TCPTSSequence) Provides: perl(Nmap::Scanner::OS::Uptime) Provides: perl(Nmap::Scanner::Port) Provides: perl(Nmap::Scanner::RunStats) Provides: perl(Nmap::Scanner::RunStats::Finished) Provides: perl(Nmap::Scanner::ScanInfo) Provides: perl(Nmap::Scanner::Service) Provides: perl(Nmap::Scanner::Task) Provides: perl(Nmap::Scanner::TaskProgress)
I would do that, except I would version them:
Provides: perl(Nmap::Scanner::Address) = %{version} ...
~spot
Yes, forgot about the %{version}. Thanks!
2010/2/8 Tom "spot" Callaway tcallawa@redhat.com:
On 02/05/2010 04:29 PM, Pedro Padron wrote:
Should I just add a bunch of Provides: in the spec header like this?
Provides: perl(Nmap::Scanner::Address) Provides: perl(Nmap::Scanner::Distance) Provides: perl(Nmap::Scanner::ExtraPorts) Provides: perl(Nmap::Scanner::Host) Provides: perl(Nmap::Scanner::Hostname) Provides: perl(Nmap::Scanner::Hosts) Provides: perl(Nmap::Scanner::NmapRun) Provides: perl(Nmap::Scanner::OS) Provides: perl(Nmap::Scanner::OS::Class) Provides: perl(Nmap::Scanner::OS::Fingerprint) Provides: perl(Nmap::Scanner::OS::IPIdSequence) Provides: perl(Nmap::Scanner::OS::Match) Provides: perl(Nmap::Scanner::OS::PortUsed) Provides: perl(Nmap::Scanner::OS::TCPSequence) Provides: perl(Nmap::Scanner::OS::TCPTSSequence) Provides: perl(Nmap::Scanner::OS::Uptime) Provides: perl(Nmap::Scanner::Port) Provides: perl(Nmap::Scanner::RunStats) Provides: perl(Nmap::Scanner::RunStats::Finished) Provides: perl(Nmap::Scanner::ScanInfo) Provides: perl(Nmap::Scanner::Service) Provides: perl(Nmap::Scanner::Task) Provides: perl(Nmap::Scanner::TaskProgress)
I would do that, except I would version them:
Provides: perl(Nmap::Scanner::Address) = %{version} ...
~spot
On Monday 08 February 2010, Tom "spot" Callaway wrote:
On 02/05/2010 04:29 PM, Pedro Padron wrote:
Should I just add a bunch of Provides: in the spec header like this?
[...]
Provides: perl(Nmap::Scanner::Service) Provides: perl(Nmap::Scanner::Task) Provides: perl(Nmap::Scanner::TaskProgress)
I would do that, except I would version them:
Provides: perl(Nmap::Scanner::Address) = %{version} ...
IMHO versioning them this would be the right thing to do only if the generated classes actually end up having %{version} (expanded, obviously) as their version in Perl module terms ($VERSION).
Briefly peeking at the sources of Class::Generate I don't see any evidence that it would add any such version information to the generated classes.
packaging@lists.fedoraproject.org