MakeMaker has undergoing considerable refactoring in the last few weeks.
Large amounts of code have been shuffled around in order to eliminate
glaring redundancies.  The worst, constants(), has just recently been all
but eliminated.  Yes, it will no longer be necessary to patch 5 different
lists just to add a new macro.  I've got it down to two.

Since so much as been shuffled around, anyone that might be working on a
patch will have to resync with the latest snapshot else risk their code
being rendered unmergable.  Snapshots can be found on makemaker.org.

I'm working towards a release, but have several bugs which need to be fixed
before that time.  I'm also in need of non-Unix testers.  Particularly MacOS
Classic, VMS, Netware and djgpp.  I'd rather any problems be resolved before
syncing with bleadperl.

To give you an idea, here's the change log since 6.05.  Most of it is just
cleanup.

    - Andreas found that when building the core it is desirable for
      MakeMaker to use a relative path to perl.
    - File::Spec->catfile() has a bug where the resulting file may not be
      canonicalized.  This was causing problems when generating manpaths.
      MakeMaker now uses its own fixed override for catfile().
    - Fixed the POD recognition regex to properly catch /=head\d/ tags.
    * Added a PATCHING guideline document.
    - Updated the class hierarchy in NOTES.
    - Installed.t now cleans up after itself better.
    - Steve Purkis rewrote the manifypods system to use Pod::Man
      rather than pod2man.  Its now portable and manifypods() moved from 
      MM_Unix to MM_Any.  As a result, lots of icky and redudant code went
      away.  This also removes the POD2MAN macro, but noone should be
      using that.  
    - "make manifypods" now works on Win32
    - "make manifypods" is now be faster
    - Made MM_Unix->find_perl more portable.  Eliminated MM_Win32->find_perl
      override.  MM_VMS->find_perl remains.
    * find_perl() can now handle filenames with spaces in them (RT448)
    * find_perl() on Win32 no longer produces spurious "File Creation error"
      messages (perlbug ID 20020709.001)
    - Removed unfinished and unused maybe_command_in_dirs()
    - Removed dead SelfLoader cruft from MM_Unix.
    - Fixed PPD generation when the ppd contains quotes (RT1473)
    - Fixed PPD generation on VMS
    - Moved Win9x specific subdir_x() code from MM_Unix to MM_Win95
    * Craig Berry fixed hint files on VMS
    - Added the perl_onliner() method to generate portable, safe one-liners
    - Added a MAKEFILE macro to the Makefile.  Mostly to avoid having
      to hardcode $self->{MAKEFILE} internally
    * Rafael Garcia-Suarez made MakeMaker ignore Subversion control files
      by default.
    - Added MAKEFILE_OLD macro.
    * No longer generating man pages by default on VMS.
    - Improved DISTNAME docs
    * Documented DISTVNAME and VERSION_SYM
    * Documented dist()
    - Seperated dist_core() into dist, tardist, uutardist, tarfile,
      zipdist, zipfile and shdist_target methods.  Allows elimination
      of redundant code in MM_VMS.
    - Replaced WARN_IF_OLD_PACKLIST, DOC_INSTALL and UNINSTALL
      one-liners with ExtUtils::Command::MM functions
    - Replaced VMS hand-rolled perl code for TOUCH, CHMOD, RM_F and RM_RF
      with ExtUtils::Command functions.  Added TEST_F.
    - Adding clean_subdirs target and clean_subdirs_target() method to
      generate same.  This allows easier overriding of an unportable part
      of the clean target.
    - Defined DEV_NULL for MacOS
    - Removed ROOTEXT from MM_MacOS, apparently unused
    - Added $(DIRFILESEP) macro and init_DIRFILESEP to avoid
      hardcoding / or \.  Reduces code duplication in the MM_* modules.
    - Added init_platform() and platform_constants() for OS specific
      macros.  Moved OS specific macros from constants() overrides there.
    - Added init_VERSION() to setup various *VERSION* macros.
    - Added default wraplist() to make porting easier.
    - Added makemakerdflt_target() to guarantee 'all' is the default
      target.
    - Added special_targets() to handle things like .PHONY and make sure
      they come first.
    - Added init_linker() to initialize linker relatied macros.
    - MM_MacOS constants() disolves
        Moved MACPERL_SRC, MACPERL_LIB, MACPERL_INC from init_main() to 
          init_platform().
        Moved DEFINE and INC tweaking from constants() to init_main()
        Moved DEFINE_VERSION & XS_DEFINE_VERSION from constants() to
          init_VERSION().
        Eliminated MODULES.  Unused and its the same as TO_INST_PM
        Moved .INCLUDE from constants() to special_targets()

    - MM_NW5 constants() & init_others() disolves
        Moved LIBPTH, BASE_IMPORT, NLM_VERSION, MPKTOOL, TOOLPATH from 
          init_others() to init_platform()
        Moved INCLUDE and PATH definitions from constants() to 
          init_platform()
        Moved BOOT_SYMBOL, NLM_SHORT_NAME, PATH and INCLUDE from
          constants() to init_platform()

    - MM_Unix constants() goes on a diet
        Moved all macro definitions to init_* methods.
        Added MM_REVISION for completeness
        Using wraplist() instead of manual joining
        Moved .NO_CONFIG_REC, .SUFFIXES and .PHONY to special_targets()
        Moved makemakerdflt: to makemakerdeflt_target()
        Moved INST_{STATIC,DYNAMIC,BOOT} to init_INST()
        Moved EXPORT_LIST, PERL_ARCHIVE & PERL_ARCHIVE_AFTER to init_linker().
        Moved PERL_MALLOC_DEF to init_platform()

    - MM_VMS constants() goes on a diet
        Moved DEFINE from constants() to init_main()
        Moved OBJECT & LDFROM from constants() to init_others()
        Moved MM_VMS_REVISION and PERL_VMS to init_platform
        Added MM_VMS_VERSION
        Moved DEFINE_VERSION, XS_DEFINE_VERSION and MAKEMAKER changes to
            init_VERSION
        Moved .SUFFIXES changes to special_targets() override.
        Eliminated $self->{PM_TO_BLIB}.  Its redundant with $self->{PM}.
        constants() now consists only of fixpath() calls.

    - MM_Win32 constants() goes away
        Moved .USESHELL to special_targets() override.
        Everything else was redundant.

    - Added $(VERSION_FROM) to $(MAKEFILE) dependencies
    - export_list(), perl_archive() and perl_archive_after() consolodated
      into init_linker().
    - Added MM_NW5_VERSION, MM_Unix_VERSION, MM_Win32_VERSION, 
      MM_VMS_VERSION.
    - Eliminated duplicate code in constants() overrides


-- 

Michael G. Schwern   <[EMAIL PROTECTED]>    http://www.pobox.com/~schwern/
Perl Quality Assurance      <[EMAIL PROTECTED]>         Kwalitee Is Job One
1. It Has To Work.
    -- RFC 1925

Reply via email to