in reply to Optimizing an autobundle?
I have a rough start that I'm working on. Roughly I use a CPAN::Mini minicpan, a mod::CPAN::SQLite database, and attempt to pull prereqs information from the META.{json,yml} files (via Archive::Tar) and order with Graph's topological_sort.
It mostly worked, but depends on modules having proper and good dependency info in their META.
Since I'm planning on the great "do 5.10.x, 5.12.x, 5.14.x (OMG our work Perl is ancient!) migration path (across Solaris sparc/x86 and Linux and maybe OS X no less (screw Windows))... I worked out a better way for my purposes. I hacked up a cpan shell that logs every successful distribution installed (even the automatically followed ones) in a nice asked_for_this, dist_name, dist_version, dist_file_path, install_date tuple. That way after building the first install, I can filter and replay the remaining installs in the same CPAN calculated order.
My priorities were to get some basic CPAN pimping and then the various hard XS stuff (SNMP, DBDs, SSL, XML, stuff that uses external libraries that we have installed in strange places) out of the way first before blowing through all the other easy XS and PP things.
If you're just interested in not having CPAN stop, just configure it to automatically follow dependencies and stop on failure. It will still fail when it's going to fail and do all the work for you when it works (which is usually unless your system is as weird as mine).
|
|---|