Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^2: Problem installing Carp-1.25 under DWIM Perl

by Anonymous Monk
on May 22, 2012 at 07:44 UTC ( #971737=note: print w/ replies, xml ) Need Help??


in reply to Re: Problem installing Carp-1.25 under DWIM Perl
in thread Problem installing Carp-1.25 under DWIM Perl

I have proposed (with no success)

Where did you propose?


Comment on Re^2: Problem installing Carp-1.25 under DWIM Perl
Replies are listed 'Best First'.
Re^3: Problem installing Carp-1.25 under DWIM Perl
by bojinlund (Priest) on May 22, 2012 at 09:44 UTC

    I have sent the following patch to the maintainer of ExtUtils-MakeMaker

    diff -u -r t:/makeMaker/ExtUtils-MakeMaker-6.62/lib/ExtUtils/MakeMaker +.pm t:/makeMaker/ExtUtils-MakeMaker-modified/lib/ExtUtils/MakeMaker.pm --- t:/makeMaker/ExtUtils-MakeMaker-6.62/lib/ExtUtils/MakeMaker.pm 2012-04-01 09:02:31.450034700 +0200 +++ t:/makeMaker/ExtUtils-MakeMaker-modified/lib/ExtUtils/MakeMaker.pm 2012-04-01 09:03:05.508694300 +0200 @@ -620,17 +620,13 @@ $argv =~ s/^\[/(/; $argv =~ s/\]$/)/; + push @{$self->{RESULT}}, $self->makefile_head; push @{$self->{RESULT}}, <<END; -# This Makefile is for the $self->{NAME} extension to perl. -# -# It was generated automatically by MakeMaker version +# This file was generated automatically by MakeMaker version # $VERSION (Revision: $Revision) from the contents of # Makefile.PL. Don't edit this file, edit Makefile.PL instead. # -# ANY CHANGES MADE HERE WILL BE LOST! -# # MakeMaker ARGV: $argv -# END push @{$self->{RESULT}}, $self->_MakeMaker_Parameters_section(\%initial_att); diff -u -r t:/makeMaker/ExtUtils-MakeMaker-6.62/lib/ExtUtils/MM_Any.pm t:/makeMaker/ExtUtils-MakeMaker-modified/lib/ExtUtils/MM_Any.pm --- t:/makeMaker/ExtUtils-MakeMaker-6.62/lib/ExtUtils/MM_Any.pm 201 +2-04-01 09:05:27.800943800 +0200 +++ t:/makeMaker/ExtUtils-MakeMaker-modified/lib/ExtUtils/MM_Any.pm 2012-04-01 09:09:10.771335900 +0200 @@ -382,6 +382,38 @@ return $make; } +=head2 Preludes + +These are methods which produce things early in the Makefile. + + +=head3 makefile_head + +Generate the head of the Makefile. + +=cut + +sub makefile_head { + my $self = shift; + + my $target_make_program_index = $self->is_make_type('dmake')? 1 : + $self->is_make_type('nmake')? 2 : 0; + my $target_make_program = ('make', 'dmake', 'nmake')[$target_make_program_index]; + my $sudo_prefix = ('sudo ', '', '')[$target_make_program_index]; + + return <<END; +# This Makefile is for the $self->{NAME} extension to perl. +# +# DO NOT EDIT! ANY CHANGES MADE IN THIS FILE WILL BE LOST! +# +# Typical usage: +# perl Makefile.PL +# ${target_make_program} +# ${target_make_program} test +# ${sudo_prefix}${target_make_program} install +# +END +} =head2 Targets

    I have also ask for guidance where to add the following:

    1. Add these definition to (GNU)make and dmake Makefiles.
      It should be added EARLY in the Makefile.
      "Direct" call from the constructor or part of a section or a new MakeMaker section or ... ?
      # --- MakeMaker ???? section: ifeq "{xxx}" "xxx" MAKE_USED = dmake endif ifneq "$(.VARIABLES)" "" MAKE_USED = gnumake endif
    2. Add a snippet somewhere in Makefiles for nmake.
      It is a trap if other make programs are used
      !IF 0 This makefile is intended to be used by nmake !ENDIF
      Should this be a "direct" call from the constructor, a part of a section or a new MakeMaker section or ... ?
    3. Add the target check_run_conditions to the top targets
      # --- MakeMaker top_targets section: all :: check_run_conditions pure_all $(NOECHO) $(NOOP)
      Probably modification of the method all_target in MM_Any.pm and MM_Unix.pm
    4. Add the actions for target check_run_conditions
      The code will look something like:
      push @{$self->{RESULT}}, '', '# --- MakeMaker check_run_conditions section:', 'check_run_conditions ::'; if($target_make_program eq 'make'){ push @{$self->{RESULT}}, 'ifeq "$(MAKE_USED)" "dmake"', '# Note! The message is NOT sent to STDERR', ' $(NOECHO)echo ERROR: Using $(MAKE_USED) for a Makefile intended for ' .${target_make_program}, ' $(assign ERR OR = ERROR) #Generates an error message', 'endif'; } if($target_make_program eq 'dmake'){ push @{$self->{RESULT}}, 'ifeq "$(MAKE_USED)" "gnumake"', ' $(NOECHO)$(error ERROR: Using $(MAKE_USED) for a Makefile intended for ' .${target_make_program}.'.)', 'endif'; } “otherwise” { push @{$self->{RESULT}}, ' $(NOECHO) $(NOOP)'; }
      Should this be a part of a section or a new MakeMaker section or ?
    For background see also Ideas on more foolproof Makefile.PL and generated Makefile.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://971737]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (10)
As of 2015-07-08 05:43 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (94 votes), past polls