[prev in list] [next in list] [prev in thread] [next in thread] 

List:       perl-module-build
Subject:    Bootstrap problem in new_from_file()
From:       <jpeacock () rowman ! com>
Date:       2006-12-25 21:22:21
Message-ID: 4daded86af4d61575aecdae2e9bd4afb () localhost
[Download RAW message or body]

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic