Eric Wilhelm wrote:
Is this related?

with version-0.7501 --

  $ perl Build.PL
  ...
  Can't determine distribution version, must supply
  either 'dist_version', 'dist_version_from', or 'module_name' parameter
  at /usr/local/code/perl_lib/active/Module/Build/Base.pm line 978.

Ignore my previous response. I installed Module::Build trunk and I see now that you were saying that it is currently impossible to build version.pm itself with Module::Build.

It has to do with the fact that I am changing the module_name parameter depending on whether we are building the XS or pure Perl code. This is required or the XS code doesn't build right, but the guts of new_from_file() seem to have changed so that it tries to find the module_name's instead of the dist_name's $VERSION (and hence fails).

If I do this:

=== Build.PL
==================================================================
--- Build.PL    (revision 443)
+++ Build.PL    (local)
@@ -48,6 +48,7 @@
 }
 if ( $perl_only or not $t->have_c_compiler() ) {
     $build_arguments{module_name} = 'version::vpp';
+    $build_arguments{dist_version_from} = './vperl/vpp.pm',
     $build_arguments{pm_files} = {
        './lib/version.pm' => './lib/version.pm',
        './vperl/vpp.pm' => './lib/version/vpp.pm',
@@ -56,6 +57,7 @@
 else {
     $build_arguments{c_source} = './vutil';
     $build_arguments{module_name} = 'version::vxs';
+    $build_arguments{dist_version_from} = './vutil/lib/version/vxs.pm',
     $build_arguments{pm_files} = {
        './lib/version.pm' => './lib/version.pm',
        './vutil/lib/version/vxs.pm' => './lib/version/vxs.pm'

then it works.

But, I think this is a serious regression, since the documentation for dist_version_from() clearly states that:

The version is extracted from the specified file according to
the same rules as ExtUtils::MakeMaker and "CPAN.pm".  It
involves finding the first line that matches the regular
expression

    /([\$*])(([\w\:\']*)\bVERSION)\b.*\=/

and doesn't say anything about the module_name being involved.

John

Reply via email to