Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

Module::Build::Convert
Makefile.PL to Build.PL converter

Module::Build::Convert - Makefile.PL to Build.PL converter


NAME

Module::Build::Convert - Makefile.PL to Build.PL converter


SYNOPSIS


 use Module::Build::Convert;

 # example arguments (empty %args is sufficient too)

 %args = (Path => '/path/to/perl/distribution(s)',

          Verbose => 2,

          Use_Native_Order => 1,

          Len_Indent => 4);

 $make = Module::Build::Convert->new(%args);

 $make->convert;


DESCRIPTION

ExtUtils::MakeMaker has been a de-facto standard for the common distribution of Perl modules; Module::Build is expected to supersede ExtUtils::MakeMaker in some time (part of the Perl core as of 5.9.4).

The transition takes place slowly, as the converting process manually achieved is yet an uncommon practice. The Module::Build::Convert Makefile.PL parser is intended to ease the transition process.


CONSTRUCTOR

new

Options:

  • Path
  • Path to a Perl distribution. May point to a single distribution directory or to one containing more than one distribution. Default: ''

  • Makefile_PL
  • Filename of the Makefile script. Default: Makefile.PL

  • Build_PL
  • Filename of the Build script. Default: Build.PL

  • MANIFEST
  • Filename of the MANIFEST file. Default: MANIFEST

  • RC
  • Filename of the RC file. Default: .make2buildrc

  • Dont_Overwrite_Auto
  • If a Build.PL already exists, output a notification and ask whether it should be overwritten. Default: 1

  • Create_RC
  • Create a RC file in the homedir of the current user. Default: 0

  • Parse_PPI
  • Parse the Makefile.PL in the PPI Parser mode. Default: 0

  • Exec_Makefile
  • Execute the Makefile.PL via 'do Makefile.PL'. Default: 0

  • Verbose
  • Verbose mode. If set to 1, overridden defaults and skipped arguments are printed while converting; if set to 2, output of Verbose = 1 and created Build script will be printed. May be set via the make2build switches -v (mode 1) and -vv (mode 2). Default: 0

  • Debug
  • Rudimentary debug facility for examining the parsing process. Default: 0

  • Process_Code
  • Process code embedded within the arguments list. Default: 0

  • Use_Native_Order
  • Native sorting order. If set to 1, the native sorting order of the Makefile arguments will be tried to preserve; it's equal to using the make2build switch -n. Default: 0

  • Len_Indent
  • Indentation (character width). May be set via the make2build switch -l. Default: 3

  • DD_Indent
  • Data::Dumper indendation mode. Mode 0 will be disregarded in favor of 2. Default: 2

  • DD_Sortkeys
  • Data::Dumper sort keys. Default: 1


METHODS

convert

Parses the Makefile.PL's WriteMakefile() arguments and converts them to Module::Build equivalents; subsequently the according Build.PL is created. Takes no arguments.


DATA SECTION

Argument conversion

ExtUtils::MakeMaker arguments followed by their Module::Build equivalents. Converted data structures preserve their native structure, that is, HASH -> HASH, etc.


 NAME                  module_name

 DISTNAME              dist_name

 ABSTRACT              dist_abstract

 AUTHOR                dist_author

 VERSION               dist_version

 VERSION_FROM          dist_version_from

 PREREQ_PM             requires

 PL_FILES              PL_files

 PM                    pm_files

 MAN1PODS              pod_files

 XS                    xs_files

 INC                   include_dirs

 INSTALLDIRS           installdirs

 DESTDIR               destdir

 CCFLAGS               extra_compiler_flags

 EXTRA_META            meta_add

 SIGN                  sign

 LICENSE               license

 clean.FILES           @add_to_cleanup

Default arguments

Module::Build default arguments may be specified as key/value pairs. Arguments attached to multidimensional structures are unsupported.


 #build_requires       HASH

 #recommends           HASH

 #conflicts            HASH

 license               unknown

 create_readme         1

 create_makefile_pl    traditional

Value may be either a string or of type SCALAR, ARRAY, HASH.

Sorting order

Module::Build arguments are sorted as enlisted herein. Additional arguments, that don't occur herein, are lower prioritized and will be inserted in unsorted order after preceedingly sorted arguments.


 module_name

 dist_name

 dist_abstract

 dist_author

 dist_version

 dist_version_from

 requires

 build_requires

 recommends

 conflicts

 PL_files

 pm_files

 pod_files

 xs_files

 include_dirs

 installdirs

 destdir

 add_to_cleanup

 extra_compiler_flags

 meta_add

 sign

 license

 create_readme

 create_makefile_pl

Begin code

Code that preceeds converted Module::Build arguments.


 use strict;

 use warnings;

 use Module::Build;

 $MAKECODE

 my $b = Module::Build->new

 $INDENT(

End code

Code that follows converted Module::Build arguments.


 $INDENT);

 $b->create_build_script;

 $MAKECODE


INTERNALS

co-opting WriteMakefile()

This behavior is no longer the default way to receive WriteMakefile()'s arguments; the Makefile.PL is now statically parsed unless one forces manually the co-opting of WriteMakefile().

In order to convert arguments, a typeglob from WriteMakefile() to an internal sub will be set; subsequently Makefile.PL will be executed and the arguments are then accessible to the internal sub.

Data::Dumper

Converted ExtUtils::MakeMaker arguments will be dumped by Data::Dumper's Dump() and are then furtherly processed.


BUGS & CAVEATS

Module::Build::Convert should be considered experimental as the parsing of the Makefile.PL doesn't necessarily return valid arguments, especially for Makefiles with bad or even worse, missing intendation.

The parsing process may sometimes hang with or without warnings in such cases. Debugging by using the appropriate option/switch (see CONSTRUCTOR/new) may reveal the root cause.


SEE ALSO

http://www.makemaker.org, the ExtUtils::MakeMaker manpage, the Module::Build manpage, http://www.makemaker.org/wiki/index.cgi


AUTHOR

Steven Schubiger <schubiger@cpan.org>


LICENSE

This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself.

See http://www.perl.com/perl/misc/Artistic.html

Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy