Re: Integrating C::AC into MakeMaker/MB

[email protected] (Jens Rehsack)
Newsgroups perl.cpan.workers
Message-ID <[email protected]>
Am 09.12.2014 um 23:30 schrieb Leon Timmermans <[email protected]>:

> On Tue, Dec 2, 2014 at 10:45 AM, Jens Rehsack <[email protected]> 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.

Would be cool, thanks!

> > 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.

I can care for this (with some wise words from #toolchain).
What can be a reasonable approach for providing the "around"?

Using Class::Method::Modifiers and suggest bundling for distributions for ancient environments?
As far as I see it has only core dependencies...

inc::latest does a great job for bundling. It does exactly what I want to reach with ExtUtils::BundleMaker.
I tried it in LMU 0.400_010 - this sounds being a reasonable approach for distributions using ExtUtils::MakeMaker::Extensible.

Cheers
-- 
Jens Rehsack
[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.