On Tue, Dec 2, 2014 at 10:45 AM, Jens Rehsack <rehs...@gmail.com> wrote:

> > Seems reasonable - but as you know in not to distant future, they shall
> > also override CC, CCLD, ... (using ExtUtils::Builder or alike, instead
> > of plain cc).
> >
> > Does the return hash of this callback overrides all EU::MM constants?
>
> I think I can answer this question on my own:
>
> File-ConfigDir-Install sno$ git diff
> diff --git a/t/01-makefile.t b/t/01-makefile.t
> index 5e9bd38..2b0759c 100644
> --- a/t/01-makefile.t
> +++ b/t/01-makefile.t
> @@ -35,8 +35,12 @@ delete $ENV{PERL_MM_OPT};   # local::lib + PREFIX below
> will FAIL
>  WriteMakefile(
>      NAME              => 'File::ConfigDir::Install',
>      VERSION_FROM      => 'lib/File/ConfigDir/Install.pm',
> +    CONFIGURE => sub {
> +       {
>      INST_ETC          => "tlib-$$/etc",
>      INST_LIB          => "tlib-$$/lib",
> +       },
> +    },
>      MAKEFILE          => $FILE,
>      PREREQ_PM         => {},
>      ($] >= 5.005 ?
>
> $ make && perl -Mblib t/01-makefile.t
> cp lib/File/ConfigDir/Install.pm blib/lib/File/ConfigDir/Install.pm
> Manifying 1 pod document
> 'INST_ETC' is not a known MakeMaker parameter name.
> Generating a Unix-style test-21206-Makefile
> Writing test-21206-Makefile for File::ConfigDir::Install
> Writing MYMETA.yml and MYMETA.json
> ok 1 - Created test-21206-Makefile
> ok 2 - Recognized: t/etc/fsd-install.json
> # make -f test-21206-Makefile
> # cp t/etc/fsd-install.json tlib-21206/etc/fsd-install.json
> # Manifying 1 pod document
> ok 3 - Copied to blib for dist: t/etc/fsd-install.json
> ok 4 - Same content: t/etc/fsd-install.json
> # make -f test-21206-Makefile
> DESTDIR=/var/folders/5s/sk58jrwj7jj73phc9lcx9nh80000gn/T/cgOOrG5f45 install
> # Skip tlib-21206/etc/fsd-install.json (unchanged)
> # Manifying 1 pod document
> # Installing
> /var/folders/5s/sk58jrwj7jj73phc9lcx9nh80000gn/T/cgOOrG5f45/Users/sno/perl5/perlbrew/perls/perl-5.20.0/man/man3/File::ConfigDir::Install.3
> # Installing
> /var/folders/5s/sk58jrwj7jj73phc9lcx9nh80000gn/T/cgOOrG5f45/Users/sno/perl5/perlbrew/perls/perl-5.20.0/etc/fsd-install.json
> # Appending installation info to
> /var/folders/5s/sk58jrwj7jj73phc9lcx9nh80000gn/T/cgOOrG5f45/Users/sno/perl5/perlbrew/perls/perl-5.20.0/lib/5.20.0/darwin-2level/perllocal.pod
> # Checking for
> /var/folders/5s/sk58jrwj7jj73phc9lcx9nh80000gn/T/cgOOrG5f45/Users/sno/perl5/perlbrew/perls/perl-5.20.0/etc/fsd-install.json
> ok 5 - Installed: t/etc/fsd-install.json
> 1..5
>
> So neither the warning goes away nor existing constants are overwritten.
>

Right. There seem to be two layers of verification, I had missed the second
one. That is a bummer. There should be a way around this, I just need to
find it.


>
> > For some reason File::ConfigDir::Install doesn't just override postamble,
> > it modifies the "install_*_*" instructions ...
> > ...BigHelper (mohawk pointed to that) does something similar.
>
> I think there is more a hook like
> https://metacpan.org/pod/Class::Method::Modifiers#around-method-s-sub
> needed for each of overloaded function ...
>

Right. There really ought to be a ExtUtils::MakeMaker::Extensible layer to
make this all easier.

Leon

Reply via email to