incubator-lucy-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David E. Wheeler" <da...@justatheory.com>
Subject Re: [lucy-dev] Failed: PAUSE indexer report KARMAN/Lucy-0.3.0.tar.gz
Date Fri, 02 Mar 2012 01:18:35 GMT
On Mar 1, 2012, at 3:09 PM, Marvin Humphrey wrote:

> *Our* code needs the version number because it has to be embedded in the Lucy
> shared object.  (The version number needs to be embedded in the shared object
> because the XSLoader::load() invocation from Lucy.pm validates the version and
> throws an error if they don't match.)
> 
> However, *our* code is no longer a problem, because I've changed it to use
> regexes rather than the Module::Build::ModuleInfo routine.

Okay.

> The current problem with Perl 5.14.1 seems to be that *Module::Build* wants to
> build MYMETA.json/MYMETA.yml when you run "perl Build.PL", and it apparently
> needs per-package version information for that.

Ah!

> Maybe we could persuade Module::Build not to run the version parsing code if
> we kept a current META.json file around, but I don't think that's a good
> solution.  First, META.json is a serious PITA to keep up-to-date.

    ./Build distmeta

>  Second,
> there's no guarantee that Module::Build won't run that version extraction code
> under other circumstances -- where and when M::B decides that it wants to run
> its version extraction routine is an implementation detail of M::B, since it
> assumes that routine is always safe to run.

Yeah.

>> * Why are you reading the version at all? If that's a subclass of
>>  Module::Build, you can just use $self->dist_version 
> 
> $self->dist_version is an X.Y.Z version number; $Lucy::VERSION is an X.YYYZZZ
> version number.  We need the X.YYYZZZ version number to build the XS
> extension so that it will match what is in Lucy.pm.
> 
> It is theoretically possible to derive an X.YYYZZZ version from an X.Y.Z
> version number, but I don't know whether dist_version() is going to give us a
> string or a version.pm object.  It is simpler to just pull it out of Lucy.pm
> ourselves with a regex than to guarantee that we can derive it under all
> possible configurations.

Pretty sure you could get a version.pm object out of it.

> 
>> * Module::Build::ModuleInfo is deprecated; use Module::Metadata instead.
> 
> Our own usage of Module::Build::ModuleInfo has now been eliminated entirely,
> so there is no longer any need to transistion to Module::Metadata.

Okay.

>>> It is hard to guarantee that that ModuleInfo code will not be run too soon, as
>>> it seems that Module::Build assumes it will always be safe.
>> 
>> It should be.  Lucy.pm should not `require Lucy`. It is choking on reading
>> the version from Lucy.pm, yes?
> 
> Module::Build is having problems reading lib/Lucy/Store/RAMFile.pm.  Here is
> that file's contents, minus comments:
> 
>    package Lucy::Store::RAMFile;
>    use Lucy; our $VERSION = $Lucy::VERSION;
> 
>    1;
> 
> Error message below.  Note that the build actually completes; it just
> complains loudly.

And it’s doing that when trying to build the MYMETA.json files?

In that case, I say use constant version declarations in each file have have your versioning
script update them all.

Best,

David



Mime
View raw message