A good deal has happened to MakeMaker betweeen 5.6.1 and 5.8.0 and again
between 5.8.0 and now.  So when I talk about the current MakeMaker I mean
the snapshot on makemaker.org.


On Sat, Dec 14, 2002 at 06:30:51PM +0000, Ewan Birney wrote:
> You have helped us out once through Jason Stajich who reported a bug with
> a line too long problem- the suggested fix was to fix the manifypods line.
> This didn't seem to do the trick - by editing the makefile directly I
> found out that the PM_TO_BLIB line was too long, probably some in the
> pure_all section. 

pm_to_blib was reworked a while ago to be broken down into a series of
commands.  In fact, PM_TO_BLIB isn't used anymore AFAIK, though its still
generated.


> Without that line, make test (the main thing I want to do at the
> moment) does fine because it picks up the modules via ./ ...
> 
> However this is not a pretty solution and I presume will eventually screw
> something else up - eg make install (which actually I tend not to do) -
> does make install work off the blib stuff or not?

Yes, it copies from blib.


>   (a) does it sound as if I have diagnosed the problem or not?
>
>   (b) Is there a function PM_TO_BLIB or something similar which I can
> override?
>
>   (c) What are the knock on effects for me doing this and should I not be
> doing it all?

There's a general problem with long shell commands in MakeMaker.  Prior to
the IRIX/bioperl problem the concern was with VMS not Unix.  Anything
working on a big list of modules is going to be trouble.  Making man pages,
copying into blib/, cleaning blib/ (Hmm, I just noticed realclean is doing a
lot more work than it needs to), etc...  Oddly enough, install is not a
problem.

So there's all these special, complicated code for VMS in MakeMaker largely
because of the command length problem.  This will now have to be extended to
the Unix code.  Rather than do it ad hoc as the current MM_Unix->pm_to_blib
method does, I'm going to generalize it.  Instead of just:

    $make = "some_command @big_list_of_args";

it will have to be:

    $make = $self->split_command('some_command', @big_list_of_args);

which chops the single command up into N smaller commands like
MM_Unix->_pm_to_blib does.

Instead of assuming the worst-case 256 character scenario, it will use the
value of $self->{MAX_CMD_LENGTH} so well written shells are not punished for
the sins of others.  Big thread about that here:
http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2002-09/msg01192.html

A nice side-effect being it should knock out a large chunk of the VMS
specific code.

The above will be in 6.06 which I don't expect to be stable until after New
Year's.


So, what are your options?

Easy) Wait for 6.06.  Make bioperl depend on it if $^O eq 'irix'.

Hard) Override MM_Unix->pm_to_blib() and MM_Unix->manifypods() with code
      adapted from the current MakeMaker if $ExtUtils::MakeMaker::VERSION <
      6.06.


-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl Quality Assurance      <[EMAIL PROTECTED]>         Kwalitee Is Job One
Consistency?  I'm sorry, Sir, but you obviously chose the wrong door.
        -- Jarkko Hietaniemi in <[EMAIL PROTECTED]>

Reply via email to