develooper Front page | perl.perl5.porters | Postings from October 2003

ExtUtils::MakeMaker 6.18 coming soon

Michael G Schwern
October 30, 2003 16:10
ExtUtils::MakeMaker 6.18 coming soon
Message ID:
In a burst of patching I fixed a bunch of little niggets in MakeMaker.
6.18 is just about ready, currently waiting on some feedback on the
OS/2 static build issue.

Its currently available as a snapshot on

Here's the interesting fixes:

INSTALLSITEMAN*DIR now falls back to INSTALLMAN*DIR on older Perls rather
than trying to guess.  This emulates the old behavior of MakeMaker better
from back when there was only one man page installation directory for all
core, site and vendor.  The guess was putting man pages into unexpected
places.  For example, Redhat 7.2 users which upgraded MakeMaker would find
their man pages going into /usr/man/man* which isn't in their manpath.  Now
it should correctly go into /usr/share/man/man* (INSTALLMAN*DIR).

MakeMaker depended on CORE/perl.h existing to get anything done.  If that
file didn't exist it would just roll over and die.  It was also using
perl.h in a bizarre make ritual to create the blib/ directories.  This
would make it impossible to install pure Perl modules if CORE/perl.h is
missing.  Some vendors like to seperate the perl headers when they
distribute perl (the latest, OS X 10.3).  This has all gone away and 
MakeMaker can build pure Perl modules without perl.h.  It also means those
silly .exists files are gone.

$(PREFIX) would wind up empty.  This is because the old idea of a single
prefix has been split into three, PERLPREFIX, SITEPREFIX and VENDORPREFIX,
and we don't know which one to use a PREFIX.  However, a lot of modules
that extend MakeMaker use $(PREFIX).  So for simplicity's sake we set
$(PREFIX) to the appropriate value based on INSTALLDIRS.  So by default
$(PREFIX) will be $(SITEPREFIX).

Autrijus added a SIGN option to generate a SIGNATURE file using cpansign
during 'make dist' as well as adding it to the manifest.  I've started
using it to sign MakeMaker releases.

manicopy() had a bug where the 'cp' method of copying would create
read-only files.

If you tried to have a PREREQ on a module who's name is also a keyword 
(, MakeMaker would get confused.  Autrijus fixed this.

    - parse_version() was blowing over $_ (Ilya Zakharevich)
    - 5.6.2 has the same Cygwin shared lib name fix as 5.7.0. (Gerrit Haase)
    * When $Config{install(site|vendor)man*dir} aren't set it will now
      fall back to $Config{installman*dir}.  Similar for 
      $Config{install(site|vendor)bin}.  This preserves behavior for older
    * Eliminated the dependency on perl.h for pure-perl builds.
    * Eliminated .exists files.  Added blibdirs target using MKPATH instead.
    - Removed now unused dir_target() method.
    - Added a little documentation to instmodsh.
    * Made sure PREFIX always has something in it.  Module authors like to use
      it when extending MakeMaker.  Currently using one of 
      PERL/SITE/VENDORPREFIX based on the value of INSTALLDIRS.
    * Added SIGN to generate module signatures with cpansign (Autrijus Tang)
    - Slight tweaks to MAKEFILE_OLD and MAKE_APERL_FILE restoring a mistake
      made around 6.06 to fix static builds on OS/2
    - Added ExtUtils::Command::dos2unix()
    * manicopy() would make the copied files read-only if 'cp' was used.
    * Fixed prereq check for modules which are also keywords like and (Autrijus Tang)

Michael G Schwern
Fuck with me and I will saw off your legs. Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About