Hi,

I have a problem which is slightly off-topic from a "pure PAR" perpective, but 
as it affects PAR build size (and time),
someone of the PAR community might have a solution/idea/comment.
The problems described below don't hurt that much for PAR building, but do 
cause lots of overcautious "uses" indications
when trying to build a module dependency graph.

As an example, take the SOAP::Lite module, which uses SOAP::Transport::HTTP, 
which uses URI, which uses URI::*,
which then may use e.g. POEx::URI (if installed).
SOAP::Transport::HTTP contains a few packages itself - one example is 
SOAP::Transport::HTTP::FCGI, which requires FCGI -
as a consequence, FCGI will automagically end up on the "uses" list of 
SOAP::Transport::HTTP.

Phenomena found with Module::ScanDeps 1.07:
        First, I have found that Module::ScanDeps::scan_deps (with recurse => 
0) also list included usage,
        at least if all Perl modules in the hierarchy are being parsed.
        Regarding the above example, that means SOAP::Transport::HTTP is 
claimed to directly use the URI/*.pm stuff.

        Second, the _glob_in_inc functionality simply causes all *installed* 
files being marked as "used" -
        regarding the URI/*.pm example, this brings in POEx::URI, which will be 
never needed unless I really use poe:// URLs.
        The main difference between URI/poe.pm and most other URI/*.pm 
submodules is that URI/poe.pm does not belong
        to the URI package (information can be derived from .packlist).
        This leads us to the insight that there are "strict" uses, and 
"facultative" ones.

        Third - revisiting the FCGI example from above.
        Package SOAP::Transport::HTTP::Server (in file 
SOAP::Transport::HTTP.pm) also states "use URI;",
        and then URI seems to be actually used in a subsequent package 
(SOAP::Transport::HTTP::Daemon) in that file ...
        The difference between this strict [mis]use and the FCGI example is 
that FCGI use will be definitely only in scope
        as a dependency of the SOAP::Transport::HTTP::FCGI package - if that is 
ever used.
        Here the insight is that dependencies happen on package level, not on 
module level.

Summary trial: Perl dependencies are created on package level, where packages 
happen to be implemented in modules
(not always "their" one and only), and modules happen to be delivered via 
distributions (also sometimes more than one).

For serious dependency studies, "uses" should give a hint whether the actual 
usage is strict of facultative. Anything inside an eval
could be seen as facultative. [PAR should pack facultative files of the same 
distribution.]

Thus, I wonder whether the present Module::ScanDeps parsing touches a wall (or 
ceiling) - in other words, whether it would make sense
to deploy the parsing job to e.g. something PPI based. Without a decent 
hierarchy tree based view of a Perl module,
parsing might become a nightmare.

Any opinions / remarks / contradictions are highly welcome ..

Cheers,
        Markus


P.S.:   Related problems on top are that META files (if they are present and 
complete) don't get installed, and the .packlists
        might contain outdated / deleted(moved) files, and the @INC tree might 
contain both outdated and new versions ...




MARKUS JANSEN

Ericsson Deutschland GmbH
Ericsson Allee 1
52134, Herogenrath, Germany
Phone +49 2407 575 5157
Fax +49 2407 575 14761
Mobile +49 172 2742003
markus.jan...@ericsson.com
www.ericsson.com


http://www.ericsson.com/

Ericsson GmbH. Sitz: Düsseldorf. Registergericht: Amtsgericht Düsseldorf, HRB 
33012. Geschäftsführer: Stefan Koetz. Aufsichtsratsvorsitzender: Anders Olin

This Communication is Confidential. We only send and receive email on the basis 
of the terms set out at 
www.ericsson.com/email_disclaimer<http://www.ericsson.com/email_disclaimer>.



<<inline: Picture (Metafile) 1.jpg>>

Reply via email to