Add built local::lib
[catagits/Gitalist.git] / local-lib5 / lib / perl5 / Module / Install.pod
1 =pod
2
3 =head1 NAME
4
5 Module::Install - Standalone, extensible Perl module installer
6
7 =head1 SYNOPSIS
8
9 In your F<Makefile.PL>: (Recommended Usage)
10
11   use inc::Module::Install;
12   
13   # Define metadata
14   name           'Your-Module';
15   all_from       'lib/Your/Module.pm';
16   
17   # Specific dependencies
18   requires       'File::Spec'  => '0.80';
19   test_requires  'Test::More'  => '0.42';
20   recommends     'Text::CSV_XS'=> '0.50';
21   no_index       'directory'   => 'demos';
22   install_script 'myscript';
23   
24   WriteAll;
25
26 Quickly upgrade a legacy L<ExtUtil::MakeMaker> installer:
27
28   use inc::Module::Install;
29   WriteMakefile( ... );
30
31 =head1 DESCRIPTION
32
33 B<Module::Install> is a package for writing installers for CPAN (or
34 CPAN-like) distributions that are clean, simple, minimalist, act in a
35 strictly correct manner with L<ExtUtils::MakeMaker>, and will run on
36 any Perl installation version 5.005 or newer.
37
38 The intent is to make it as easy as possible for CPAN authors (and
39 especially for first-time CPAN authors) to have installers that follow
40 all the best practices for distribution installation, but involve as
41 much DWIM (Do What I Mean) as possible when writing them.
42
43 =head2 Writing Module::Install Installers
44
45 The quickest way to get started with Module::Install is to copy the
46 L</SYNOPSIS> from above and save it as your own F<Makefile.PL>. Then
47 modify the file to suit your own particular case, using the list of
48 commands documented in L</COMMON COMMANDS> below.
49
50 If all you want to do is write an installer, go and do that now. You
51 don't really need the rest of this description unless you are
52 interested in the details.
53
54 =head1 How it Works
55
56 The motivation behind B<Module::Install> is that distributions need
57 to interact with a large number of different versions of L<perl> and
58 module installers infrastructure, primarily L<CPAN.pm>, L<CPANPLUS.pm>,
59 L<ExtUtils::MakeMaker> and L<Module::Build>.
60
61 These have accumulated B<greatly> varying feature and bug profiles over
62 the years, and it is now very difficult to write an installer that will
63 work properly using only the installed versions of these modules, 
64
65 For example, the L<CPAN.pm> version shipped with Perl 5.005 is now 5+
66 years old and considered highly buggy, yet it still exists on quite a
67 number of legacy machines.
68
69 Rather than try to target one specific installer and/or make you add
70 twisty workaround expressions to every piece of install code you write,
71 B<Module::Install> will copy part of itself into each module distribution
72 it creates.
73
74 This allows new improvements to be used in your installers regardless of
75 the age of the system a distribution is being installed on, at the cost
76 of a small increase in the size of your distribution.
77
78 =head2 History
79
80 This module was originally written by Brian Ingerson as a smart drop-in
81 replacement for L<ExtUtils::MakeMaker>.
82
83 For more information, see Brian's I<Creating Module Distributions with
84 Module::Install> in June 2003 issue of The Perl Journal
85 (L<http://www.tpj.com/issues/>).
86
87 For a B<lot> more information, and some personal opinions on the module
88 and its creation, see L<Module::Install::Philosophy>.
89
90 =head1 COMMON COMMANDS
91
92 The following are the most common commands generally used in installers.
93
94 It is far from an exhaustive list, as many of the plugins provide commands
95 to work in more details that you would normally need.
96
97 =head2 name
98
99   name 'My-Module';
100
101 The B<name> command is compulsory command, generally the first.
102
103 It provides the name of your distribution, which for a module like
104 B<Your::Module> would normally be C<Your-Module>.
105
106 This naming scheme is not hard and fast and you should note that
107 distributions are actually a seperate naming scheme from modules.
108
109 For example the L<LWP> modules come in a distribution called
110 C<libwww-perl>.
111
112 =head2 all_from
113
114   all_from 'lib/My/Module.pm';
115
116 For most simple Perl distributions that feature one dominant module or
117 class as the base, you can get the most Do What I Mean functionality by
118 using the B<all_from> command, which will try to extract as much
119 metadata as possible from the Perl code and POD in that primary module.
120
121 Functionally, C<all_from> is equivalent to C<abstract_from> +
122 C<author_from> + C<version_from> + C<license_from> +
123 C<perl_version_from>. See below for details.
124
125 If any of these values are set already B<before> C<all_from> is used,
126 they will kept and B<not> be overwritten.
127
128 =head2 abstract
129
130   abstract 'This distribution does something';
131
132 All distributions have an abstract, a short description of the
133 distribution as a whole. It is usually around 30-70 characters long.
134
135 The C<abstract> command is used to explicitly set the abstract for the
136 distribution, at least as far as the metadata file for the distribution
137 is concerned.
138
139 =head2 abstract_from
140
141   abstract_from 'lib/My/Module.pm';
142
143 The C<abstract_from> command retrieves the abstract from a particular
144 file contained in the distribution package. Most often this is done
145 from the main module, where C<Module::Install> will read the POD and
146 use whatever is in the C<=head1 NAME> section (with module name stripped
147 if needed)
148
149 C<abstract_from> is set as part of C<all_from>.
150
151 =head2 author
152
153   author 'Adam Kennedy <adamk@cpan.org>';
154
155 The distribution metadata contains information on the primary author
156 or the distribution, or the primary maintainer if the original author
157 is no longer involved. It should generally be specified in the form
158 of an email address.
159
160 It you don't want to give away a real email address, you should use
161 the C<CPANID@cpan.org> address you recieve automatically when you
162 got your PAUSE account.
163
164 The C<author> command is used to explicitly set this value.
165
166 =head2 author_from
167
168   author_from 'lib/My/Module.pm';
169
170 The C<author_from> command retrieves the author from a particular
171 file contained in the distribution package. Most often this is done
172 using the main module, where L<Module::Install> will read the POD
173 and use whatever it can find in the C<=head1 AUTHOR> section.
174
175 =head2 version
176
177   version '0.01';
178
179 The C<version> command is used to specify the version of the
180 distribution, as distinct from the version of any single module within
181 the distribution.
182
183 Of course, in almost all cases you want it to match the version of the
184 primary module within the distribution, which you can do using
185 C<version_from>.
186
187 =head2 version_from
188
189   version_from 'lib/My/Module.pm';
190
191 The C<version_from> command retrieves the distribution version from a
192 particular file contained in the distribution package. Most often this is
193 done from the main module.
194
195 C<version_from> will look for the first time you set C<$VERSION> and use
196 the same value, using a technique consistent with various other module
197 version scanning tools.
198
199 =head2 license
200
201   license 'perl';
202
203 The C<license> command specifies the license for the distribution.
204
205 Most often this value will be C<'perl'>, meaning I<"the same as for Perl
206 itself">. Other allowed values include C<'gpl'>, C<'lgpl'>, C<'bsd'>,
207 C<'MIT'>, and C<'artistic'>.
208
209 This value is always considered a summary, and it is normal for authors
210 to include a F<LICENSE> file in the distribution, containing the full
211 license for the distribution.
212
213 You are also reminded that if the distribution is intended to be uploaded
214 to the CPAN, it B<must> be an OSI-approved open source license. Commercial
215 software is not permitted on the CPAN.
216
217 =head2 license_from
218
219   license_from 'lib/My/Module.pm';
220
221 The C<license_from> command retrieves the distribution license from a
222 particular file contained in the distribution package. Most often this
223 is done from the main module.
224
225 C<license_from> will look inside the POD within the indicated file for
226 a licensing or copyright-related section and scan for a variety of
227 strings that identify the general class of license.
228
229 At this time it supports only the 6 values mentioned above in the
230 C<license> command summary.
231
232 =head2 perl_version
233
234   perl_version '5.006';
235
236 The C<perl_version> command is used to specify the minimum version of the
237 perl interpreter your distribution requires.
238
239 When specifying the version, you should try to use the normalized version
240 string. Perl version segments are 3 digits long, so a dependency on Perl
241 5.6 will become C<'5.006'> and Perl 5.10.2 will become C<'5.010002'>.
242
243 =head2 perl_version_from
244
245   perl_version_from 'lib/My/Module.pm'
246
247 The C<perl_version_from> command retrieves the minimum F<perl> interpreter
248 version from a particular file contained in the distribution package. Most
249 often this is done from the main module.
250
251 The minimum version is detected by scanning the file for C<use 5.xxx>
252 pragma calls in the module file.
253
254 =head2 recommends
255
256   recommends 'Text::CSV_XS' => '0.50'
257
258 The C<recommends> command indicates an optional run-time module that
259 provides extra functionality.  Recommended dependencies are not
260 needed to build or test your distribution, but are considered "nice
261 to have".
262
263 As with L</requires>, the dependency is on a B<module> and not
264 a distribution.  A version of zero indicates that any version of
265 the module is recommended.
266
267 =head2 requires
268
269   requires 'List::Util' => 0;
270   requires 'LWP'        => '5.69';
271
272 The C<requires> command indicates a normal run-time dependency of your
273 distribution on another module. Most distributions will have one or
274 more of these commands, indicating which CPAN (or otherwise) modules
275 your distribution needs.
276
277 A C<requires> dependency can be verbalised as I<"If you wish to install
278 and use this distribution, you must first install these modules first">.
279
280 Note that the dependency is on a B<module> and not a distribution. This
281 is to ensure that your dependency stays correct, even if the module is
282 moved or merged into a different distribtion, as is occasionally the
283 case.
284
285 A dependency on version zero indicates B<any> version of module is
286 sufficient. Versions should generally be quoted for clarity.
287
288 =head2 test_requires
289
290   test_requires 'Test::More' => '0.47';
291
292 The C<test_requires> command indicates a test script dependency for
293 the distribution. The specification format is identical to that of
294 the C<requires> command.
295
296 The C<test_requires> command is distinct from the C<requires> command
297 in that it indicates a module that is needed B<only> during the
298 testing of the distribution (often a period of only a few seconds)
299 but will B<not> be needed after the distribution is installed.
300
301 The C<testrequires> command is used to allow the installer some
302 flexibility in how it provides the module, and to allow downstream
303 packagers (Debian, FreeBSD, ActivePerl etc) to retain only the
304 dependencies needed for run-time operation.
305
306 The C<include> command is sometimes used by some authors along with
307 C<test_requires> to bundle a small well-tested module into the
308 distribution package itself rather than inflict yet another module
309 installation on users installing from CPAN directly.
310
311 =head2 configure_requires
312
313   configure_requires 'File::Spec' => '0.80';
314
315 The C<configure_requires> command indicates a configure-time dependency
316 for the distribution. The specification format is identical to that of
317 the C<requires> command.
318
319 The C<configure_requires> command is used to get around the conundrum
320 of how to use a CPAN module in your Makefile.PL, when you have to load
321 Makefile.PL (and thus the CPAN module) in order to know that you need it.
322
323 Traditionally, this circular logic could not be broken and so Makefile.PL
324 scripts needed to rely on lowest-common-denominator approaches, or to
325 bundle those dependencies using something like the C<include> command.
326
327 The C<configure_requires> command creates an entry in the special
328 configure_requires: key in the distribution's F<META.yml> file.
329
330 Although most of F<META.yml> is considered advisory only, a L<CPAN>
331 client will treat the contents of configure_requires: as authorative,
332 and install the listed modules B<before> it executes the F<Makefile.PL>
333 (from which it then determines the other dependencies).
334
335 Please note that support for configure_requires: in CPAN clients is not
336 100% complete at time of writing, and still cannot be relied upon.
337
338 Because B<Module::Install> itself only supports 5.005, it will silently
339 add the equivalent of a C<configure_requires( perl => '5.005' );>
340 command to your distribution.
341
342 =head2 requires_external_bin
343
344   requires_external_bin 'cvs';
345
346 As part of its role as the dominant "glue" language, a lot of Perl
347 modules run commands or programs on the host system.
348
349 The C<requires_external_bin> command is used to verify that a particular
350 command is available on the host system.
351
352 Unlike a missing Perl module, a missing external binary is unresolvable
353 at make-time, and so the F<Makefile.PL> run will abort with a "NA"
354 (Not Applicable) result.
355
356 In future, this command will also add additional information to the
357 metadata for the dist, so that auto-packagers for particular operating
358 system are more-easily able to auto-discover the appropriate non-Perl
359 packages needed as a dependency.
360
361 =head2 install_script
362
363   # The following are equivalent
364   install_script 'script/scriptname'
365
366 The C<install_script> command provides support for the installation of
367 scripts that will become available at the console on both Unix and
368 Windows (in the later case by wrapping it up as a .bat file).
369
370 Note that is it normal practice to B<not> put a .pl on the end of such
371 scripts, so that they feel more natural when being used.
372
373 In the example above, the F<script/scriptname> program could be run after
374 the installation just by doing the following.
375
376   > scriptname
377   Running scriptname 0.01...
378   
379   > 
380
381 By convention, scripts should be placed in a /script directory within your
382 distribution. To support less typing, if a script is located in the script
383 directory, you need refer to it by name only.
384
385   # The following are equivalent
386   install_script 'foo';
387   install_script 'script/foo';
388
389 =head2 no_index
390
391   no_index directory => 'examples';
392   no_index package   => 'DB';
393
394 Quite often a distrubition will provide example scripts or testing
395 modules (.pm files) as well as the actual library modules.
396
397 In almost all situations, you do B<not> want these indexed in the CPAN
398 index, the master Perl packages list, or displayed on the
399 L<http://search.cpan.org/> website, you just want them along for the
400 ride.
401
402 The C<no_index> command is used to indicate directories or files where
403 there might be non-library .pm files or other files that the CPAN
404 indexer and websites such as L<http://search.cpan.org/> should
405 explicitly ignore.
406
407 The most common situation is to ignore example or demo directories,
408 but a variety of different situations may require a C<no_index> entry.
409
410 Another common use for C<no_index> is to prevent the PAUSE indexer
411 complaining when your module makes changes inside a "package DB" block.
412 This is used to interact with the debugger in some specific ways.
413
414 See the F<META.yml> documentation for more details on what C<no_index>
415 values are allowed.
416
417 The F<inc>, F<t> and F<share> (if C<install_share> is used) directories
418 are automatically C<no_index>'ed for you if found and do not require
419 an explicit command.
420
421 To summarize, if you can see it on L<http://search.cpan.org/> and you
422 shouldn't be able to, you need a C<no_index> entry to remove it.
423
424 =head2 installdirs, install_as_*
425
426   installdirs 'site'; # the default
427
428   install_as_core;    # alias for installdirs 'perl'
429   install_as_cpan;    # alias for installdirs 'site'
430   install_as_site;    # alias for installdirs 'site'
431   install_as_vendor;  # alias for installdirs 'vendor'
432
433 The C<installdirs> and C<install_as> commands specify the location
434 where the module should be installed; this is the equivalent to
435 L<ExtUtils::MakeMaker>'s C<INSTALLDIRS> option.  For almost all
436 regular modules, the default is recommended, and need not be
437 changed.  Dual-life (core and CPAN) modules, as well as
438 vendor-specific modules, may need to use the other options.
439
440 If unsure, do not use this option.
441
442 =head2 WriteAll
443
444 The C<WriteAll> command is generally the last command in the file;
445 it writes out F<META.yml> and F<Makefile> so the user can run the
446 C<make>, C<make test>, C<make install> install sequence.
447
448 =head1 EXTENSIONS
449
450 All extensions belong to the B<Module::Install::*> namespace, and
451 inherit from B<Module::Install::Base>.  There are three categories
452 of extensions:
453
454 =head2 Standard Extensions
455
456 Methods defined by a standard extension may be called as plain functions
457 inside F<Makefile.PL>; a corresponding singleton object will be spawned
458 automatically.  Other extensions may also invoke its methods just like
459 their own methods:
460
461     # delegates to $other_extension_obj->method_name(@args)
462     $self->method_name(@args);
463
464 At the first time an extension's method is invoked, a POD-stripped
465 version of it will be included under the F<inc/Module/Install/>
466 directory, and becomes I<fixed> -- i.e., even if the user had installed a
467 different version of the same extension, the included one will still be
468 used instead.
469
470 If the author wish to upgrade extensions in F<inc/> with installed ones,
471 simply run C<perl Makefile.PL> again; B<Module::Install> determines
472 whether you are an author by the existence of the F<inc/.author/>
473 directory.  End-users can reinitialize everything and become the author
474 by typing C<make realclean> and C<perl Makefile.PL>.
475
476 =head2 Private Extensions
477
478 Those extensions take the form of B<Module::Install::PRIVATE> and
479 B<Module::Install::PRIVATE::*>.
480
481 Authors are encouraged to put all existing F<Makefile.PL> magics into
482 such extensions (e.g. F<Module::Install::PRIVATE> for common bits;
483 F<Module::Install::PRIVATE::DISTNAME> for functions specific to a
484 distribution).
485
486 Private extensions should not to be released on CPAN; simply put them
487 somewhere in your C<@INC>, under the C<Module/Install/> directory, and
488 start using their functions in F<Makefile.PL>.  Like standard
489 extensions, they will never be installed on the end-user's machine,
490 and therefore never conflict with other people's private extensions.
491
492 =head2 Administrative Extensions
493
494 Extensions under the B<Module::Install::Admin::*> namespace are never
495 included with the distribution.  Their methods are not directly
496 accessible from F<Makefile.PL> or other extensions; they are invoked
497 like this:
498
499     # delegates to $other_admin_extension_obj->method_name(@args)
500     $self->admin->method_name(@args);
501
502 These methods only take effect during the I<initialization> run, when
503 F<inc/> is being populated; they are ignored for end-users.  Again,
504 to re-initialize everything, just run C<perl Makefile.PL> as the author.
505
506 Scripts (usually one-liners in F<Makefile>) that wish to dispatch
507 B<AUTOLOAD> functions into administrative extensions (instead of
508 standard extensions) should use the B<Module::Install::Admin> module
509 directly.  See L<Module::Install::Admin> for details.
510
511 =head1 EXTENSIONS
512
513 Detailed information is provided for all (some) of the relevant
514 modules via their own POD documentation.
515
516 =head2 Module::Install::AutoInstall
517
518 Provides C<auto_install()> to automatically fetch and install
519 prerequisites.
520
521 The use of C<auto_install> is B<strongly> discouraged in any distribution
522 to be uploaded to the CPAN, as the use of it violates the normal CPAN
523 client to toolchain communication protocol.
524
525 Support may be dropped at a future time, with some alternative process
526 providing the equivalent functionality.
527
528 =head2 Module::Install::Base
529
530 The base class for all extensions
531
532 =head2 Module::Install::Build
533
534 Provides integration with L<Module::Build> via C<&Build-E<gt>write>.
535
536 =head2 Module::Install::Bundle
537
538 Provides the C<bundle> family of commands, allowing you to bundle
539 another CPAN distribution within your distribution.
540
541 =head2 Module::Install::Fetch
542
543 Handles install-time fetching of files from remote servers via
544 FTP and HTTP.
545
546 =head2 Module::Install::Include
547
548 Provides the C<include> family of commands for embedding modules
549 that are only need at build-time in your distribution and won't
550 be installed.
551
552 =head2 Module::Install::Inline
553
554 Provides C<&Inline-E<gt>write> to replace B<Inline::MakeMaker>'s
555 functionality for making B<Inline>-based modules (and cleaning up).
556
557 However, you should invoke this with C<WriteAll( inline => 1 )>.
558
559 =head2 Module::Install::Makefile
560
561 Provides C<&Makefile-E<gt>write> to generate a F<Makefile> for you
562 distribution.
563
564 =head2 Module::Install::Metadata
565
566 Provides C<&Meta-E<gt>write> to generate a F<META.yml> file for your
567 distribution.
568
569 =head2 Module::Install::PAR
570
571 Makes pre-compiled module binary packages from the built F<blib>
572 directory, and download existing ones to save recompiling.
573
574 =head2 Module::Install::Run
575
576 Determines if commands are available on the user's machine, and runs
577 them via B<IPC::Run3>.
578
579 =head2 Module::Install::Scripts
580
581 Handles packaging and installation of scripts to various bin dirs.
582
583 =head2 Module::Install::Win32
584
585 Functions for installing modules on Win32 and finding/installing
586 F<nmake.exe> for users that need it.
587
588 =head2 Module::Install::WriteAll
589
590 Provides the C<WriteAll>, which writes all the requires files,
591 such as F<META.yml> and either F<Makefile> or F<Build>.
592
593 C<WriteAll> takes four optional named parameters:
594
595 =over 4
596
597 =item C<check_nmake> (defaults to true)
598
599 If true, invokes functions with the same name.
600
601 I<The use of this param is no longer recommended.>
602
603 =item C<inline> (defaults to false)
604
605 If true, invokes C<&Inline-E<gt>write> L<Inline> modules.
606
607 =item C<meta> (defaults to true)
608
609 If true, writes a C<META.yml> file.
610
611 =item C<sign> (defaults to false)
612
613 If true, invokes C<sign> command to digitally sign erm... something.
614
615 =back
616
617 =head2 Module::Install::Admin::Find
618
619 Package-time functions for finding extensions, installed packages
620 and files in subdirectories.
621
622 =head2 Module::Install::Admin::Manifest
623
624 Package-time functions for manipulating and updating the
625 F<MANIFEST> file.
626
627 =head2 Module::Install::Admin::Metadata
628
629 Package-time functions for manipulating and updating the
630 F<META.yml> file.
631
632 =head2 Module::Install::Admin::ScanDeps
633
634 Package-time scanning for non-core dependencies via B<Module::ScanDeps>
635 and B<Module::CoreList>.
636
637 =head1 FAQ
638
639 =head2 What are the benefits of using B<Module::Install>?
640
641 Here is a brief overview of the reasons:
642
643 =over 4
644
645 =item * Extremely easy for beginners to learn
646
647 =item * Does everything ExtUtils::MakeMaker does.
648
649 =item * Does it with a dramatically simpler syntax.
650
651 =item * Automatically scans for metadata for you.
652
653 =item * Requires no installation for end-users.
654
655 =item * Guaranteed forward-compatibility.
656
657 =item * Automatically updates your MANIFEST.
658
659 =item * Distributing scripts is easy.
660
661 =item * Include prerequisite modules (less dependencies to install)
662
663 =item * Auto-installation of prerequisites.
664
665 =item * Support for L<Inline>-based modules.
666
667 =item * Support for L<File::ShareDir> shared data files
668
669 =item * Support for precompiled L<PAR> binaries.
670
671 =item * Deals with Win32 install issues for you.
672
673 =back
674
675 By greatly shrinking and simplifying the syntax, B<Module::Install>
676 keeps the amount of work required to maintain your F<Makefile.PL>
677 files to an absolute minimum.
678
679 And if you maintain more than one module than needs to do unusual
680 installation tricks, you can create a specific module to abstract
681 away this complexity.
682
683 =head2 Module::Install isn't at 1.00 yet, is it safe to use yet?
684
685 As long as you are going to periodically do incremental releases
686 to get any bug fixes and new functionality, yes.
687
688 You should also B<strongly> avoid the use of C<auto_install>.
689
690 If you don't plan to do incremental releases, it might be a good
691 idea to continue to wait for a while.
692
693 =head1 COOKBOOK / EXAMPLES
694
695 The following are some real-life examples of F<Makefile.PL> files
696 using B<Module::Install>.
697
698 =head2 Method::Alias
699
700 L<Method::Alias> is a trivially-small utility module, with almost the
701 smallest possible F<Makefile.PL>.
702
703   use inc::Module::Install;
704   
705   name          'Method-Alias';
706   all_from      'lib/Method/Alias.pm';
707   test_requires 'Test::More' => '0.42';
708
709 =head2 File::HomeDir
710
711 L<File::HomeDir> locates your home directory on any platform. It needs
712 an installer that can handle different dependencies on different platforms.
713
714   use inc::Module::Install;
715   
716   name          'File-HomeDir';
717   all_from      'lib/File/HomeDir.pm';
718   requires      'File::Spec' => '0.80';
719   test_requires 'Test::More' => '0.47';
720   
721   if ( $MacPerl::Version ) {
722       # Needed on legacy Mac OS 9
723       requires 'Mac::Files' => 0;
724   }
725   
726   if ( $^O eq 'MXWin32' ) {
727       # Needed on Windows platforms
728       requires 'Win32::TieRegistry' => 0;
729   }
730   
731   WriteAll;
732
733 =head1 TO DO
734
735 Implement L<Module::Install::Compiled> and Module::Install::Admin::Compiled
736 to integrate the L<Module::Compiled> "perl 6 to perl 5" functionality with
737 Module::Install.
738 Because this would add SIGNIFICANT dependencies (i.e. pugs!) this should
739 almost certainly be distributed as a seperate distribution.
740
741 Go over POD docs in detail.
742
743 Test recursive Makefile directories
744
745 The test suite needs a great deal more test scripts.
746     
747 Dependencies on shared libraries (libxml/libxml.dll etc) and binary files
748 so that debian/Win32/etc autopackaging applications can create the
749 appropriate package-level dependencies there.
750
751 EU::MM 6.06_03+ supports META.yml natively.  Maybe probe for that?
752
753 =head1 SEE ALSO
754
755 L<Module::Install::Philosophy>
756
757 L<inc::Module::Install>
758
759 L<Module::Install::AutoInstall>
760
761 L<Module::Install::Base>
762
763 L<Module::Install::Bundle>
764
765 L<Module::Install::Build>
766
767 L<Module::Install::MakeMaker>
768
769 L<Module::Install::Share>
770
771 L<Module::Install::Admin>
772
773 L<Module::Install::Admin::Include>
774
775 L<Module::Install::Admin::Manifest>
776
777 L<CPAN::MakeMaker>, L<Inline::MakeMaker>
778
779 L<ExtUtils::MakeMaker>
780
781 =head1 SUPPORT
782
783 Bugs should be reported via the CPAN bug tracker at
784
785 L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Module-Install>
786
787 For other issues, contact the (topmost) author.
788
789 =head1 AUTHORS
790
791 Adam Kennedy E<lt>adamk@cpan.orgE<gt>
792
793 Audrey Tang E<lt>autrijus@autrijus.orgE<gt>
794
795 Brian Ingerson E<lt>ingy@cpan.orgE<gt>
796
797 =head1 COPYRIGHT
798
799 Copyright 2002 - 2009 Brian Ingerson, Audrey Tang and Adam Kennedy.
800
801 This program is free software; you can redistribute it and/or
802 modify it under the same terms as Perl itself.
803
804 =cut