Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

drhyde (1683)

  (email not shown publicly)

Journal of drhyde (1683)

Saturday August 04, 2007
12:43 PM

CPAN dependencies and test results checker

[ #33991 ]

After a discussion on the perl-qa list, and being blessed with a few hours free time, I wrote a shiny thing, which, given a module name on the CPAN, will find all its dependencies, and their dependencies yea even unto the Nth generation, and display a nice shiny report on their CPAN-testers results.

I expect it to be useful for authors trying to decide what to depend on (you don't want to depend on stuff that itself has fragile dependencies) and also for people trying to figger out why the hell some random module won't install.

To see half the CPAN, try pointing it at Angerwhale.

update: it now calculates the likelihood of a trouble-free install, and has been made much faster by having a local copy of the CPAN testers database and moving to mod_perl

The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
More | Login | Reply
Loading... please wait.
  • Any query page is very slow to load, even after querying the same module a second time right away.

    • Added some caching now, which makes it quite a bit better. It's still slow though, because:
      • It's on the cheapest hosting provider I could find;
      • It uses CGI
      It's intended mainly as a proof-of-concept. Hopefully someone will pick it up and integrate it into the cpan-testers site and do all the boring work of making it mod_perl-safe :-)
  • This is quite helpful. I know Angerwhale is a pain to install, but now I can see that Crypt::OpenPGP is the flakiest module I depend on (and mostly because it depends on other flaky modules).

    Crypt::OpenPGP will be optional Real Soon Now.

    And BTW, I think Plagger and Jifty both have more dependencies. :)
  • That's pretty rad. Is there anything that will detect & show circular dependencies?


  • Pretty & cool!

    Compute this once per night/weekend for all the modules in the CPAN to draw pretty graphs.

    Add an option of ignoring modules that begin with Test:: and are included only because of modules beginning with Test::

    • If I were to pre-compute results, then probably the thing to do is to drive it off the CPAN recent uploads list. I won't ignore Test::* dependencies, because if someone lists one of 'em as a pre-requisite then its failures are just as important as failures in any other dependency. Which, by a rather convoluted route, brings us back to the mailing list thread that spawned this, in which people were grumbling about Test::Pod etc causing failures.
  • Speaking from a porters point of view i've seen _so_ many modules with wrong and/or hidden dependencies that i hardly believe the results will be satisfactory to all of us.
    Even if you just focus on build/run-depends you'll notice many inconsistencies :-/

    Sure it's a nice to have - but unfortunately not as reliable as we might hope.

    The most effective way... would be correct dependencies or collecting them manually... or better: allow to mark wrong dependencies so we have a way to identify them and file proper
  • This is a very nifty thing you have built.

    One can look at barbie's statistics on modules that fail [] and [] and then rebound off domm's Kwalitee pages that provides the crucial list of which modules/dists depend on a flakey module.

    This would then allow people to hone in on unloved, critical modules and see if the author is no longer interested in them and take over maintenance (or maybe the author doesn't realise these tools exist these da

  • If memory serves, the "record" (in my experience) for most dependencies, when built with ssh1 and ssh2 support and all the optional encryption stuff, was Net::SSH::Perl [].

    That only shows 18 because it can't figure out all the dependencies. The final tally was over 30, iirc. And that was only if you were lucky enough to get Math::Pari to build.

  • I've abstracted out the bit that finds dependencies, it's now on the CPAN, as CPAN::FindDependencies. It also installs a 'cpandeps' script.