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

Reply via email to