Ken Williams wrote:
>>   if ($args{makefile_env_macros}) {
>>     require Module::Build::Compat;
>>     %args = (%args, Module::Build::Compat->makefile_to_build_macros);
>>   }
> 
> It shouldn't be doing that.  makefile_to_build_macros() returns args
> suitable for the command-line, which might not fit neatly into a hash. 
> For instance, there can be duplicate keys (e.g. --install_path), in
> addition to the problem you noticed.

Then you shouldn't be assigning makefile_to_build_macros() to a hash in the
first place (i.e. it should be @args), or else I'm missing the point.

However, your fix is equivalent to mine, in that all of the others

        qw(DESTDIR PREFIX INSTALL_BASE UNINST)

go through this code (lib/Module/Build/Compat.pm line 176):

    if (exists $makefile_to_build{$key}) {
      my $trans = $makefile_to_build{$key};
      push @out, ref($trans) ? $trans->($val) : ("--$trans", $val);
    } elsif (exists $Config{lc($key)}) {
      push @out, '--config', lc($key) . "=$val";
    } else {
      # Assume M::B can handle it in lowercase form
      push @out, "--\L$key", $val;
    }

which does precisely the same thing (i.e. prepends '--' to the $trans name if it
isn't a function.

John

Reply via email to