Last week (and this week), I've taken Test::Dependencies and modified it to do something moderately useful to our project (and most projects): it now also processes Moose's 'with' and 'extends' statements in addition to 'use', the module takes a CPAN::Meta::Requirements object as an argument to check against -- instead of sourcing its dependencies itself from a (MY)META file -- meaning it can now be used with 'cpanfile' too; and some minor improvements.
Once we fix the issues listed below, I would like to keep doing the dependency tests with this modified version. I'll commit the modified module to our tree in t/lib and in the mean time (keep trying to) contact the author to see how to handle the situation to get it published on CPAN.
These are the results:
* We require 4 core modules which were in Perl Core before v5.10.1:
* We don't (directly) use these dependencies which we *do* declare:
* We use these non-core modules which aren't in the dependency listing:
The last category is easily addressible; we should simply list these in the cpanfile. CPAN has explicit instructions that all depended on modules should be listed and not one per distribution, in case things get packaged differently at some future date.
I think the first category can be resolved pretty quickly too: we depend on a fully working core Perl module set (unsurprisingly). So, these can be removed from the cpanfile.
In the middle category, I don't understand the presence of "Image::Size": it's there because we need to detect image sizes when generating PDF/PS output. However, we don't actually use it?
As for Starman: we're not explicitly referencing the package but we do use it through its scripts.
Then for the others: these are deps-of-deps for which we need a specific version for our application to work correctly. I think I should implement an 'ignore' list for those.
Robust and Flexible. No vendor lock-in.