I am trying to run WriteMakefile twice. On the 2nd run of WriteMakefile the MY overloads are ignored. The makefile doesn't have the custom postamble section. How do I fix this? Is my MY package code wrong or is this a MakeMaker bug?
use 5.010000; use ExtUtils::MakeMaker; use Config qw(%Config); # See lib/ExtUtils/MakeMaker.pm for details of how to influence # the contents of the Makefile that is written. %param = ( NAME => 'MM123', VERSION_FROM => 'lib/MM123.pm', # finds $VERSION PREREQ_PM => {}, # e.g., Module::Name => 1.1 ($] >= 5.005 ? ## Add these new keywords supported since 5.005 (ABSTRACT_FROM => 'lib/MM123.pm', # retrieve abstract from modu +le AUTHOR => 'A. U. Thor <a.u.thor@a.galaxy.far.far.away>' +) : ()), # e.g., '-lm' DEFINE => '', # e.g., '-DHAVE_SOMETHING' INC => '-I.', # e.g., '-I. -I/usr/include/other' ); WriteMakefile(%param); WriteMakefile(%param); package MY; sub postamble { print "postamble hook worked\n"; return ' # POSTAMBLE WORKED '; }
below is file "./lib/MM123.pm"
package MM123; use strict; use warnings; require Exporter; our @ISA = qw( Exporter ); # Items to export into callers namespace by default. Note: do not expo +rt # names by default without a very good reason. Use EXPORT_OK instead. # Do not simply export all your public functions/methods/constants. # This allows declaration use MM123 ':all'; # If you do not need this, moving things directly into @EXPORT or @EXP +ORT_OK # will save memory. our %EXPORT_TAGS = ( 'all' => [ qw( ) ] ); our @EXPORT_OK = ( @{ $EXPORT_TAGS{'all'} } ); our @EXPORT = qw( ); our $VERSION = '0.01'; # Preloaded methods go here. 1;
command line output
C:\pl\mmbug>perl makefile.pl postamble hook worked Writing Makefile for MM123 Writing Makefile for MM123 C:\pl\mmbug>
Why am I runing WriteMakefile twice? I need to see the final version of certain macros (CCFLAGS, LINKTYPE, OPTIMIZE, etc). MM parameters can be set on the commandline to makefile.pl, in the hash given to WriteMakefile, or in $Config. The macros can also be overridden on the command line directly to the make tool, but I think that that is unsupportable (if you have an idea how to change dependency targets and other macros based on parsing existing macros set as env vars, cl options to nmake tell me). Certain MM macros are generated usually, and are almost never parameters (LINKTYPE). WriteMakefile returns a MM object, this can be looked inside for the final macro values. Then I can set up the MY package overloads to generate the correct makefile. The problem is the MY package overloads don't run on the 2nd run of WriteMakefile. I also tried running MM directly as "my $mm = MM->new({@_});", same problem. On the 2nd run, MY overloads are ignored.

In reply to 2nd run of WriteMakefile ignores MY overloads by bulk88

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.