Something came up on the SVK list that eventually boiled down to a problem with
how new_from_file() handles $VERSION resolution. I'm not sure yet how to fix
it, but I wanted to document it first, so maybe someone else will have a good
idea how to fix it for good.
For example, create these three modules (each package in a different file):
--------------------------------
package My::MainModule::Version;
use version; our $VERSION = qv('2.0.0');
--------------------------------
package My::MainModule;
use My::Deep::Version; our $VERSION = $My::Deep::Version::VERSION;
--------------------------------
package My::MainModule::Other;
use My::Deep::Version; our $VERSION = $My::Deep::Version::VERSION;
--------------------------------
What happens is that when generating the META.yml for My::MainModule, the
provides hash will display module versions:
1) as empty values iif the My::MainModule::Version has never been installed;
2) as the currently installed $VERSION if My::MainModule::Version _has_ been
installed in the past.
The problem is that new_from_file is too careful and doesn't load the new
My::MainModule::Version while eval'ing the other modules which depend on it.
This is, to say the least, counter-intuitive. The workaround for module
authors is to install the new release, then regenerate the META.yml, which will
now contain the "new" $VERSION (which is to say the installed one)...
John