r1798 - in packages: . libmodule-install-perl libmodule-install-perl/branches libmodule-install-perl/branches/upstream libmodule-install-perl/branches/upstream/current libmodule-install-perl/branches/upstream/current/inc libmodule-install-perl/branches/upstream/current/inc/ExtUtils libmodule-install-perl/branches/upstream/current/inc/Module libmodule-install-perl/branches/upstream/current/inc/Module/Install libmodule-install-perl/branches/upstream/current/inc/Test libmodule-install-perl/branches/upstream/current/lib libmodule-install-perl/branches/upstream/current/lib/Module libmodule-install-perl/branches/upstream/current/lib/Module/Install libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile libmodule-install-perl/branches/upstream/current/lib/inc libmodule-install-perl/branches/upstream/current/lib/inc/Module libmodule-install-perl/branches/upstream/current/t

Krzysztof Krzyzaniak eloy at costa.debian.org
Fri Dec 30 11:08:30 UTC 2005


Author: eloy
Date: 2005-12-30 11:07:55 +0000 (Fri, 30 Dec 2005)
New Revision: 1798

Added:
   packages/libmodule-install-perl/
   packages/libmodule-install-perl/branches/
   packages/libmodule-install-perl/branches/upstream/
   packages/libmodule-install-perl/branches/upstream/current/
   packages/libmodule-install-perl/branches/upstream/current/Build.PL
   packages/libmodule-install-perl/branches/upstream/current/Changes
   packages/libmodule-install-perl/branches/upstream/current/MANIFEST
   packages/libmodule-install-perl/branches/upstream/current/MANIFEST.SKIP
   packages/libmodule-install-perl/branches/upstream/current/META.yml
   packages/libmodule-install-perl/branches/upstream/current/Makefile.PL
   packages/libmodule-install-perl/branches/upstream/current/README
   packages/libmodule-install-perl/branches/upstream/current/SIGNATURE
   packages/libmodule-install-perl/branches/upstream/current/ToDo
   packages/libmodule-install-perl/branches/upstream/current/inc/
   packages/libmodule-install-perl/branches/upstream/current/inc/ExtUtils/
   packages/libmodule-install-perl/branches/upstream/current/inc/ExtUtils/AutoInstall.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/AutoInstall.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Base.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Build.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Can.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Fetch.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Include.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Makefile.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Metadata.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/PAR.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Win32.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/WriteAll.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Test/
   packages/libmodule-install-perl/branches/upstream/current/inc/Test/Builder.pm
   packages/libmodule-install-perl/branches/upstream/current/inc/Test/More.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Cookbook.pod
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Philosophy.pod
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Bundle.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Find.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Include.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Makefile.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Manifest.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Metadata.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/ScanDeps.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/WriteAll.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/AutoInstall.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Base.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Build.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Bundle.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Can.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Fetch.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Include.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Inline.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/MakeMaker.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Name.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Version.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Metadata.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/PAR.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Run.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Scripts.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Win32.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/WriteAll.pm
   packages/libmodule-install-perl/branches/upstream/current/lib/inc/
   packages/libmodule-install-perl/branches/upstream/current/lib/inc/Module/
   packages/libmodule-install-perl/branches/upstream/current/lib/inc/Module/Install.pm
   packages/libmodule-install-perl/branches/upstream/current/t/
   packages/libmodule-install-perl/branches/upstream/current/t/0-signature.t
   packages/libmodule-install-perl/branches/upstream/current/t/1-basic.t
   packages/libmodule-install-perl/tags/
Log:
[svn-inject] Installing original source of libmodule-install-perl

Added: packages/libmodule-install-perl/branches/upstream/current/Build.PL
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/Build.PL	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/Build.PL	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,4 @@
+# $File: //depot/cpan/Module-Install/Build.PL $ $Author: autrijus $
+# $Revision: #5 $ $Change: 1820 $ $DateTime: 2003/12/14 21:01:57 $
+
+require 'Makefile.PL';

Added: packages/libmodule-install-perl/branches/upstream/current/Changes
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/Changes	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/Changes	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,1561 @@
+____________________________________________________________________________
+[  2286] By: autrijus                              on 2004/07/01  04:47:26
+        Log: * This be 0.34.
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  2285] By: autrijus                              on 2004/07/01  03:16:20
+        Log: * auto_include() will not include recursive dependencies
+	       now;
+             that functionality is refactored into auto_include_deps().
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin/Include.pm
+____________________________________________________________________________
+[  1885] By: autrijus                              on 2004/03/11  05:55:27
+        Log: * This be 0.33.
+             * abstract_from() was broken; it works now thanks to SHAY.
+             * WriteAll() now takes (inline => 1) to support
+	       Inline-based
+             modules.
+	   ! Makefile.PL lib/Module/Install.pm
+	   ! lib/Module/Install/Inline.pm
+	   ! lib/Module/Install/Metadata.pm
+	   ! lib/Module/Install/WriteAll.pm
+____________________________________________________________________________
+[  1847] By: autrijus                              on 2003/12/31  23:14:54
+        Log: * This be 0.31.
+	   ! README lib/Module/Install-Cookbook.pod
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Base.pm
+	   ! lib/Module/Install/Build.pm
+	   ! lib/Module/Install/Bundle.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1846] By: autrijus                              on 2003/12/31  22:57:12
+        Log: * allow auto_install() to take -core-specific options like
+             (-default => 0).
+	   ! lib/Module/Install/AutoInstall.pm
+____________________________________________________________________________
+[  1841] By: autrijus                              on 2003/12/28  19:43:56
+        Log: * no longer use inc/SCRIPT but simply modify the
+             scripts to install.
+	   ! lib/Module/Install/Scripts.pm
+____________________________________________________________________________
+[  1840] By: autrijus                              on 2003/12/28  19:42:02
+        Log: * make can_cc to probe the program part of $Config{cc}
+	   ! lib/Module/Install/Can.pm
+____________________________________________________________________________
+[  1837] By: autrijus                              on 2003/12/20  16:20:59
+        Log: * Bundled M::I-using modules (or subdirs) used to break up
+             spectacularly by overriding ::AUTOLOAD and reusing their
+             parents' inc/*.  Now the namespaces are keyed by cwd and
+             more readily unregistered.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1830] By: autrijus                              on 2003/12/17  16:20:13
+        Log: * oops. forgot to check in two files. ingy++
+	   + lib/Module/Install/Admin/Bundle.pm
+	   + lib/Module/Install/Admin/Include.pm
+____________________________________________________________________________
+[  1822] By: autrijus                              on 2003/12/14  21:10:21
+        Log: * This be 0.29, for real!
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1821] By: autrijus                              on 2003/12/14  21:07:46
+        Log: * real Module::Build support in WriteAll and in this
+	       module.
+	   ! MANIFEST lib/Module/Install/Admin/WriteAll.pm
+____________________________________________________________________________
+[  1820] By: autrijus                              on 2003/12/14  21:01:57
+        Log: * transparent Build.PL, as promised in README, is back.
+	   + Build.PL
+____________________________________________________________________________
+[  1819] By: autrijus                              on 2003/12/14  20:58:51
+        Log: * ditto.
+	   ! lib/Module/Install/Admin/WriteAll.pm
+____________________________________________________________________________
+[  1818] By: autrijus                              on 2003/12/14  20:58:38
+        Log: * WriteAll now takes three non-metadata flags:
+             check_nmake (default 1), meta (default 1) and
+             sign (default 0).
+	   ! lib/Module/Install/WriteAll.pm
+____________________________________________________________________________
+[  1817] By: autrijus                              on 2003/12/14  20:57:39
+        Log: * "private" is officially obsoleted by "no_index".
+             * now warns if the user did not specify a license.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1816] By: autrijus                              on 2003/12/14  20:55:49
+        Log: * changes and manifest.
+	   ! Changes MANIFEST
+____________________________________________________________________________
+[  1815] By: autrijus                              on 2003/12/14  20:41:23
+        Log: * cosmetic fixes.
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+	   ! t/1-basic.t
+____________________________________________________________________________
+[  1812] By: autrijus                              on 2003/12/14  20:24:49
+        Log: * This be 0.29.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1811] By: autrijus                              on 2003/12/14  18:52:33
+        Log: * "requires( perl => $version )" is now supported.
+             * include_deps() now no longer takes its second argument;
+             it must be separately supplied with the syntax above.
+             * "&WriteAll" now officially replaces "&Build->write",
+             "&Makefile->write", "&Meta->write" and "check_nmake()".
+             * auto_include() is implemented.
+             * bundle_deps() is implemented.
+	   ! Makefile.PL lib/Module/Install.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+	   ! lib/Module/Install/Admin/WriteAll.pm
+	   ! lib/Module/Install/Bundle.pm
+	   ! lib/Module/Install/Include.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1810] By: autrijus                              on 2003/12/14  10:42:42
+        Log: * add WriteAll to manifest.
+             * add #defaults to skip.
+	   ! MANIFEST MANIFEST.SKIP
+____________________________________________________________________________
+[  1808] By: autrijus                              on 2003/12/13  20:14:27
+        Log: * Introducing &WriteAll, a combination of &Meta->write,
+             &check_nmake, &Makefile->write, and if a Build.PL is
+             present (which should read "require 'Makefile.PL'"),
+             also supports transparent &Build->write.
+	   + lib/Module/Install/Admin/WriteAll.pm
+	   + lib/Module/Install/WriteAll.pm
+____________________________________________________________________________
+[  1806] By: autrijus                              on 2003/12/11  18:44:37
+        Log: * changes.
+	   ! Changes
+____________________________________________________________________________
+[  1805] By: autrijus                              on 2003/12/11  18:43:02
+        Log: * Module::Install::Bundle now works, thanks to Adam Foxson!
+	   ! Makefile.PL lib/Module/Install.pm
+	   ! lib/Module/Install/Bundle.pm
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1804] By: autrijus                              on 2003/12/11  16:42:29
+        Log: * unbreak against newer EU::MM.
+	   ! MANIFEST.SKIP
+____________________________________________________________________________
+[  1790] By: autrijus                              on 2003/11/11  01:23:39
+        Log: * let "inc" work with "make test" on 5.6.x too.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1789] By: autrijus                              on 2003/11/11  01:22:54
+        Log: * mcdavis pointed out that Microsoft now wants
+	       "Nmake15.exe",
+             not "nmake15.exe".
+	   ! lib/Module/Install/Win32.pm
+____________________________________________________________________________
+[  1782] By: autrijus                              on 2003/10/27  19:48:59
+        Log: * This be 0.27.
+             * make the include'd modules actually work during
+             "make" and "make test", by adding "inc" to the
+             Makefile targets.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1781] By: autrijus                              on 2003/10/22  17:14:03
+        Log: * Graham's patch for 5.004 backcompat.
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+	   ! lib/Module/Install/Inline.pm
+	   ! lib/Module/Install/MakeMaker.pm
+	   ! lib/Module/Install/Metadata.pm
+	   ! lib/Module/Install/Scripts.pm
+____________________________________________________________________________
+[  1780] By: autrijus                              on 2003/10/22  17:13:48
+        Log: * Graham Barr points out that readdir() can return 0.
+	   ! lib/Module/Install/Admin/Manifest.pm
+____________________________________________________________________________
+[  1779] By: autrijus                              on 2003/10/21  15:54:39
+        Log: * do not sign the distribution if we are not the admin.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1778] By: autrijus                              on 2003/10/17  17:37:55
+        Log: * This be 0.26.
+             * sign(1) support for automatic digital signing
+             * no_index(directory => 'example') support, for telling
+             PAUSE and search to skip indexing modules
+	   ! Makefile.PL lib/Module/Install.pm
+	   ! lib/Module/Install/Build.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1777] By: autrijus                              on 2003/10/13  02:25:45
+        Log: * This be 0.25.
+             * add no_index as an alias to private in META.yml.
+             * minor code cleanup.
+	   ! Makefile.PL lib/Module/Install.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1765] By: ingy                                  on 2003/10/04  15:42:05
+        Log: Support for YAML::Parser::Syck
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1726] By: autrijus                              on 2003/09/06  10:21:54
+        Log: * no point in supporting Build.PL now.
+	   - Build.PL
+	   ! MANIFEST Makefile.PL
+____________________________________________________________________________
+[  1709] By: autrijus                              on 2003/09/01  03:13:10
+        Log: * This be 0.24.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1692] By: autrijus                              on 2003/08/28  10:24:51
+        Log: * 0.17 is simply too old as it scans in POD sections.
+	   ! Makefile.PL
+____________________________________________________________________________
+[  1669] By: autrijus                              on 2003/08/19  20:17:39
+        Log: * Kingpin <mthurn at carbon> notes that we are using "next"
+             outside a loop block in ScanDeps.
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+____________________________________________________________________________
+[  1667] By: autrijus                              on 2003/08/18  08:18:40
+        Log: * threads.pm and warnings.pm should be exempted too.
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+____________________________________________________________________________
+[  1666] By: autrijus                              on 2003/08/18  08:00:18
+        Log: * This be 0.23.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1665] By: autrijus                              on 2003/08/18  07:52:47
+        Log: * implement $self->is_admin to properly test if it's
+	       running
+             on the admin side.
+             * Andreas Koenig reports that we are writing META.yml
+             even on the user side, because of this bug.
+	   ! lib/Module/Install/Base.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1650] By: autrijus                              on 2003/07/29  06:03:27
+        Log: * switch to PAR::Dist to do make_par.
+	   ! Makefile.PL lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1648] By: autrijus                              on 2003/07/16  01:09:42
+        Log: * oops. bad RCS expansion.
+	   ! lib/Module/Install/Makefile/Version.pm
+____________________________________________________________________________
+[  1647] By: autrijus                              on 2003/07/16  01:07:55
+        Log: * This be 0.22.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1646] By: autrijus                              on 2003/07/16  01:05:17
+        Log: * extra space.
+	   ! lib/Module/Install/Admin/Makefile.pm
+____________________________________________________________________________
+[  1645] By: autrijus                              on 2003/07/16  01:05:06
+        Log: * Turns out that MakeMaker's NAME corresponds to
+             META.yml's module_name, and DISTNAME corresponds
+             to name.  Reflect this in the relevant files.
+             * Introduce a new module_name metadata key that may
+             be automatically generated from name.
+	   ! lib/Module/Install/MakeMaker.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1644] By: autrijus                              on 2003/07/16  01:03:35
+        Log: * /\.pm/i should be /\.pm$/i.
+	   ! lib/Module/Install/Makefile/Version.pm
+____________________________________________________________________________
+[  1643] By: autrijus                              on 2003/07/16  01:02:58
+        Log: * AZ_OK was never exported.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1642] By: autrijus                              on 2003/07/10  18:53:37
+        Log: * Iain Truskett wants us to not overwrite alien META.yml
+	       files.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1640] By: autrijus                              on 2003/07/08  17:05:46
+        Log: * always write META.yml.  No reason not to.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1618] By: iain                                  on 2003/06/22  17:27:18
+        Log: - PREREQ_PM wasn't being filled out.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1617] By: iain                                  on 2003/06/22  17:26:18
+        Log: - Should be including YAML dependencies too.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1611] By: autrijus                              on 2003/06/15  21:25:43
+        Log: * POD cleanups.
+             * This be 0.21.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1610] By: autrijus                              on 2003/06/15  21:25:29
+        Log: * Lindsay Morris pointed out that include_deps()
+             does not work with non-core modules; fixed.
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+____________________________________________________________________________
+[  1589] By: autrijus                              on 2003/06/05  06:37:13
+        Log: * changes.
+	   ! Changes
+____________________________________________________________________________
+[  1588] By: autrijus                              on 2003/06/05  06:34:26
+        Log: * This be Module::Install 0.20.
+             * add pointer to ingy's TPJ article.
+	   ! README lib/Module/Install-Cookbook.pod
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1561] By: ingy                                  on 2003/05/28  00:33:11
+        Log: Caused warning on 5.005
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1558] By: autrijus                              on 2003/05/26  22:01:20
+        Log: * oops. back out the article until copyright cleared with
+	       tpj.
+	   - lib/Module/Install-Intro.pod
+____________________________________________________________________________
+[  1557] By: autrijus                              on 2003/05/26  02:19:12
+        Log: * add Ingy's TPJ article as Module::Install-Intro.
+             * ramping up to the 0.20 release.
+	   + lib/Module/Install-Intro.pod
+	   ! Makefile.PL lib/Module/Install.pm
+____________________________________________________________________________
+[  1556] By: autrijus                              on 2003/05/26  01:55:20
+        Log: * added the "package inc::Module::Install;" line at
+             request by Graham Barr, for search.cpan.org.
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1555] By: autrijus                              on 2003/05/25  11:48:33
+        Log: * close META before zipping; otherwise trips on win32.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1554] By: autrijus                              on 2003/05/25  05:28:16
+        Log: * oops.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1553] By: autrijus                              on 2003/05/25  05:23:26
+        Log: * change magic for modern geckos
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1552] By: autrijus                              on 2003/05/25  01:11:03
+        Log: * only expands arrayrefs that occurs as the key, not value,
+	       block.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1551] By: autrijus                              on 2003/05/25  00:01:02
+        Log: * requires(), build_requires(), recommends() etc can now
+	       take
+             multiple pairs in addition to a single pair.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1550] By: autrijus                              on 2003/05/24  12:43:10
+        Log: * add standard MANIFEST and META.yml to generated PAR file.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1537] By: iain                                  on 2003/05/20  22:50:53
+        Log: Implemented the &Meta->read mentioned in the main docs.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1533] By: autrijus                              on 2003/05/20  01:46:16
+        Log: * changes.
+	   ! Changes
+____________________________________________________________________________
+[  1532] By: autrijus                              on 2003/05/20  01:27:31
+        Log: * This be 0.19_99.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1531] By: autrijus                              on 2003/05/20  01:25:43
+        Log: * our version of WriteMakefile was failing to fine Meta
+	       object.	fixed.
+	   ! lib/Module/Install/MakeMaker.pm
+____________________________________________________________________________
+[  1529] By: ingy                                  on 2003/05/19  21:06:26
+        Log: 'make reset' now just an author side alias for 'make
+	     purge'.
+             Perhaps I should remove altogether.
+	   ! lib/Module/Install/Admin/Makefile.pm
+____________________________________________________________________________
+[  1520] By: ingy                                  on 2003/05/16  14:31:01
+        Log: make reset is really just make realclean. no need to be
+	     different.
+	   ! lib/Module/Install/Admin/Makefile.pm
+____________________________________________________________________________
+[  1517] By: autrijus                              on 2003/05/15  11:41:01
+        Log: * the whole #! business is unneeded since MakeMaker does
+	       that.
+	   ! lib/Module/Install/Scripts.pm
+____________________________________________________________________________
+[  1516] By: autrijus                              on 2003/05/15  11:14:59
+        Log: * avoid warnings.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1515] By: autrijus                              on 2003/05/15  11:09:47
+        Log: * don't skip other non-pm inc/ stuff when checking
+	       manifest!
+	   ! lib/Module/Install/Admin/Manifest.pm
+____________________________________________________________________________
+[  1514] By: autrijus                              on 2003/05/15  10:02:29
+        Log: * more ->prompt consistency police actions
+             * the hashbang line should be the first not last in
+	       scripts.
+             * also people may not always like -w.
+	   ! lib/Module/Install/Scripts.pm
+____________________________________________________________________________
+[  1513] By: autrijus                              on 2003/05/15  09:51:28
+        Log: * we reall want to rmtree the distdir so that 'make
+	       manifest'
+             won't include clobbered files after an aborted 'make dist'.
+             * fix consistency: ->prompt() should only take one line of
+	       prompt
+             and excepts y/n.
+	   ! lib/Module/Install/Admin/Makefile.pm
+	   ! lib/Module/Install/Admin/Manifest.pm
+____________________________________________________________________________
+[  1511] By: autrijus                              on 2003/05/14  14:21:46
+        Log: * changes.
+	   ! Changes
+____________________________________________________________________________
+[  1510] By: autrijus                              on 2003/05/14  14:19:04
+        Log: * 0.19_98.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1509] By: autrijus                              on 2003/05/14  13:54:36
+        Log: * adds #line directive to inc/ files and note their
+             origins -- this helps to debug stuff from original files.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1508] By: autrijus                              on 2003/05/14  13:21:23
+        Log: * the M::I::private is now encouraged to switch to
+             M::I::PRIVATE -- it's non-mandatory, but makes it stand
+	     out.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1502] By: iain                                  on 2003/05/13  01:28:08
+        Log: Latest EU::MM writes a META.yml file. So do we, so we stop
+	     EU::MM.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1486] By: ingy                                  on 2003/05/08  11:33:37
+        Log: 5.005 bug
+	   ! lib/Module/Install/Scripts.pm
+____________________________________________________________________________
+[  1483] By: autrijus                              on 2003/05/08  01:26:46
+        Log: * This be 0.19_97.
+             * explains the new "nuke-inc/-for-authors" mechanics.
+	   ! lib/Module/Install.pm
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1481] By: autrijus                              on 2003/05/07  10:41:22
+        Log: * fix for 5.005 build.
+	   ! lib/Module/Install/AutoInstall.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1480] By: ingy                                  on 2003/05/07  10:39:42
+        Log: Since I nuke the inc/ in inc::Module::Include, this code
+	     was
+             unnecessary.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1479] By: autrijus                              on 2003/05/06  20:00:48
+        Log: * add scripts.pm to manifest.
+	   ! MANIFEST
+____________________________________________________________________________
+[  1478] By: autrijus                              on 2003/05/06  19:58:25
+        Log: * changes.
+	   ! Changes
+____________________________________________________________________________
+[  1477] By: autrijus                              on 2003/05/06  19:58:01
+        Log: * changes.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1476] By: autrijus                              on 2003/05/06  19:50:52
+        Log: * 19_96 snapshot.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1475] By: autrijus                              on 2003/05/06  19:50:44
+        Log: * WriteMakefile() now also calls &Meta->write since that's 
+             the direction schwern's going, too.
+	   ! lib/Module/Install/MakeMaker.pm
+____________________________________________________________________________
+[  1474] By: ingy                                  on 2003/05/05  15:25:47
+        Log: Module::Install keys off inc/.author/ directory now.
+             Autrijus, Please look this over carefully. Seems to work
+	     ok.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin/Makefile.pm
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1418] By: autrijus                              on 2003/04/07  08:40:18
+        Log: * fix cases where Win32 has space in $^X.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1405] By: autrijus                              on 2003/03/30  14:11:40
+        Log: * add a mental hint from schwern.
+	   ! ToDo
+____________________________________________________________________________
+[  1402] By: autrijus                              on 2003/03/27  08:15:08
+        Log: * changes.
+	   ! Changes
+____________________________________________________________________________
+[  1401] By: autrijus                              on 2003/03/27  08:11:53
+        Log: * the 19_95 development snapshot.
+	   ! Makefile.PL README lib/Module/Install.pm
+____________________________________________________________________________
+[  1398] By: autrijus                              on 2003/03/26  08:45:50
+        Log: * Peter Sergeant reported a possible 5.005 glitch.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1397] By: autrijus                              on 2003/03/23  21:44:22
+        Log: * rcs header.
+	   ! lib/Module/Install/Admin/Makefile.pm
+	   ! lib/Module/Install/Scripts.pm
+____________________________________________________________________________
+[  1396] By: autrijus                              on 2003/03/23  21:44:16
+        Log: * backing out dysfunctional magic.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1395] By: ingy                                  on 2003/03/23  15:09:08
+        Log: This module makes it easy to install scripts in
+	     distributions.
+	   + lib/Module/Install/Scripts.pm
+____________________________________________________________________________
+[  1394] By: ingy                                  on 2003/03/23  09:19:43
+        Log: extra cleaning
+	   ! lib/Module/Install/Admin/Makefile.pm
+____________________________________________________________________________
+[  1393] By: ingy                                  on 2003/03/23  09:19:28
+        Log: Backing out until Autrijus fixes Admin-to-Admin calling
+	   ! lib/Module/Install/Admin/Manifest.pm
+____________________________________________________________________________
+[  1392] By: ingy                                  on 2003/03/23  09:12:23
+        Log: .
+	   ! MANIFEST.SKIP
+____________________________________________________________________________
+[  1391] By: autrijus                              on 2003/03/22  23:25:16
+        Log: * some preliminary fix.
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Admin/Manifest.pm
+____________________________________________________________________________
+[  1390] By: ingy                                  on 2003/03/22  22:04:23
+        Log: This patch works, but needs refactoring. 
+             I had to duplicate code because I could not figure out how
+	     to call
+             methods across Admin modules. HELP!
+	   ! MANIFEST lib/Module/Install/Admin/Makefile.pm
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Build.pm
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1389] By: ingy                                  on 2003/03/22  18:20:49
+        Log: adding admin module
+	   + lib/Module/Install/Admin/Makefile.pm
+____________________________________________________________________________
+[  1388] By: ingy                                  on 2003/03/22  17:54:28
+        Log: Added support for checking the MANIFEST on 'make dist'.
+             Refactored the fix_up_makefile()
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1387] By: autrijus                              on 2003/03/22  15:50:18
+        Log: * sudo installation support.
+	   ! lib/Module/Install/AutoInstall.pm
+____________________________________________________________________________
+[  1386] By: autrijus                              on 2003/03/22  15:09:03
+        Log: * fix cleaninstall.
+	   ! MANIFEST Makefile.PL
+____________________________________________________________________________
+[  1384] By: ingy                                  on 2003/03/22  14:03:27
+        Log: Setting +w
+	   ! MANIFEST
+____________________________________________________________________________
+[  1383] By: ingy                                  on 2003/03/22  14:00:19
+        Log: Oops. I busted 'make reset' on last fix. Fixed.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1382] By: ingy                                  on 2003/03/22  13:55:14
+        Log: A fix for the segfaults I was getting. This fix demands:
+             
+             use inc::Module::Install;
+             
+             over:
+             
+             use lib 'inc';
+             use Module::Install;
+             
+             But the latter was busted on first run anyway (segfault).
+	   ! MANIFEST lib/Module/Install.pm
+____________________________________________________________________________
+[  1381] By: autrijus                              on 2003/03/22  10:51:21
+        Log: * adding manifest back in.
+	   + MANIFEST
+____________________________________________________________________________
+[  1380] By: autrijus                              on 2003/03/22  07:16:08
+        Log: * beginning of a cookbook
+	   ! lib/Module/Install-Cookbook.pod
+____________________________________________________________________________
+[  1379] By: autrijus                              on 2003/03/22  07:15:33
+        Log: * better stripping to be more perl-like but less
+	       podspec-like
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1376] By: autrijus                              on 2003/03/19  04:49:04
+        Log: * attach / for ftp urls, too.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1375] By: autrijus                              on 2003/03/18  12:29:32
+        Log: * switching to @INC instead of use base because it's broken
+	       on 5.6.0.
+             * sad but true.
+	   ! lib/Module/Install/Admin/Find.pm
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Admin/Metadata.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+	   ! lib/Module/Install/AutoInstall.pm
+	   ! lib/Module/Install/Base.pm
+	   ! lib/Module/Install/Build.pm
+	   ! lib/Module/Install/Bundle.pm
+	   ! lib/Module/Install/Include.pm
+	   ! lib/Module/Install/Inline.pm
+	   ! lib/Module/Install/MakeMaker.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+	   ! lib/Module/Install/Metadata.pm
+	   ! lib/Module/Install/Run.pm
+____________________________________________________________________________
+[  1374] By: autrijus                              on 2003/03/18  11:50:15
+        Log: * new ftp_url args to specify non-http alternatives.
+             * find out the http location to nmake15.exe.
+	   ! lib/Module/Install/Fetch.pm
+	   ! lib/Module/Install/PAR.pm
+	   ! lib/Module/Install/Win32.pm
+____________________________________________________________________________
+[  1373] By: autrijus                              on 2003/03/18  11:33:41
+        Log: * preliminary http support in Fetch.
+             * use that for CPAN.
+	   ! lib/Module/Install/Fetch.pm
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1372] By: autrijus                              on 2003/03/18  11:18:27
+        Log: * fix incorrect $cmd overwriting
+	   ! lib/Module/Install/Can.pm
+____________________________________________________________________________
+[  1371] By: autrijus                              on 2003/03/18  04:22:04
+        Log: * they are private extensions, therefore private >
+	       PERSONAL.
+             (it's not an acronym, it's a local config, like
+	     only::config,
+             hence the lowercase).
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1364] By: ingy                                  on 2003/03/11  22:44:50
+        Log: I assume this is a bug...
+	   ! lib/Module/Install/Can.pm
+____________________________________________________________________________
+[  1363] By: autrijus                              on 2003/03/11  22:38:28
+        Log: * don't delete just overlay, so we don't' trigger 5.8 bugs.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1362] By: autrijus                              on 2003/03/11  06:39:24
+        Log: * make fetch non-fatal, thanks to Markus.
+	   ! lib/Module/Install/Can.pm
+	   ! lib/Module/Install/Fetch.pm
+____________________________________________________________________________
+[  1361] By: autrijus                              on 2003/03/11  02:13:18
+        Log: * docs adjustment.
+	   ! lib/Module/Install/Base.pm
+____________________________________________________________________________
+[  1360] By: autrijus                              on 2003/03/11  01:53:52
+        Log: * empty run.pm.
+	   ! lib/Module/Install/Run.pm
+____________________________________________________________________________
+[  1359] By: autrijus                              on 2003/03/11  01:49:03
+        Log: * docs.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1358] By: autrijus                              on 2003/03/11  01:35:15
+        Log: * move capacities into Can.
+	  +> lib/Module/Install/Can.pm
+____________________________________________________________________________
+[  1347] By: autrijus                              on 2003/03/10  00:25:34
+        Log: * make fetch_par use the correct name.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1345] By: autrijus                              on 2003/03/10  00:10:13
+        Log: * we don't _really_ want to bundle M::B.
+	   ! Makefile.PL
+____________________________________________________________________________
+[  1344] By: autrijus                              on 2003/03/10  00:10:02
+        Log: * beginning of bundle support.
+	   + lib/Module/Install/Bundle.pm
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1343] By: autrijus                              on 2003/03/09  23:46:12
+        Log: * according to ingy, Inline is required, not
+	       build_required.
+	   ! lib/Module/Install/Inline.pm
+____________________________________________________________________________
+[  1342] By: autrijus                              on 2003/03/09  23:41:34
+        Log: * make include_dep('Inline') work.
+	   ! lib/Module/Install/Inline.pm
+____________________________________________________________________________
+[  1341] By: autrijus                              on 2003/03/09  23:28:03
+        Log: * add section markers to makefiles.
+             * beginning of Inline support.
+             * mention Inline and PAR in M::I manpage.
+             * WriteMakefile() now does argument translation so it
+             can work with other ::Metadata-related mechanisms.
+	   + lib/Module/Install/Inline.pm
+	   ! ToDo lib/Module/Install.pm
+	   ! lib/Module/Install/AutoInstall.pm
+	   ! lib/Module/Install/MakeMaker.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1340] By: autrijus                              on 2003/03/09  23:26:56
+        Log: * redid find_in_inc as glob_in_inc.
+	   ! Makefile.PL lib/Module/Install/Admin/Find.pm
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+	   ! lib/Module/Install/Include.pm
+____________________________________________________________________________
+[  1337] By: autrijus                              on 2003/03/09  06:07:19
+        Log: * oops, no need for $suffix anymore.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1336] By: autrijus                              on 2003/03/09  06:00:16
+        Log: * ditch DISTVNAME for the more consistent $file.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1335] By: autrijus                              on 2003/03/09  04:36:05
+        Log: * don't feature anything by default.
+	   ! Makefile.PL
+____________________________________________________________________________
+[  1334] By: autrijus                              on 2003/03/09  04:34:44
+        Log: * adds PAR and Build prereqs.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1333] By: autrijus                              on 2003/03/09  04:34:29
+        Log: * 5.6.1 doesn't have PERLRUN ;)
+	   ! Makefile.PL lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1332] By: autrijus                              on 2003/03/09  04:18:29
+        Log: * various 5.6.1-building tweaks
+	   ! Makefile.PL
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+____________________________________________________________________________
+[  1331] By: autrijus                              on 2003/03/09  03:25:51
+        Log: * nmake doesn't do PERLRUN lookahead. bummer.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1330] By: autrijus                              on 2003/03/09  03:20:48
+        Log: * turns out $0 doesn't guarantee casing.
+	   ! Makefile.PL
+____________________________________________________________________________
+[  1329] By: autrijus                              on 2003/03/09  03:19:04
+        Log: * prefer more orthodox quoting for nmake.
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1328] By: autrijus                              on 2003/03/08  13:42:14
+        Log: * implments auto_install_now() to solve bootstrap issues.
+             * M::I::B now delays requiring Module::Build till it's
+	       actual needed.
+	   ! Makefile.PL lib/Module/Install/AutoInstall.pm
+	   ! lib/Module/Install/Build.pm
+____________________________________________________________________________
+[  1326] By: autrijus                              on 2003/03/08  09:16:07
+        Log: * spelling corrections.
+	   ! lib/Module/Install/AutoInstall.pm
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1325] By: autrijus                              on 2003/03/08  08:56:10
+        Log: * i don't like correcting myself.
+	   ! lib/Module/Install/Admin/Manifest.pm
+____________________________________________________________________________
+[  1324] By: autrijus                              on 2003/03/08  08:53:29
+        Log: * this too.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1323] By: autrijus                              on 2003/03/08  08:52:50
+        Log: * correct perlrun line.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1322] By: autrijus                              on 2003/03/08  08:11:40
+        Log: * returns the fetched file.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1321] By: autrijus                              on 2003/03/08  07:33:19
+        Log: * failed reference lesson 101.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1320] By: autrijus                              on 2003/03/08  07:27:42
+        Log: * ok, i lied.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1319] By: autrijus                              on 2003/03/08  07:25:14
+        Log: * final tweak.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1318] By: autrijus                              on 2003/03/08  07:20:24
+        Log: * fix messages for compactness.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1317] By: autrijus                              on 2003/03/08  06:25:04
+        Log: * shorter can_run().
+	   ! lib/Module/Install/Run.pm
+____________________________________________________________________________
+[  1316] By: autrijus                              on 2003/03/08  06:09:48
+        Log: * refactor out par_fetch.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1315] By: autrijus                              on 2003/03/08  02:43:21
+        Log: * oops.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1314] By: autrijus                              on 2003/03/08  02:41:17
+        Log: * $@ warning is now restored.
+             * cleaners Metadata dump.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1313] By: autrijus                              on 2003/03/08  02:30:22
+        Log: * don't test for signature if we don't have it yet.
+	   ! t/0-signature.t
+____________________________________________________________________________
+[  1312] By: autrijus                              on 2003/03/08  02:29:26
+        Log: * oops, PAR files starts at lib/, arch/ not blib/.
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1311] By: autrijus                              on 2003/03/08  01:32:42
+        Log: * -w runs clean now.
+             * fix Manifest.pm to look all of inc/. it was always the
+             case but only because a bug ($DIR was always undef).
+             * more robust detection for ScanDeps.
+             * AutoInstall is also -w clean now.
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+	   ! lib/Module/Install/AutoInstall.pm
+____________________________________________________________________________
+[  1310] By: autrijus                              on 2003/03/08  01:29:15
+        Log: * continue razoring. $extension->initialized is gone.
+	       yagni.
+             (->initialized is always false iff ->admin is true.)
+             * nix the only place we use initialized().
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Base.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1309] By: autrijus                              on 2003/03/08  01:27:31
+        Log: * beginning of -w saftety patches.
+             * M::I->admin is gone. yagni at all.
+             * simplify load_extensions so we do not load a file twice.
+             * don't attempt finding in paths that does not exist.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1308] By: autrijus                              on 2003/03/07  22:46:17
+        Log: * massive documentation rework, phase #1.
+	   ! ToDo lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Base.pm
+____________________________________________________________________________
+[  1299] By: autrijus                              on 2003/03/07  18:04:41
+        Log: * local @INC *not* needed if inc/ is the first @INC
+	       element.
+             * also check for duplicate @INC insertion in admin.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1298] By: autrijus                              on 2003/03/07  17:58:06
+        Log: * look in all @INC not just the first.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1297] By: autrijus                              on 2003/03/07  17:55:15
+        Log: * still need to tweak @INC before loading extensions,
+             otherwise inc/ExtUtils/AutoInstall etc won't be loaded.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1296] By: autrijus                              on 2003/03/07  17:51:50
+        Log: * nomenclature fix. remove unneccessary unshift.
+             * readability fix from #perl.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1295] By: autrijus                              on 2003/03/07  09:51:59
+        Log: * better messages.
+             * 01:48 <kaneX> you just made napc using par?
+             * 01:48 <autrijus> an important piece of napc, yes.
+             * 01:49 <autrijus> will be a full napc with some kind of
+	       discovery network.
+             * 01:49 <autrijus> but the hardest bit is done!
+	   ! lib/Module/Install/PAR.pm
+____________________________________________________________________________
+[  1294] By: autrijus                              on 2003/03/07  09:20:43
+        Log: * all magics are broken with the new oo model till this
+	       fix.
+	   ! lib/Module/Install.pm
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1293] By: autrijus                              on 2003/03/07  09:11:39
+        Log: * up the stake to 0.45.
+	   ! lib/Module/Install/AutoInstall.pm
+____________________________________________________________________________
+[  1292] By: autrijus                              on 2003/03/07  08:56:21
+        Log: * don't download PAR distributions since we are, uhm, not
+	       binary.
+	   ! Makefile.PL
+____________________________________________________________________________
+[  1291] By: autrijus                              on 2003/03/07  08:56:07
+        Log: * generic support for EU::AI without recommends().
+	   ! lib/Module/Install/AutoInstall.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1290] By: autrijus                              on 2003/03/07  08:55:15
+        Log: * lazybones documentation 101: delete all modules you
+	       didn't get to write docs for ;)
+             * seriously, clean_files is definitely Makefile domain, not
+	       'Directives'.
+	   - lib/Module/Install/Directives.pm
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1288] By: autrijus                              on 2003/03/06  21:32:32
+        Log: * doco and typo
+	   + lib/Module/Install-Cookbook.pod
+	   ! Makefile.PL lib/Module/Install-Philosophy.pod
+____________________________________________________________________________
+[  1287] By: autrijus                              on 2003/03/06  19:55:47
+        Log: * add build-friendly manifest.skip
+	   ! MANIFEST.SKIP
+____________________________________________________________________________
+[  1286] By: autrijus                              on 2003/03/06  19:54:38
+        Log: * kill todo so poor case-insensitive sods won't be
+	       confused.
+	   - TODO
+____________________________________________________________________________
+[  1285] By: autrijus                              on 2003/03/06  19:53:42
+        Log: * Build.PL is now merely an alias for Makefile.PL
+             * doc tweaks
+	   ! Build.PL Makefile.PL
+	   ! lib/Module/Install/Build.pm
+____________________________________________________________________________
+[  1284] By: autrijus                              on 2003/03/06  19:51:49
+        Log: * autoinstall lands!
+	   ! lib/Module/Install/AutoInstall.pm
+	   ! lib/Module/Install/Include.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1282] By: ingy                                  on 2003/03/06  11:34:16
+        Log: *
+	   ! ToDo lib/Module/Install/Admin/Manifest.pm
+____________________________________________________________________________
+[  1281] By: autrijus                              on 2003/03/06  09:01:45
+        Log: * correct invocation.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1280] By: autrijus                              on 2003/03/06  09:01:31
+        Log: * pick() now prefers more recently modified extensions.
+             * it can also take a default of first by pressing 'enter'.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1279] By: autrijus                              on 2003/03/06  09:00:51
+        Log: * add M::I::A::Metadata to docs.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1278] By: autrijus                              on 2003/03/06  08:50:03
+        Log: * nomenclature.
+	   ! lib/Module/Install/Admin/Metadata.pm
+____________________________________________________________________________
+[  1277] By: autrijus                              on 2003/03/06  08:49:40
+        Log: * Util is now gone. Metadata.pm now in.
+	  +> lib/Module/Install/Admin/Metadata.pm
+	   - lib/Module/Install/Admin/Util.pm
+____________________________________________________________________________
+[  1276] By: autrijus                              on 2003/03/06  08:48:13
+        Log: * introduces M::I::A::Find to contain all find-related
+	       stuff.
+	   + lib/Module/Install/Admin/Find.pm
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+____________________________________________________________________________
+[  1275] By: autrijus                              on 2003/03/06  08:47:53
+        Log: * continue moving out Util.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1274] By: autrijus                              on 2003/03/06  08:47:14
+        Log: * File::Find is shorter, why not?
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+____________________________________________________________________________
+[  1273] By: autrijus                              on 2003/03/06  08:46:30
+        Log: * use M::I version instead of hard-coding Metadata.
+	   ! lib/Module/Install/Admin/Util.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1272] By: autrijus                              on 2003/03/06  08:45:46
+        Log: * M::I::A can now export its own variant of AUTOLOAD into
+             the calling package when directly used, like from command
+	     line.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1271] By: autrijus                              on 2003/03/06  08:44:59
+        Log: * $main::VARNAME considered broken.  remove it completely.
+	   - lib/Module/Install/Makefile/CleanFiles.pm
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1270] By: autrijus                              on 2003/03/06  08:02:36
+        Log: * i'm growing uneasy about the kitchen-sink name 'Util'.
+	   ! lib/Module/Install/Admin/Util.pm
+____________________________________________________________________________
+[  1269] By: autrijus                              on 2003/03/06  07:55:53
+        Log: * modernized Util.
+             * constant refactoring continues.
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+	   ! lib/Module/Install/Admin/Util.pm
+	   ! lib/Module/Install/Include.pm
+____________________________________________________________________________
+[  1268] By: autrijus                              on 2003/03/06  07:35:09
+        Log: * cutesy style indenting. ;)
+	   ! Makefile.PL
+____________________________________________________________________________
+[  1267] By: autrijus                              on 2003/03/06  07:34:59
+        Log: * fixed admin dispatching.
+             * adds build_requires.
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1266] By: autrijus                              on 2003/03/06  02:45:58
+        Log: * pod-checked the manual.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1265] By: autrijus                              on 2003/03/06  02:44:27
+        Log: * spell-checked the docs.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1264] By: autrijus                              on 2003/03/06  02:43:23
+        Log: * split the Build.PL and Makefile.PL install path.
+	   + Build.PL
+	   ! Makefile.PL README
+____________________________________________________________________________
+[  1263] By: autrijus                              on 2003/03/06  02:37:29
+        Log: * vastly improved documentation.
+             * continue refactoring to must _find_files inside Admin/.
+             * we eventually wants to switch to Find::Files.
+	   ! README lib/Module/Install.pm
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Base.pm
+	   ! lib/Module/Install/Include.pm
+	   ! lib/Module/Install/MakeMaker.pm
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1262] By: autrijus                              on 2003/03/05  21:43:15
+        Log: * amazing refactoring of M::I::A classes and class model.
+	   ! MANIFEST.SKIP lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Base.pm
+	   ! lib/Module/Install/Build.pm
+	   ! lib/Module/Install/Include.pm
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1261] By: ingy                                  on 2003/03/05  20:17:46
+        Log: .
+	   ! ToDo
+____________________________________________________________________________
+[  1260] By: ingy                                  on 2003/03/05  18:55:52
+        Log: To Do list
+	   + ToDo
+____________________________________________________________________________
+[  1258] By: ingy                                  on 2003/03/05  16:24:33
+        Log: You can do BOTH!!!
+	   ! Makefile.PL
+____________________________________________________________________________
+[  1257] By: ingy                                  on 2003/03/05  16:11:32
+        Log: Works with Module::Build!!
+             
+             Need to ensure it uses included copy if Module::Build is
+	     included.
+             
+             Need to specify extra ACTIONs
+             
+             Probably lots of other stuff.
+	   + lib/Module/Install/Build.pm
+	   ! Makefile.PL
+____________________________________________________________________________
+[  1256] By: ingy                                  on 2003/03/05  14:08:36
+        Log: Refactor bundle->include
+             
+             I think that 'include' is the term we should be used for
+             non-installable files that go in the *inc* directory.
+             
+             Bundles will be complete distributions that will either go
+	     under
+             BUNDLE/ or inc/BUNDLE or something.
+	   + lib/Module/Install/Include.pm
+	   - lib/Module/Install/Bundle.pm
+	   ! Changes Makefile.PL lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+____________________________________________________________________________
+[  1255] By: ingy                                  on 2003/03/05  13:23:32
+        Log: 'make reset' now gets rid of auto-generated META.yml and
+	     cleans out
+             the MANIFEST of inc/ files.
+	   + lib/Module/Install/Admin/Util.pm
+	   - MANIFEST
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1254] By: ingy                                  on 2003/03/05  12:30:51
+        Log: Honor the MANIFEST.SKIP
+             I don't think we want to ship ./inc/Module/Install files,
+	     but we do
+             want to ship ./inc/Test files etc.
+	   - Idea
+	   ! MANIFEST MANIFEST.SKIP
+	   ! lib/Module/Install/Admin/Manifest.pm
+____________________________________________________________________________
+[  1253] By: ingy                                  on 2003/03/05  11:38:56
+        Log: Temporary fix to bootstrapping issue with Module::ScanDeps
+	   ! Makefile.PL
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+____________________________________________________________________________
+[  1252] By: autrijus                              on 2003/03/05  09:23:09
+        Log: * change package name.
+	   ! lib/Module/Install/Admin/Manifest.pm
+	   ! lib/Module/Install/Admin/ScanDeps.pm
+____________________________________________________________________________
+[  1251] By: autrijus                              on 2003/03/05  09:21:56
+        Log: * move administrative-only extensions to M::I::A.
+	  +> lib/Module/Install/Admin/Manifest.pm
+	  +> lib/Module/Install/Admin/ScanDeps.pm
+	   - lib/Module/Install/Manifest.pm
+	   - lib/Module/Install/ScanDeps.pm
+____________________________________________________________________________
+[  1250] By: autrijus                              on 2003/03/05  09:06:24
+        Log: * first cut at bundle() and bundle_deps().
+             * take the M::I::AI namespace.
+	   + lib/Module/Install/AutoInstall.pm
+	   + lib/Module/Install/Bundle.pm
+	   + lib/Module/Install/ScanDeps.pm
+	   ! Makefile.PL lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Base.pm
+____________________________________________________________________________
+[  1249] By: autrijus                              on 2003/03/05  05:16:25
+        Log: * please, please abide by the spec.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1246] By: ingy                                  on 2003/03/05  00:07:36
+        Log: Made pod strip a bit more vigilant
+	   ! MANIFEST lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1245] By: ingy                                  on 2003/03/04  23:57:46
+        Log: I don't think 'mkdir' messages are that useful.
+	   ! MANIFEST lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1244] By: ingy                                  on 2003/03/04  23:48:11
+        Log: Giving up on having 'make reset' clean the MANIFEST. Maybe
+	     I try again
+             later.
+	   ! MANIFEST lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Manifest.pm
+____________________________________________________________________________
+[  1243] By: autrijus                              on 2003/03/04  23:16:31
+        Log: * correct invocation.
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Manifest.pm
+____________________________________________________________________________
+[  1242] By: autrijus                              on 2003/03/04  23:11:57
+        Log: * fix ingy's thinko.
+	   ! lib/Module/Install/Manifest.pm
+____________________________________________________________________________
+[  1241] By: ingy                                  on 2003/03/04  23:09:11
+        Log: checkin
+	   ! MANIFEST lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Manifest.pm
+____________________________________________________________________________
+[  1239] By: autrijus                              on 2003/03/04  22:56:00
+        Log: * oops.
+	   ! MANIFEST
+____________________________________________________________________________
+[  1238] By: autrijus                              on 2003/03/04  22:50:35
+        Log: * cosmetic styles.
+	   ! Makefile.PL README lib/Module/Install/Fetch.pm
+	   ! t/0-signature.t
+____________________________________________________________________________
+[  1237] By: autrijus                              on 2003/03/04  22:44:36
+        Log: * now that we have MIB, move everything to subclass it.
+             * also moves the vim hint line to top.
+	   + lib/Module/Install/MakeMaker.pm
+	   ! lib/Module/Install/Directives.pm
+	   ! lib/Module/Install/Fetch.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/CleanFiles.pm
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+	   ! lib/Module/Install/Manifest.pm
+	   ! lib/Module/Install/Metadata.pm
+	   ! lib/Module/Install/Run.pm
+	   ! lib/Module/Install/Win32.pm
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1236] By: autrijus                              on 2003/03/04  22:43:47
+        Log: * use canonical POD stripping according to perlpodspec.
+             * copy_package is now used to copy the @ISA tree too.
+             * tweaked prompts in pick().
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1235] By: autrijus                              on 2003/03/04  22:36:08
+        Log: * put documents into PODs to take advantage of stripping.
+             * rewrote find_extensions to use File::Find.
+             * M::I no longer sports an AUTOLOAD -- it's M::I::B's job
+	       now.
+             * load_extensions now take another $top arg instead of
+	       guessing.
+             * stop blind exporting into extension space.
+             * introduces MIB.
+	   + lib/Module/Install/Base.pm
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1234] By: autrijus                              on 2003/03/04  22:33:36
+        Log: * bring our manifest uptodate.
+	   ! MANIFEST
+____________________________________________________________________________
+[  1233] By: ingy                                  on 2003/03/04  20:39:00
+        Log: Strip out POD when copying extensions.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1232] By: ingy                                  on 2003/03/04  19:36:13
+        Log: Moved rest of POD into modules.
+	   - lib/Module/Install.pod
+	   - lib/Module/Install/Admin.pod
+	   - lib/Module/Install/Win32.pod
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Win32.pm
+____________________________________________________________________________
+[  1231] By: ingy                                  on 2003/03/04  19:25:42
+        Log: Refactored Manifest.pm
+             Now removes entries appropriately
+             Started inlining pod
+	   - lib/Module/Install/Makefile.pod
+	   - lib/Module/Install/Manifest.pod
+	   ! MANIFEST Makefile.PL
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Manifest.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1229] By: autrijus                              on 2003/03/04  04:07:59
+        Log: * first cut at a workinc pick().
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1228] By: autrijus                              on 2003/03/04  04:01:24
+        Log: * style changes, tabs, rcs.
+	   ! lib/Module/Install/Directives.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1223] By: autrijus                              on 2003/03/04  01:22:48
+        Log: * use closures instead of the costly (and
+	       syntax-hilightning-nonfriendly) eval.
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1222] By: ingy                                  on 2003/03/04  00:54:06
+        Log: Needed to require MM_Unix
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1221] By: autrijus                              on 2003/03/04  00:50:51
+        Log: * oops, left debug code in.
+	   ! lib/Module/Install/Win32.pm
+____________________________________________________________________________
+[  1220] By: ingy                                  on 2003/03/04  00:49:28
+        Log: Tweks
+	   ! lib/Module/Install/Directives.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Manifest.pm
+____________________________________________________________________________
+[  1217] By: ingy                                  on 2003/03/04  00:12:24
+        Log: Got basics of metadata working.
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Metadata.pm
+____________________________________________________________________________
+[  1216] By: autrijus                              on 2003/03/03  23:58:30
+        Log: * oops. now display failures.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1215] By: autrijus                              on 2003/03/03  23:56:31
+        Log: * correct typo.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1214] By: ingy                                  on 2003/03/03  23:52:56
+        Log: Adding Metadata.pm extension - (in progress)
+	   + lib/Module/Install/Directives.pm
+	   + lib/Module/Install/Metadata.pm
+	   ! Makefile.PL lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+____________________________________________________________________________
+[  1213] By: autrijus                              on 2003/03/03  23:07:45
+        Log: * retab.
+	   ! Changes Makefile.PL README
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Fetch.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+	   ! lib/Module/Install/Manifest.pm
+	   ! lib/Module/Install/Win32.pm t/0-signature.t
+____________________________________________________________________________
+[  1212] By: autrijus                              on 2003/03/03  21:52:58
+        Log: * oops, ->initialized is evaluating the incorrect object.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1211] By: autrijus                              on 2003/03/03  21:37:50
+        Log: * export initialized.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1210] By: autrijus                              on 2003/03/03  21:36:49
+        Log: * fix makefile arg() so that undef means read.
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+____________________________________________________________________________
+[  1209] By: autrijus                              on 2003/03/03  21:35:42
+        Log: * remove debug info.
+             * inheritance now really works.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1208] By: autrijus                              on 2003/03/03  21:34:39
+        Log: * implement (import => [...]) that can override autoload.
+             * provide ->initialized.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1207] By: autrijus                              on 2003/03/03  20:20:22
+        Log: * use stringified, not numeric, version.
+             * s/require/do/; to prevent @INC abuse.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1206] By: autrijus                              on 2003/03/03  20:19:42
+        Log: * do not load Admin twice.
+             * add new method, initialized, that returns false only
+	       during first run
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1205] By: ingy                                  on 2003/03/03  13:36:30
+        Log: Added version_from support
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+____________________________________________________________________________
+[  1204] By: autrijus                              on 2003/03/02  21:32:55
+        Log: * refactored the object model to be fully subclassable.
+             * also ensures forward-compatibility by avoiding
+	       __PACKAGE__
+             * the use of global variables and _copy flags are
+	       eliminated.
+             * bootstrapping moved to ::Admin because never needed on
+	       user-side.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1203] By: autrijus                              on 2003/03/01  21:36:25
+        Log: * remove possible '//' on weird search paths.
+	   ! lib/Module/Install/Manifest.pm
+____________________________________________________________________________
+[  1202] By: autrijus                              on 2003/03/01  21:35:53
+        Log: * clean up the Makefile OO model; ->makefile is now
+	       identity
+             function returning the makefile object; ->arg is now the
+             universal accessor to that object.
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/CleanFiles.pm
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+____________________________________________________________________________
+[  1201] By: autrijus                              on 2003/03/01  21:35:11
+        Log: * reintroduce copy() to tell user what we're doing.
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1200] By: autrijus                              on 2003/03/01  21:34:21
+        Log: * do not fail silently on failed extensions.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1199] By: autrijus                              on 2003/03/01  21:33:33
+        Log: * spell checking + cleaning up
+	   ! TODO lib/Module/Install-Philosophy.pod
+____________________________________________________________________________
+[  1198] By: autrijus                              on 2003/03/01  18:55:39
+        Log: * move name() and version() to become accessor functions of
+	       Makefile object.
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+____________________________________________________________________________
+[  1197] By: autrijus                              on 2003/03/01  18:49:43
+        Log: * unify varname 'object' to 'obj'.
+             * remove a debug line.
+             * decline from delegating all-uppercase like UNTIE, not
+	       only DESTROY
+             * now $default_obj is only instantialized once.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1196] By: autrijus                              on 2003/03/01  18:34:40
+        Log: * minimizing i::M::I to avoid screwing up pause.
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1195] By: autrijus                              on 2003/03/01  18:17:29
+        Log: * oops, was copying inc::M::I instead of M::I.
+             * use i::M::I ourselves for dogfooding.
+	   ! Makefile.PL lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1194] By: autrijus                              on 2003/03/01  18:09:17
+        Log: * s/require/use/.
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1193] By: ingy                                  on 2003/03/01  17:44:27
+        Log: Added name and version functions to user API
+             Let's get this to the point where we don't accept any
+	     parameters
+             passed into WriteMakefile.
+             
+             Which should be:
+             
+             makefile()->write; 
+             
+             anyway :)
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+____________________________________________________________________________
+[  1192] By: ingy                                  on 2003/03/01  16:47:50
+        Log: Turning the prompt() function into a method call needed to
+	     be
+             adjusted.
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1191] By: ingy                                  on 2003/03/01  16:34:47
+        Log: Rearranged i::M::I to be a bit more straightforward.
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1190] By: ingy                                  on 2003/03/01  16:07:42
+        Log: Did a little name-change refactoring whilst trying to
+	     figure out
+             autrijus code. We need more tests to make sure things
+	     aren't breaking.
+             I'm gonna start working on some tests soon.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1189] By: ingy                                  on 2003/03/01  13:16:46
+        Log: Make reset needs to blow away ./inc
+             A purge routine seems yagni
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1188] By: autrijus                              on 2003/03/01  08:01:16
+        Log: * change semantic: ->call now marks author-side calls;
+             it will silently fail if no ::Admin is found.
+             * ->load now marks client-side inclusion; it will guarantee
+             that the provider is copied to inc/.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1187] By: autrijus                              on 2003/03/01  04:31:52
+        Log: * remove MakeMaker from MANIFEST.
+             * it's now purge_extensions, not purge_self.
+	   ! MANIFEST lib/Module/Install/Makefile.pm
+____________________________________________________________________________
+[  1186] By: autrijus                              on 2003/03/01  04:29:41
+        Log: * it compiles. ship it!
+	   ! MANIFEST lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Makefile/CleanFiles.pm
+	   ! lib/Module/Install/Makefile/Name.pm
+	   ! lib/Module/Install/Makefile/Version.pm
+	   ! lib/Module/Install/Manifest.pm
+____________________________________________________________________________
+[  1185] By: autrijus                              on 2003/03/01  03:47:14
+        Log: * The great OO refactoring, try #1.
+	   + lib/Module/Install/Fetch.pm
+	   + lib/Module/Install/Makefile/CleanFiles.pm
+	   + lib/Module/Install/Makefile/Name.pm
+	   + lib/Module/Install/Makefile/Version.pm
+	   + lib/Module/Install/Run.pm
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/Makefile.pm
+	   ! lib/Module/Install/Manifest.pm
+	   ! lib/Module/Install/Win32.pm
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1184] By: autrijus                              on 2003/03/01  03:06:52
+        Log: * s/MakeMaker/Makefile/ per ingy's ideas.
+	  +> lib/Module/Install/Makefile.pm
+	  +> lib/Module/Install/Makefile.pod
+	   - lib/Module/Install/MakeMaker.pm
+	   - lib/Module/Install/MakeMaker.pod
+____________________________________________________________________________
+[  1182] By: autrijus                              on 2003/02/28  22:45:34
+        Log: * oops, ingy pointed out that import wasn't working.
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1181] By: autrijus                              on 2003/02/28  22:43:07
+        Log: * strict 'refs' is not our concern.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1180] By: autrijus                              on 2003/02/28  22:23:28
+        Log: * wording fix.
+             * add Ideas to manifest.
+	   ! MANIFEST Makefile.PL
+____________________________________________________________________________
+[  1179] By: autrijus                              on 2003/02/28  22:23:07
+        Log: * use strict-clean.
+	   ! lib/Module/Install.pm
+____________________________________________________________________________
+[  1178] By: autrijus                              on 2003/02/28  19:12:54
+        Log: * nis any mention of 'Beer'.
+             * $DIR, $FILE, $PREFIX, $PACKAGE and &find_files are now
+	       always
+             exported to extensions.  This is subject to further
+	     OOization.
+	   ! TODO lib/Module/Install.pm
+	   ! lib/Module/Install/Manifest.pm
+	   ! lib/Module/Install/Win32.pod
+____________________________________________________________________________
+[  1177] By: autrijus                              on 2003/02/28  19:01:12
+        Log: * now search for extensions recursively.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+____________________________________________________________________________
+[  1176] By: autrijus                              on 2003/02/28  18:31:57
+        Log: * add Try(...) for an extension to call functions in
+             another extension _without_ copying it in inc/.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/Module/Install/MakeMaker.pm
+	   ! lib/Module/Install/Manifest.pm
+	   ! lib/Module/Install/Win32.pm
+____________________________________________________________________________
+[  1174] By: autrijus                              on 2003/02/28  18:00:10
+        Log: * the AUTOLOAD handler is now exported to all extensions.
+             * everything now happens at import() time.
+	   ! lib/Module/Install.pm
+	   ! lib/Module/Install/Admin.pm
+	   ! lib/inc/Module/Install.pm
+____________________________________________________________________________
+[  1171] By: autrijus                              on 2003/02/28  12:20:30
+        Log: * slightly fixed, podchecked philosophy.pod
+	   + lib/Module/Install-Philosophy.pod
+	   ! MANIFEST
+____________________________________________________________________________
+[  1170] By: autrijus                              on 2003/02/28  11:52:01
+        Log: * swap docs between M::I and M::I::A. 
+	   ! lib/Module/Install.pod
+	   ! lib/Module/Install/Admin.pod

Added: packages/libmodule-install-perl/branches/upstream/current/MANIFEST
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/MANIFEST	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/MANIFEST	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,57 @@
+Build.PL
+Changes
+inc/ExtUtils/AutoInstall.pm
+inc/Module/Install.pm
+inc/Module/Install/AutoInstall.pm
+inc/Module/Install/Base.pm
+inc/Module/Install/Build.pm
+inc/Module/Install/Can.pm
+inc/Module/Install/Fetch.pm
+inc/Module/Install/Include.pm
+inc/Module/Install/Makefile.pm
+inc/Module/Install/Metadata.pm
+inc/Module/Install/PAR.pm
+inc/Module/Install/Win32.pm
+inc/Module/Install/WriteAll.pm
+inc/Test/Builder.pm
+inc/Test/More.pm
+lib/inc/Module/Install.pm
+lib/Module/Install-Cookbook.pod
+lib/Module/Install-Philosophy.pod
+lib/Module/Install.pm
+lib/Module/Install/Admin.pm
+lib/Module/Install/Admin/Bundle.pm
+lib/Module/Install/Admin/Find.pm
+lib/Module/Install/Admin/Include.pm
+lib/Module/Install/Admin/Makefile.pm
+lib/Module/Install/Admin/Manifest.pm
+lib/Module/Install/Admin/Metadata.pm
+lib/Module/Install/Admin/ScanDeps.pm
+lib/Module/Install/Admin/WriteAll.pm
+lib/Module/Install/AutoInstall.pm
+lib/Module/Install/Base.pm
+lib/Module/Install/Build.pm
+lib/Module/Install/Bundle.pm
+lib/Module/Install/Can.pm
+lib/Module/Install/Fetch.pm
+lib/Module/Install/Include.pm
+lib/Module/Install/Inline.pm
+lib/Module/Install/Makefile.pm
+lib/Module/Install/Makefile/Name.pm
+lib/Module/Install/Makefile/Version.pm
+lib/Module/Install/MakeMaker.pm
+lib/Module/Install/Metadata.pm
+lib/Module/Install/PAR.pm
+lib/Module/Install/Run.pm
+lib/Module/Install/Scripts.pm
+lib/Module/Install/Win32.pm
+lib/Module/Install/WriteAll.pm
+Makefile.PL
+MANIFEST			This list of files
+MANIFEST.SKIP
+META.yml
+README
+SIGNATURE
+t/0-signature.t
+t/1-basic.t
+ToDo

Added: packages/libmodule-install-perl/branches/upstream/current/MANIFEST.SKIP
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/MANIFEST.SKIP	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/MANIFEST.SKIP	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,13 @@
+#defaults
+^\..*\.sw.$
+\.swp$
+^Build$
+^MANIFEST.bak$
+^Makefile$
+^Makefile.old$
+^Module-Install-
+^_build/
+^blib/
+^pm_to_blib$
+^blibdirs$
+^t/Foo

Added: packages/libmodule-install-perl/branches/upstream/current/META.yml
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/META.yml	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/META.yml	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,21 @@
+name: Module-Install
+version: 0.34
+abstract: Standalone, extensible Perl module installer
+author: Autrijus Tang (autrijus at autrijus.org)
+license: perl
+distribution_type: module
+build_requires:
+  Test::More: 0
+requires:
+  perl: 5.004
+recommends:
+  Module::ScanDeps: 0.28
+  Module::CoreList: 0
+  CPANPLUS: 0.04
+  PAR::Dist: 0.03
+  Module::Build: 0
+no_index:
+  directory:
+    - example
+    - inc
+generated_by: Module::Install version 0.34

Added: packages/libmodule-install-perl/branches/upstream/current/Makefile.PL
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/Makefile.PL	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/Makefile.PL	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,53 @@
+# $File: //depot/cpan/Module-Install/Makefile.PL $ $Author: autrijus $
+# $Revision: #37 $ $Change: 2287 $ $DateTime: 2004/07/01 04:48:23 $ vim: expandtab shiftwidth=4
+
+use lib 'lib'; # NOTE: Module::Install's Makefile.PL needs this statement
+               # to bootstrap itself.  Other module distributions using
+               # Module::Install do not need it.
+
+use inc::Module::Install;
+
+name            ('Module-Install');
+author          ('Autrijus Tang (autrijus at autrijus.org)');
+abstract_from   ('lib/Module/Install.pm');
+version_from    ('lib/Module/Install.pm');
+license         ('perl');
+requires        ('perl' => 5.004);
+no_index        (directory => 'example');
+sign            (1);
+
+build_requires  ('Test::More');
+include         ('ExtUtils::AutoInstall');
+
+features(
+    'Include packages with full dependencies' => [
+        -default            => 0,
+        'Test::Harness'     => 2.03,    # merely a dependency of M::CoreList
+        'Test::More'        => 0,       # ditto
+        recommends  ('Module::ScanDeps' => 0.28),
+        recommends  ('Module::CoreList'),
+    ],
+    'Bundle other CPAN packages' => [
+        -default            => 0,
+        recommends  ('CPANPLUS' => 0.040),
+    ],
+    'PAR-based binary distributions' => [
+        -default            => 0,
+        recommends  ('PAR::Dist' => 0.03),
+    ],
+    'Module::Build support' => [
+        -default            => 0,
+        'Archive::Tar'      => 0.23,
+        'ExtUtils::Install' => 0.3,
+        'ExtUtils::ParseXS' => 0,
+        'YAML'              => 0.35,
+        recommends  ('Module::Build'),
+    ],
+);
+
+auto_include_deps();
+auto_install_now( -config => { prerequisites_policy => 'follow' } );
+
+par_base();     # par_base('AUTRIJUS') to enable downloading
+
+&WriteAll;

Added: packages/libmodule-install-perl/branches/upstream/current/README
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/README	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/README	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,59 @@
+# $File: //depot/cpan/Module-Install/README $ $Author: autrijus $
+# $Revision: #8 $ $Change: 1847 $ $DateTime: 2003/12/31 23:14:54 $ vim: expandtab shiftwidth=4
+
+This is the README file for Module::Install, a standalone, extensible
+installer for Perl modules.  It is designed to be a drop-in replacement
+for ExtUtils::MakeMaker, and is a descendent of CPAN::MakeMaker.
+
+Please type "perldoc Module::Install" after installation to see the
+module usage information.
+
+* Installation
+
+Module::Install uses the standard perl module install process:
+
+cpansign -v             # see SIGNATURE for details
+perl Makefile.PL
+make
+make test
+make install
+
+If you have Module::Build installed, a Build.PL is also available:
+
+cpansign -v             # see SIGNATURE for details
+perl Build.PL
+perl Build
+perl Build test
+perl Build install
+
+* Notes for Windows users
+
+If you are using Microsoft Windows, you will probably need the 'nmake'
+utility before installation. It's available at:
+
+    ftp://ftp.microsoft.com/Softlib/MSLFILES/nmake15.exe
+
+If you are connected to the internet, "perl Makefile.PL" is capable
+to automatically fetch it, and install into your windows directory;
+all you have to do is to answer 'y' to this question:
+
+    Required executable 'nmake' not found. Install it? [Y/n]:
+
+However, if you are not yet online, or wish to install 'nmake' into
+another directory, then please download the file manually, save it to
+a directory in %PATH (e.g. C:\WINDOWS\COMMAND), then launch the MS-DOS
+command line shell, "cd" to that directory, and run "nmake15.exe" from
+there; that will create the 'nmake.exe' file needed by CPANPLUS.
+
+You may then resume the installation process above, but replace 'make'
+with 'nmake' in the last three lines.
+
+* Copyright
+
+Copyright 2002, 2003, 2004 by Autrijus Tang <autrijus at autrijus.org>,
+                              Brian Ingerson <ingy at cpan.org>.
+
+All rights reserved.  You can redistribute and/or modify
+this bundle under the same terms as Perl itself.
+
+See <http://www.perl.com/perl/misc/Artistic.html>.

Added: packages/libmodule-install-perl/branches/upstream/current/SIGNATURE
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/SIGNATURE	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/SIGNATURE	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,79 @@
+This file contains message digests of all files listed in MANIFEST,
+signed via the Module::Signature module, version 0.39.
+
+To verify the content in this distribution, first make sure you have
+Module::Signature installed, then type:
+
+    % cpansign -v
+
+It would check each file's integrity, as well as the signature's
+validity.  If "==> Signature verified OK! <==" is not displayed,
+the distribution may already have been compromised, and you should
+not run its Makefile.PL or Build.PL.
+
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+SHA1 dbd58f850606f5446018b6034a831b2b135f3a88 Build.PL
+SHA1 d1c503f69d1a0079ad303a4f1b36d5f455d138d1 Changes
+SHA1 19e1ba910828e3ad315b1edb6dc361a6305938d1 MANIFEST
+SHA1 d301f97ed05a88a0dde1d90ec091edd39cd6cbde MANIFEST.SKIP
+SHA1 c4a0b8a265dd4c21a933bda021cf902658860533 META.yml
+SHA1 3cc2a794d123cd0e83245f5d8ab60e941c7d97b8 Makefile.PL
+SHA1 2a90897611004f2f49a40798b2274af1d989e0f4 README
+SHA1 e9cabad66944b665d36e0a7cda0dd7bf1f75cfd9 ToDo
+SHA1 46ff42e7e02b856e15106163cd77b1a55fc08fb9 inc/ExtUtils/AutoInstall.pm
+SHA1 6ae8524a1be447e37544ee4d24b3719b0ff89153 inc/Module/Install.pm
+SHA1 288ad5d1124f02a64583d54e2e287532b81907b9 inc/Module/Install/AutoInstall.pm
+SHA1 ed9d9f60d2c925a7c715e5261cd80a5978c9fc9c inc/Module/Install/Base.pm
+SHA1 239178223883059ec355bec886115848ab699332 inc/Module/Install/Build.pm
+SHA1 5619adb5368242214045d40784fcbee5d9dba267 inc/Module/Install/Can.pm
+SHA1 565339bcb9f2751938372aa684a20e4bb7ec9b3f inc/Module/Install/Fetch.pm
+SHA1 95763053e3e59748f087d1f4c0cb7e7ae2950e3f inc/Module/Install/Include.pm
+SHA1 458d2c6c96e071bf66713e8ceecd68c9aa75c386 inc/Module/Install/Makefile.pm
+SHA1 096c46b226b1f188f4bafcfd8e0f6f3ac5f43e47 inc/Module/Install/Metadata.pm
+SHA1 c6db9fca2a341ac1e1e749bc76e68a6c064797a1 inc/Module/Install/PAR.pm
+SHA1 8b8577400e396db6714b85e11ce9a5939671c826 inc/Module/Install/Win32.pm
+SHA1 dcdadae7414315536ad3bdbe67d4a2f3ae93d284 inc/Module/Install/WriteAll.pm
+SHA1 6458cec3e5ecc7a7ab12d138e63aea05486c48ad inc/Test/Builder.pm
+SHA1 d609df5fa76b959d08e5d9d0a15fe59c5c2f95e0 inc/Test/More.pm
+SHA1 61ae9682447a3300bf61e36f80df0011f53e1f5a lib/Module/Install-Cookbook.pod
+SHA1 559a427e006e8b62c9627b8c8e39669066fb9b41 lib/Module/Install-Philosophy.pod
+SHA1 68e465225a12956aa4a8e68ffa71fcbf17809404 lib/Module/Install.pm
+SHA1 88cbe64d234b7c43b578b11bc4ce39e9228f576a lib/Module/Install/Admin.pm
+SHA1 bd41fae896f850b667abc6243091241d9bb323b8 lib/Module/Install/Admin/Bundle.pm
+SHA1 8307db51af9ab267acca6f7c15d21a15133b2fc6 lib/Module/Install/Admin/Find.pm
+SHA1 85a11536669a36a90e204a3a1d3ef5830b9f9e74 lib/Module/Install/Admin/Include.pm
+SHA1 c46efc91a83d9f290bbfd063847408c86448ee92 lib/Module/Install/Admin/Makefile.pm
+SHA1 4390ae9438a5fc3c97456c12cd4d33c16ee11688 lib/Module/Install/Admin/Manifest.pm
+SHA1 5f01b59fc61a289daeaf68c0aa4a54ff995d045c lib/Module/Install/Admin/Metadata.pm
+SHA1 72e1d579516eff39a89994be03fc26f426accab4 lib/Module/Install/Admin/ScanDeps.pm
+SHA1 01209778dfcddd2ca1f7f6cd6459a22c87e2cc66 lib/Module/Install/Admin/WriteAll.pm
+SHA1 7402b8f2d06fc726390e55a6980f0f909d42e875 lib/Module/Install/AutoInstall.pm
+SHA1 1538dfba8d0574064f7bf10454ff802c89fe7640 lib/Module/Install/Base.pm
+SHA1 02f93fce60022eff2b5d0777989176f908e92e6d lib/Module/Install/Build.pm
+SHA1 6ba868634dae254f29ae8328e86d7d73a9e7fb1f lib/Module/Install/Bundle.pm
+SHA1 de73c9d8ad8ffab9eedb04a01262192a6a51d42a lib/Module/Install/Can.pm
+SHA1 0c216d70f5d38994402574868b26225b7d19e12d lib/Module/Install/Fetch.pm
+SHA1 08c5eeb29a23dc06f186f07ce2c7ac2ae0c80f74 lib/Module/Install/Include.pm
+SHA1 d8cef4684f57293de33952fd59e5e5ed666d9070 lib/Module/Install/Inline.pm
+SHA1 b6520780aeef6e1860f83bc9ae481f68e1cbc73c lib/Module/Install/MakeMaker.pm
+SHA1 d7db219717b6653a922bd8f76cb3e2503ecd77e7 lib/Module/Install/Makefile.pm
+SHA1 44b91a5379ada5e6d6164838e313e9e60c73b244 lib/Module/Install/Makefile/Name.pm
+SHA1 6f263c3e18198d147a16e3ca3758a97231b4076e lib/Module/Install/Makefile/Version.pm
+SHA1 090faf7f611f4a0d5eac2a9c7cfc1926968d297e lib/Module/Install/Metadata.pm
+SHA1 0c4f33cc5e6988937a35a9a5dcc69d4bf329b7de lib/Module/Install/PAR.pm
+SHA1 d5e2af08f6967716d71971126becb10acb17ee4e lib/Module/Install/Run.pm
+SHA1 0082a8daf9dc2a31a1c1f8a719f7fef29df8c939 lib/Module/Install/Scripts.pm
+SHA1 ba8ebea0ff21f47090a9c46946089ea9647c05a9 lib/Module/Install/Win32.pm
+SHA1 87e1d4fa50f1f1ccab659e67a9fdc58173cd6c9c lib/Module/Install/WriteAll.pm
+SHA1 af70ee67dce5a1c6e576b43339c8a07cf17cf212 lib/inc/Module/Install.pm
+SHA1 284ca43fce9b1643af73a1460aecb4f98639c507 t/0-signature.t
+SHA1 70f5ec238e815a5044c74b7357d411c71b9c8939 t/1-basic.t
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.2.3 (FreeBSD)
+
+iD8DBQFA4/pStLPdNzw1AaARAi73AJ94RW/otD3h2Al5XE3+vFJd4j5fLwCeMq+i
+nVpUj59l274ijrKOea3hCS4=
+=CtY+
+-----END PGP SIGNATURE-----

Added: packages/libmodule-install-perl/branches/upstream/current/ToDo
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/ToDo	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/ToDo	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,31 @@
+- Go over POD docs in detail.
+- Test recursive Makefile directories
+
+- Module::Build Support:
+    - Add actions for:
+        - reset
+    - Make sure include-ing of Module::Build works. # done
+
+- Test Suite:
+    - We need tests for everything
+    - Optimally I'd like these to use Module::Test
+      (But That doesn't exist yet. :)
+    
+- Include:
+    - Add support for include('Foo::Bar::*')	    # done
+    - Make sure it works for Test::More		    # done
+
+- Bundling:
+    - Load distributions into inc/BUNDLE	    # not for 0.20
+    - provide support to install/upgrade them on user machine
+
+- Inline::C Support				    # done
+    - Do we need to package build support?
+
+- Distribution support
+    - make upload (add cpan-upload to our recommends()?)
+    - make distcheck:
+        - verify metadata is current
+
+
+Note: EU::MM 6.06_03+ supports META.yml natively.  Maybe probe for that?

Added: packages/libmodule-install-perl/branches/upstream/current/inc/ExtUtils/AutoInstall.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/ExtUtils/AutoInstall.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/ExtUtils/AutoInstall.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,645 @@
+#line 1 "inc/ExtUtils/AutoInstall.pm - /usr/local/lib/perl5/site_perl/5.8.4/ExtUtils/AutoInstall.pm"
+# $File: //member/autrijus/ExtUtils-AutoInstall/lib/ExtUtils/AutoInstall.pm $ 
+# $Revision: #14 $ $Change: 10538 $ $DateTime: 2004/04/29 17:55:36 $ vim: expandtab shiftwidth=4
+
+package ExtUtils::AutoInstall;
+$ExtUtils::AutoInstall::VERSION = '0.59';
+
+use strict;
+use Cwd ();
+use ExtUtils::MakeMaker ();
+
+#line 308
+
+# special map on pre-defined feature sets
+my %FeatureMap = (
+    ''      => 'Core Features', # XXX: deprecated
+    '-core' => 'Core Features',
+);
+
+# various lexical flags
+my (@Missing, @Existing, %DisabledTests, $UnderCPAN, $HasCPANPLUS);
+my ($Config, $CheckOnly, $SkipInstall, $AcceptDefault, $TestOnly);
+my ($PostambleActions, $PostambleUsed);
+
+_accept_default(!-t STDIN); # see if it's a non-interactive session
+_init();
+
+sub _accept_default {
+    $AcceptDefault = shift;
+}
+
+sub missing_modules {
+    return @Missing;
+}
+
+sub do_install {
+    __PACKAGE__->install(
+        [ UNIVERSAL::isa($Config, 'HASH') ? %{$Config} : @{$Config}],
+        @Missing,
+    );
+}
+
+# initialize various flags, and/or perform install
+sub _init {
+    foreach my $arg (@ARGV, split(/[\s\t]+/, $ENV{PERL_EXTUTILS_AUTOINSTALL} || '')) {
+        if ($arg =~ /^--config=(.*)$/) {
+            $Config = [ split(',', $1) ];
+        }
+        elsif ($arg =~ /^--installdeps=(.*)$/) {
+            __PACKAGE__->install($Config, @Missing = split(/,/, $1));
+            exit 0;
+        }
+        elsif ($arg =~ /^--default(?:deps)?$/) {
+            $AcceptDefault = 1;
+        }
+        elsif ($arg =~ /^--check(?:deps)?$/) {
+            $CheckOnly = 1;
+        }
+        elsif ($arg =~ /^--skip(?:deps)?$/) {
+            $SkipInstall = 1;
+        }
+        elsif ($arg =~ /^--test(?:only)?$/) {
+            $TestOnly = 1;
+        }
+    }
+}
+
+# overrides MakeMaker's prompt() to automatically accept the default choice
+sub _prompt {
+    goto &ExtUtils::MakeMaker::prompt unless $AcceptDefault;
+
+    my ($prompt, $default) = @_;
+    my $y = ($default =~ /^[Yy]/);
+
+    print $prompt, ' [', ($y ? 'Y' : 'y'), '/', ($y ? 'n' : 'N'), '] ';
+    print "$default\n";
+    return $default;
+}
+
+# the workhorse
+sub import {
+    my $class = shift;
+    my @args  = @_ or return;
+    my $core_all;
+
+    print "*** $class version ".$class->VERSION."\n";
+    print "*** Checking for dependencies...\n";
+
+    my $cwd = Cwd::cwd();
+
+    $Config  = [];
+
+    my $maxlen = length((sort { length($b) <=> length($a) }
+        grep { /^[^\-]/ }
+        map { ref($_) ? keys %{ref($_) eq 'HASH' ? $_ : +{@{$_}}} : '' }
+        map { +{@args}->{$_} }
+        grep { /^[^\-]/ or /^-core$/i } keys %{+{@args}})[0]);
+
+    while (my ($feature, $modules) = splice(@args, 0, 2)) {
+        my (@required, @tests, @skiptests);
+        my $default  = 1;
+        my $conflict = 0;
+
+        if ($feature =~ m/^-(\w+)$/) {
+            my $option = lc($1);
+
+            # check for a newer version of myself
+            _update_to($modules, @_) and return if $option eq 'version';
+
+            # sets CPAN configuration options
+            $Config = $modules                  if $option eq 'config';
+
+            # promote every features to core status
+            $core_all = ($modules =~ /^all$/i) and next
+                if $option eq 'core';
+
+            next unless $option eq 'core';
+        }
+
+        print "[".($FeatureMap{lc($feature)} || $feature)."]\n";
+
+        $modules = [ %{$modules} ] if UNIVERSAL::isa($modules, 'HASH');
+
+        unshift @$modules, -default => &{shift(@$modules)}
+            if (ref($modules->[0]) eq 'CODE'); # XXX: bugward combatability
+
+        while (my ($mod, $arg) = splice(@$modules, 0, 2)) {
+            if ($mod =~ m/^-(\w+)$/) {
+                my $option = lc($1);
+
+                $default   = $arg    if ($option eq 'default');
+                $conflict  = $arg    if ($option eq 'conflict');
+                @tests     = @{$arg} if ($option eq 'tests');
+                @skiptests = @{$arg} if ($option eq 'skiptests');
+
+                next;
+            }
+
+            printf("- %-${maxlen}s ...", $mod);
+
+            # XXX: check for conflicts and uninstalls(!) them.
+            if (defined(my $cur = _version_check(_load($mod), $arg ||= 0))) {
+                print "loaded. ($cur".($arg ? " >= $arg" : '').")\n";
+                push @Existing, $mod => $arg;
+                $DisabledTests{$_} = 1 for map { glob($_) } @skiptests;
+            }
+            else {
+                print "missing." . ($arg ? " (would need $arg)" : '') . "\n";
+                push @required, $mod => $arg;
+            }
+        }
+
+        next unless @required;
+
+        my $mandatory = ($feature eq '-core' or $core_all);
+
+        if (!$SkipInstall and ($CheckOnly or _prompt(
+            qq{==> Auto-install the }. (@required / 2).
+            ($mandatory ? ' mandatory' : ' optional').
+            qq{ module(s) from CPAN?}, $default ? 'y' : 'n',
+        ) =~ /^[Yy]/)) {
+            push (@Missing, @required);
+            $DisabledTests{$_} = 1 for map { glob($_) } @skiptests;
+        }
+
+        elsif (!$SkipInstall and $default and $mandatory and _prompt(
+            qq{==> The module(s) are mandatory! Really skip?}, 'n',
+        ) =~ /^[Nn]/) {
+            push (@Missing, @required);
+            $DisabledTests{$_} = 1 for map { glob($_) } @skiptests;
+        }
+
+        else {
+            $DisabledTests{$_} = 1 for map { glob($_) } @tests;
+        }
+    }
+
+    _check_lock(); # check for $UnderCPAN
+
+    if (@Missing and not ($CheckOnly or $UnderCPAN)) {
+        require Config;
+        print "*** Dependencies will be installed the next time you type '$Config::Config{make}'.\n";
+        # make an educated guess of whether we'll need root permission.
+        print "    (You may need to do that as the 'root' user.)\n" if eval '$>';
+    }
+    print "*** $class configuration finished.\n";
+
+    chdir $cwd;
+
+    # import to main::
+    no strict 'refs';
+    *{'main::WriteMakefile'} = \&Write if caller(0) eq 'main';
+}
+
+# CPAN.pm is non-reentrant, so check if we're under it and have no CPANPLUS
+sub _check_lock {
+    return unless @Missing;
+    return if _has_cpanplus();
+
+    require CPAN; CPAN::Config->load;
+    my $lock = MM->catfile($CPAN::Config->{cpan_home}, ".lock");
+
+    if (-f $lock and open(LOCK, $lock)
+        and ($^O eq 'MSWin32' ? _under_cpan() : <LOCK> == getppid())
+        and ($CPAN::Config->{prerequisites_policy} || '') ne 'ignore'
+    ) {
+        print << '.';
+
+*** Since we're running under CPAN, I'll just let it take care
+    of the dependency's installation later.
+.
+        $UnderCPAN = 1;
+    }
+
+    close LOCK;
+}
+
+sub install {
+    my $class  = shift;
+
+    my $i; # used below to strip leading '-' from config keys
+    my @config = (map { s/^-// if ++$i; $_ } @{+shift});
+
+    my (@modules, @installed);
+    while (my ($pkg, $ver) = splice(@_, 0, 2)) {
+        # grep out those already installed
+        if (defined(_version_check(_load($pkg), $ver))) {
+            push @installed, $pkg;
+        }
+        else {
+            push @modules, $pkg, $ver;
+        }
+    }
+
+    return @installed unless @modules; # nothing to do
+
+    print "*** Installing dependencies...\n";
+
+    return unless _connected_to('cpan.org');
+
+    my %args = @config;
+    my %failed;
+    local *FAILED;
+    if ($args{do_once} and open(FAILED, '.#autoinstall.failed')) {
+        while (<FAILED>) { chomp; $failed{$_}++ }
+        close FAILED;
+
+        my @newmod;
+        while (my ($k, $v) = splice(@modules, 0, 2)) {
+            push @newmod, ($k => $v) unless $failed{$k};
+        }
+        @modules = @newmod;
+    }
+
+    if (_has_cpanplus()) {
+        _install_cpanplus(\@modules, \@config);
+    }
+    else {
+        _install_cpan(\@modules, \@config);
+    }
+
+    print "*** $class installation finished.\n";
+
+    # see if we have successfully installed them
+    while (my ($pkg, $ver) = splice(@modules, 0, 2)) {
+        if (defined(_version_check(_load($pkg), $ver))) {
+            push @installed, $pkg;
+        }
+        elsif ($args{do_once} and open(FAILED, '>> .#autoinstall.failed')) {
+            print FAILED "$pkg\n";
+        }
+    }
+
+    close FAILED if $args{do_once};
+
+    return @installed;
+}
+
+sub _install_cpanplus {
+    my @modules = @{+shift};
+    my @config  = @{+shift};
+    my $installed = 0;
+
+    require CPANPLUS::Backend;
+    my $cp   = CPANPLUS::Backend->new;
+    my $conf = $cp->configure_object;
+
+    return unless _can_write($conf->_get_build('base'));
+
+    # if we're root, set UNINST=1 to avoid trouble unless user asked for it.
+    my $makeflags = $conf->get_conf('makeflags') || '';
+    if (UNIVERSAL::isa($makeflags, 'HASH')) {
+        # 0.03+ uses a hashref here
+        $makeflags->{UNINST} = 1 unless exists $makeflags->{UNINST};
+    }
+    else {
+        # 0.02 and below uses a scalar
+        $makeflags = join(' ', split(' ', $makeflags), 'UNINST=1')
+            if ($makeflags !~ /\bUNINST\b/ and eval qq{ $> eq '0' });
+    }
+    $conf->set_conf(makeflags => $makeflags);
+    $conf->set_conf(prereqs => 1);
+
+    while (my ($key, $val) = splice(@config, 0, 2)) {
+        eval { $conf->set_conf($key, $val) };
+    }
+
+    my $modtree = $cp->module_tree;
+    while (my ($pkg, $ver) = splice(@modules, 0, 2)) {
+        print "*** Installing $pkg...\n";
+
+        MY::preinstall($pkg, $ver) or next if defined &MY::preinstall;
+
+        my $success;
+        my $obj = $modtree->{$pkg};
+
+        if ($obj and defined(_version_check($obj->{version}, $ver))) {
+            my $pathname = $pkg; $pathname =~ s/::/\\W/;
+
+            foreach my $inc (grep { m/$pathname.pm/i } keys(%INC)) {
+                delete $INC{$inc};
+            }
+
+            my $rv = $cp->install( modules => [ $obj->{module} ]);
+
+            if ($rv and ($rv->{$obj->{module}} or $rv->{ok})) {
+                print "*** $pkg successfully installed.\n";
+                $success = 1;
+            }
+            else {
+                print "*** $pkg installation cancelled.\n";
+                $success = 0;
+            }
+
+            $installed += $success;
+        }
+        else {
+            print << ".";
+*** Could not find a version $ver or above for $pkg; skipping.
+.
+        }
+
+        MY::postinstall($pkg, $ver, $success) if defined &MY::postinstall;
+    }
+
+    return $installed;
+}
+
+sub _install_cpan {
+    my @modules = @{+shift};
+    my @config  = @{+shift};
+    my $installed = 0;
+    my %args;
+
+    require CPAN; CPAN::Config->load;
+
+    return unless _can_write(MM->catfile($CPAN::Config->{cpan_home}, 'sources'));
+
+    # if we're root, set UNINST=1 to avoid trouble unless user asked for it.
+    my $makeflags = $CPAN::Config->{make_install_arg} || '';
+    $CPAN::Config->{make_install_arg} = join(' ', split(' ', $makeflags), 'UNINST=1')
+        if ($makeflags !~ /\bUNINST\b/ and eval qq{ $> eq '0' });
+
+    # don't show start-up info
+    $CPAN::Config->{inhibit_startup_message} = 1;
+
+    # set additional options
+    while (my ($opt, $arg) = splice(@config, 0, 2)) {
+        ($args{$opt} = $arg, next)
+            if $opt =~ /^force$/; # pseudo-option
+        $CPAN::Config->{$opt} = $arg;
+    }
+
+    local $CPAN::Config->{prerequisites_policy} = 'follow';
+
+    while (my ($pkg, $ver) = splice(@modules, 0, 2)) {
+        MY::preinstall($pkg, $ver) or next if defined &MY::preinstall;
+
+        print "*** Installing $pkg...\n";
+
+        my $obj = CPAN::Shell->expand(Module => $pkg);
+        my $success = 0;
+
+        if ($obj and defined(_version_check($obj->cpan_version, $ver))) {
+            my $pathname = $pkg; $pathname =~ s/::/\\W/;
+
+            foreach my $inc (grep { m/$pathname.pm/i } keys(%INC)) {
+                delete $INC{$inc};
+            }
+
+            $obj->force('install') if $args{force};
+
+            my $rv = $obj->install || eval { 
+                $CPAN::META->instance(
+                    'CPAN::Distribution',
+                    $obj->cpan_file,
+                )->{install}
+            };
+
+            if ($rv eq 'YES') {
+                print "*** $pkg successfully installed.\n";
+                $success = 1;
+            }
+            else {
+                print "*** $pkg installation failed.\n";
+                $success = 0;
+            }
+
+            $installed += $success;
+        }
+        else {
+            print << ".";
+*** Could not find a version $ver or above for $pkg; skipping.
+.
+        }
+
+        MY::postinstall($pkg, $ver, $success) if defined &MY::postinstall;
+    }
+
+    return $installed;
+}
+
+sub _has_cpanplus {
+    return (
+        $HasCPANPLUS = (
+            $INC{'CPANPLUS/Config.pm'} or
+            _load('CPANPLUS::Shell::Default')
+        )
+    );
+}
+
+# make guesses on whether we're under the CPAN installation directory
+sub _under_cpan {
+    require Cwd;
+    require File::Spec;
+
+    my $cwd  = File::Spec->canonpath(Cwd::cwd());
+    my $cpan = File::Spec->canonpath($CPAN::Config->{cpan_home});
+
+    return (index($cwd, $cpan) > -1);
+}
+
+sub _update_to {
+    my $class = __PACKAGE__;
+    my $ver   = shift;
+
+    return if defined(_version_check(_load($class), $ver)); # no need to upgrade
+
+    if (_prompt(
+        "==> A newer version of $class ($ver) is required. Install?", 'y'
+    ) =~ /^[Nn]/) {
+        die "*** Please install $class $ver manually.\n";
+    }
+
+    print << ".";
+*** Trying to fetch it from CPAN...
+.
+
+    # install ourselves
+    _load($class) and return $class->import(@_)
+        if $class->install([], $class, $ver);
+
+    print << '.'; exit 1;
+
+*** Cannot bootstrap myself. :-( Installation terminated.
+.
+}
+
+# check if we're connected to some host, using inet_aton
+sub _connected_to {
+    my $site = shift;
+
+    return (
+        ( _load('Socket') and Socket::inet_aton($site) ) or _prompt(qq(
+*** Your host cannot resolve the domain name '$site', which
+    probably means the Internet connections are unavailable.
+==> Should we try to install the required module(s) anyway?), 'n'
+        ) =~ /^[Yy]/
+    );
+}
+
+# check if a directory is writable; may create it on demand
+sub _can_write {
+    my $path = shift;
+    mkdir ($path, 0755) unless -e $path;
+
+    require Config;
+    return 1 if -w $path and -w $Config::Config{sitelib};
+
+    print << ".";
+*** You are not allowed to write to the directory '$path';
+    the installation may fail due to insufficient permissions.
+.
+
+    if (eval '$>' and lc(`sudo -V`) =~ /version/ and _prompt(qq(
+==> Should we try to re-execute the autoinstall process with 'sudo'?), 'y'
+    ) =~ /^[Yy]/) {
+        # try to bootstrap ourselves from sudo
+        print << ".";
+*** Trying to re-execute the autoinstall process with 'sudo'...
+.
+        my $missing = join(',', @Missing);
+        my $config  = join(',',
+            UNIVERSAL::isa($Config, 'HASH') ? %{$Config} : @{$Config}
+        ) if $Config;
+
+        return unless system('sudo', $^X, $0, "--config=$config", "--installdeps=$missing");
+
+        print << ".";
+*** The 'sudo' command exited with error!  Resuming...
+.
+    }
+
+    return _prompt(qq(
+==> Should we try to install the required module(s) anyway?), 'n'
+    ) =~ /^[Yy]/
+}
+
+# load a module and return the version it reports
+sub _load {
+    my $mod = pop; # class/instance doesn't matter
+    my $file = $mod;
+
+    $file =~ s|::|/|g;
+    $file .= '.pm';
+
+    local $@;
+    return eval { require $file; $mod->VERSION } || ($@ ? undef : 0);
+}
+
+# compare two versions, either use Sort::Versions or plain comparison
+sub _version_check {
+    my ($cur, $min) = @_;
+    return unless defined $cur;
+
+    $cur =~ s/\s+$//;
+
+    # check for version numbers that are not in decimal format
+    if (ref($cur) or ref($min) or $cur =~ /v|\..*\./ or $min =~ /v|\..*\./) {
+        if ($version::VERSION or defined(_load('version'))) {
+            # use version.pm if it is installed.
+            return ((version->new($cur) >= version->new($min)) ? $cur : undef);
+        }
+        elsif ($Sort::Versions::VERSION or defined(_load('Sort::Versions'))) {
+            # use Sort::Versions as the sorting algorithm for a.b.c versions
+            return ((Sort::Versions::versioncmp($cur, $min) != -1) ? $cur : undef);
+        }
+
+        warn "Cannot reliably compare non-decimal formatted versions.\n".
+             "Please install version.pm or Sort::Versions.\n";
+    }
+
+    # plain comparison
+    local $^W = 0; # shuts off 'not numeric' bugs
+    return ($cur >= $min ? $cur : undef);
+}
+
+# nothing; this usage is deprecated.
+sub main::PREREQ_PM { return {}; }
+
+sub _make_args {
+    my %args = @_;
+
+    $args{PREREQ_PM} = { %{$args{PREREQ_PM} || {} }, @Existing, @Missing }
+        if $UnderCPAN or $TestOnly;
+
+    if ($args{EXE_FILES}) {
+        require ExtUtils::Manifest;
+        my $manifest = ExtUtils::Manifest::maniread('MANIFEST');
+
+        $args{EXE_FILES} = [
+            grep { exists $manifest->{$_} } @{$args{EXE_FILES}}
+        ];
+    }
+
+    $args{test}{TESTS} ||= 't/*.t';
+    $args{test}{TESTS} = join(' ', grep {
+        !exists($DisabledTests{$_})
+    } map { glob($_) } split(/\s+/, $args{test}{TESTS}));
+
+    my $missing = join(',', @Missing);
+    my $config  = join(',',
+        UNIVERSAL::isa($Config, 'HASH') ? %{$Config} : @{$Config}
+    ) if $Config;
+
+    $PostambleActions = (
+        $missing ? "\$(PERL) $0 --config=$config --installdeps=$missing"
+                 : "\@\$(NOOP)"
+    );
+
+    return %args;
+}
+
+# a wrapper to ExtUtils::MakeMaker::WriteMakefile
+sub Write {
+    require Carp;
+    Carp::croak "WriteMakefile: Need even number of args" if @_ % 2;
+
+    if ($CheckOnly) {
+        print << ".";
+*** Makefile not written in check-only mode.
+.
+        return;
+    }
+
+    my %args = _make_args(@_);
+
+    no strict 'refs';
+
+    $PostambleUsed = 0;
+    local *MY::postamble = \&postamble unless defined &MY::postamble;
+    ExtUtils::MakeMaker::WriteMakefile(%args);
+
+    print << "." unless $PostambleUsed;
+*** WARNING: Makefile written with customized MY::postamble() without
+    including contents from ExtUtils::AutoInstall::postamble() --
+    auto installation features disabled.  Please contact the author.
+.
+
+    return 1;
+}
+
+sub postamble {
+    $PostambleUsed = 1;
+
+    return << ".";
+
+config :: installdeps
+\t\@\$(NOOP)
+
+checkdeps ::
+\t\$(PERL) $0 --checkdeps
+
+installdeps ::
+\t$PostambleActions
+
+.
+
+}
+
+1;
+
+__END__
+
+#line 969

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/AutoInstall.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/AutoInstall.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/AutoInstall.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,65 @@
+#line 1 "inc/Module/Install/AutoInstall.pm - lib/Module/Install/AutoInstall.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/AutoInstall.pm $ $Author: autrijus $
+# $Revision: #13 $ $Change: 1846 $ $DateTime: 2003/12/31 22:57:12 $ vim: expandtab shiftwidth=4
+
+package Module::Install::AutoInstall;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub AutoInstall { $_[0] }
+
+sub run {
+    my $self = shift;
+    $self->auto_install_now(@_);
+}
+
+sub write {
+    my $self = shift;
+    $self->auto_install(@_);
+}
+
+sub auto_install {
+    my $self = shift;
+    return if $self->{done}++;
+
+# ExtUtils::AutoInstall Bootstrap Code, version 7.
+AUTO:{my$p='ExtUtils::AutoInstall';my$v=0.49;$p->VERSION||0>=$v
+or+eval"use $p $v;1"or+do{my$e=$ENV{PERL_EXTUTILS_AUTOINSTALL};
+(!defined($e)||$e!~m/--(?:default|skip|testonly)/and-t STDIN or
+eval"use ExtUtils::MakeMaker;WriteMakefile(PREREQ_PM=>{'$p',$v}
+);1"and exit)and print"==> $p $v required. Install it from CP".
+"AN? [Y/n] "and<STDIN>!~/^n/i and print"*** Installing $p\n"and
+do{if (eval '$>' and lc(`sudo -V`) =~ /version/){system('sudo',
+$^X,"-MCPANPLUS","-e","CPANPLUS::install $p");eval"use $p $v;1"
+||system('sudo', $^X, "-MCPAN", "-e", "CPAN::install $p")}eval{
+require CPANPLUS;CPANPLUS::install$p};eval"use $p $v;1"or eval{
+require CPAN;CPAN::install$p};eval"use $p $v;1"||die"*** Please
+manually install $p $v from cpan.org first...\n"}}}
+
+    # Flatten array of arrays into a single array
+    my @core = map @$_, map @$_, grep ref,
+               $self->build_requires, $self->requires;
+
+    while ( @core and @_ > 1 and $_[0] =~ /^-\w+$/ ) {
+        push @core, splice(@_, 0, 2);
+    }
+
+    ExtUtils::AutoInstall->import(
+        (@core ? (-core => \@core) : ()), @_, $self->features
+    );
+
+    $self->makemaker_args( ExtUtils::AutoInstall::_make_args() );
+
+    my $class = ref($self);
+    $self->postamble(
+        "# --- $class section:\n" .
+        ExtUtils::AutoInstall::postamble()
+    );
+}
+
+sub auto_install_now {
+    my $self = shift;
+    $self->auto_install;
+    ExtUtils::AutoInstall::do_install();
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Base.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Base.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Base.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,57 @@
+#line 1 "inc/Module/Install/Base.pm - lib/Module/Install/Base.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Base.pm $ $Author: autrijus $
+# $Revision: #10 $ $Change: 1847 $ $DateTime: 2003/12/31 23:14:54 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Base;
+
+#line 31
+
+sub new {
+    my ($class, %args) = @_;
+
+    foreach my $method (qw(call load)) {
+        *{"$class\::$method"} = sub {
+            +shift->_top->$method(@_);
+        } unless defined &{"$class\::$method"};
+    }
+
+    bless(\%args, $class);
+}
+
+#line 49
+
+sub AUTOLOAD {
+    my $self = shift;
+    goto &{$self->_top->autoload};
+}
+
+#line 60
+
+sub _top { $_[0]->{_top} }
+
+#line 71
+
+sub admin {
+    my $self = shift;
+    $self->_top->{admin} or Module::Install::Base::FakeAdmin->new;
+}
+
+sub is_admin {
+    my $self = shift;
+    $self->admin->VERSION;
+}
+
+sub DESTROY {}
+
+package Module::Install::Base::FakeAdmin;
+
+my $Fake;
+sub new { $Fake ||= bless(\@_, $_[0]) }
+sub AUTOLOAD {}
+sub DESTROY {}
+
+1;
+
+__END__
+
+#line 115

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Build.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Build.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Build.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,66 @@
+#line 1 "inc/Module/Install/Build.pm - lib/Module/Install/Build.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Build.pm $ $Author: ingy $
+# $Revision: #23 $ $Change: 1255 $ $DateTime: 2003/03/05 13:23:32 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Build;
+$VERSION = '0.01';
+use strict;
+use vars qw(@ISA);
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub Build { $_[0] }
+
+sub write {
+    my $self = shift;
+    die "Build->write() takes no arguments\n" if @_;
+
+    my %args;
+    my $build;
+
+    $args{dist_name} = $self->name || $self->determine_NAME($self->{args});
+    $args{license} = $self->license;
+    $args{dist_version} = $self->version || $self->determine_VERSION($self->{args});
+    $args{dist_abstract} = $self->abstract;
+    $args{dist_author} = $self->author;
+    $args{sign} = $self->sign;
+    $args{no_index} = $self->no_index;
+
+    foreach my $key (qw(build_requires requires recommends conflicts)) {
+        my $val = eval "\$self->$key" or next;
+        $args{$key} = { map @$_, @$val };
+    }
+
+    %args = map {($_, $args{$_})} grep {defined($args{$_})} keys %args;
+
+    require Module::Build;
+    $build = Module::Build->new(%args);
+    $build->add_to_cleanup(split /\s+/, $self->clean_files);
+    $build->create_build_script;
+}
+
+sub ACTION_reset {
+    my ($self) = @_;
+    die "XXX - Can't get this working yet";
+    require File::Path;
+    warn "Removing inc\n";
+    rmpath('inc');
+}
+
+sub ACTION_dist {
+    my ($self) = @_;
+    die "XXX - Can't get this working yet";
+}
+
+# <ingy> DrMath: is there an OO way to add actions to Module::Build??
+# <DrMath> ingy: yeah
+# <DrMath> ingy: package MyBuilder; use w(Module::Build; @ISA = qw(w(Module::Build); sub ACTION_ingy
+#           {...}
+# <DrMath> ingy: then my $build = new MyBuilder( ...parameters... );
+#           $build->write_build_script;
+
+
+1;
+
+__END__
+
+#line 178

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Can.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Can.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Can.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,41 @@
+#line 1 "inc/Module/Install/Can.pm - lib/Module/Install/Can.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Can.pm $ $Author: autrijus $
+# $Revision: #6 $ $Change: 1840 $ $DateTime: 2003/12/28 19:42:02 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Can;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+$VERSION = '0.01';
+
+use strict;
+use Config ();
+use File::Spec ();
+use ExtUtils::MakeMaker ();
+
+# check if we can run some command
+sub can_run {
+    my ($self, $cmd) = @_;
+
+    my $_cmd = $cmd;
+    return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
+
+    for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
+        my $abs = File::Spec->catfile($dir, $_[1]);
+        return $abs if (-x $abs or $abs = MM->maybe_command($abs));
+    }
+
+    return;
+}
+
+sub can_cc {
+    my $self = shift;
+    my @chunks = split(/ /, $Config::Config{cc}) or return;
+
+    # $Config{cc} may contain args; try to find out the program part
+    while (@chunks) {
+        return $self->can_run("@chunks") || (pop(@chunks), next);
+    }
+
+    return;
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Fetch.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Fetch.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Fetch.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,89 @@
+#line 1 "inc/Module/Install/Fetch.pm - lib/Module/Install/Fetch.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Fetch.pm $ $Author: autrijus $
+# $Revision: #8 $ $Change: 1374 $ $DateTime: 2003/03/18 11:50:15 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Fetch;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+sub get_file {
+    my ($self, %args) = @_;
+    my ($scheme, $host, $path, $file) = 
+        $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
+
+    if ($scheme eq 'http' and !eval { require LWP::Simple; 1 }) {
+        $args{url} = $args{ftp_url}
+            or (warn("LWP support unavailable!\n"), return);
+        ($scheme, $host, $path, $file) = 
+            $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
+    }
+
+    $|++;
+    print "Fetching '$file' from $host... ";
+
+    unless (eval { require Socket; Socket::inet_aton($host) }) {
+        warn "'$host' resolve failed!\n";
+        return;
+    }
+
+    return unless $scheme eq 'ftp' or $scheme eq 'http';
+
+    require Cwd;
+    my $dir = Cwd::getcwd();
+    chdir $args{local_dir} or return if exists $args{local_dir};
+
+    if (eval { require LWP::Simple; 1 }) {
+        LWP::Simple::mirror($args{url}, $file);
+    }
+    elsif (eval { require Net::FTP; 1 }) { eval {
+        # use Net::FTP to get past firewall
+        my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
+        $ftp->login("anonymous", 'anonymous at example.com');
+        $ftp->cwd($path);
+        $ftp->binary;
+        $ftp->get($file) or (warn("$!\n"), return);
+        $ftp->quit;
+    } }
+    elsif (my $ftp = $self->can_run('ftp')) { eval {
+        # no Net::FTP, fallback to ftp.exe
+        require FileHandle;
+        my $fh = FileHandle->new;
+
+        local $SIG{CHLD} = 'IGNORE';
+        unless ($fh->open("|$ftp -n")) {
+            warn "Couldn't open ftp: $!\n";
+            chdir $dir; return;
+        }
+
+        my @dialog = split(/\n/, << ".");
+open $host
+user anonymous anonymous\@example.com
+cd $path
+binary
+get $file $file
+quit
+.
+        foreach (@dialog) { $fh->print("$_\n") }
+        $fh->close;
+    } }
+    else {
+        warn "No working 'ftp' program available!\n";
+        chdir $dir; return;
+    }
+
+    unless (-f $file) {
+        warn "Fetching failed: $@\n";
+        chdir $dir; return;
+    }
+
+    return if exists $args{size} and -s $file != $args{size};
+    system($args{run}) if exists $args{run};
+    unlink($file) if $args{remove};
+
+    print(((!exists $args{check_for} or -e $args{check_for})
+        ? "done!" : "failed! ($!)"), "\n");
+    chdir $dir; return !$?;
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Include.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Include.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Include.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,13 @@
+#line 1 "inc/Module/Install/Include.pm - lib/Module/Install/Include.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Include.pm $ $Author: autrijus $
+# $Revision: #9 $ $Change: 2288 $ $DateTime: 2004/07/01 04:49:12 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Include;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub include { +shift->admin->include(@_) };
+sub include_deps { +shift->admin->include_deps(@_) };
+sub auto_include { +shift->admin->auto_include(@_) };
+sub auto_include_deps { +shift->admin->auto_include_deps(@_) };
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Makefile.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Makefile.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Makefile.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,146 @@
+#line 1 "inc/Module/Install/Makefile.pm - lib/Module/Install/Makefile.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Makefile.pm $ $Author: autrijus $
+# $Revision: #53 $ $Change: 1847 $ $DateTime: 2003/12/31 23:14:54 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Makefile;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict 'vars';
+use vars '$VERSION';
+
+use ExtUtils::MakeMaker ();
+
+sub Makefile { $_[0] }
+
+sub prompt { 
+    shift;
+    goto &ExtUtils::MakeMaker::prompt;
+}
+
+sub makemaker_args {
+    my $self = shift;
+    my $args = ($self->{makemaker_args} ||= {});
+    %$args = ( %$args, @_ ) if @_;
+    $args;
+}
+
+sub clean_files {
+    my $self = shift;
+    my $clean = $self->makemaker_args->{clean} ||= {};
+    %$clean = (
+        %$clean, 
+        FILES => join(" ", grep length, $clean->{FILES}, @_),
+    );
+}
+
+sub libs {
+    my $self = shift;
+    my $libs = ref $_[0] ? shift : [shift];
+    $self->makemaker_args( LIBS => $libs );
+}
+
+sub inc {
+    my $self = shift;
+    $self->makemaker_args( INC => shift );
+}
+
+sub write {
+    my $self = shift;
+    die "&Makefile->write() takes no arguments\n" if @_;
+
+    my $args = $self->makemaker_args;
+
+    $args->{DISTNAME} = $self->name;
+    $args->{NAME} = $self->module_name || $self->name || $self->determine_NAME($args);
+    $args->{VERSION} = $self->version || $self->determine_VERSION($args);
+    $args->{NAME} =~ s/-/::/g;
+
+    if ($] >= 5.005) {
+	$args->{ABSTRACT} = $self->abstract;
+	$args->{AUTHOR} = $self->author;
+    }
+    if ( eval($ExtUtils::MakeMaker::VERSION) >= 6.10 ) {
+        $args->{NO_META} = 1;
+    }
+    if ( eval($ExtUtils::MakeMaker::VERSION) > 6.17 ) {
+	$args->{SIGN} = 1 if $self->sign;
+    }
+    delete $args->{SIGN} unless $self->is_admin;
+
+    # merge both kinds of requires into prereq_pm
+    my $prereq = ($args->{PREREQ_PM} ||= {});
+    %$prereq = ( %$prereq, map { @$_ } map { @$_ } grep $_,
+                 ($self->build_requires, $self->requires) );
+
+    # merge both kinds of requires into prereq_pm
+    my $dir = ($args->{DIR} ||= []);
+    if ($self->bundles) {
+        push @$dir, map "$_->[1]", @{$self->bundles};
+        delete $prereq->{$_->[0]} for @{$self->bundles};
+    }
+
+    if (my $perl_version = $self->perl_version) {
+        eval "use $perl_version; 1"
+            or die "ERROR: perl: Version $] is installed, ".
+                   "but we need version >= $perl_version";
+    }
+
+    my %args = map {($_ => $args->{$_})} grep {defined($args->{$_})} keys %$args;
+
+    if ($self->admin->preop) {
+        $args{dist} = $self->admin->preop;
+    }
+
+    ExtUtils::MakeMaker::WriteMakefile(%args);
+
+    $self->fix_up_makefile();
+}
+
+sub fix_up_makefile {
+    my $self = shift;
+    my $top_class = ref($self->_top) || '';
+    my $top_version = $self->_top->VERSION || '';
+
+    my $preamble = $self->preamble 
+       ? "# Preamble by $top_class $top_version\n" . $self->preamble
+       : '';
+    my $postamble = "# Postamble by $top_class $top_version\n" . 
+                    ($self->postamble || '');
+
+    open MAKEFILE, '< Makefile' or die $!;
+    my $makefile = do { local $/; <MAKEFILE> };
+    close MAKEFILE;
+
+    $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /;
+    $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g;
+    $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g;
+
+    $makefile =~ s/^(FULLPERL = .*)/$1 -Iinc/m;
+    $makefile =~ s/^(PERL = .*)/$1 -Iinc/m;
+
+    open MAKEFILE, '> Makefile' or die $!;
+    print MAKEFILE "$preamble$makefile$postamble";
+    close MAKEFILE;
+}
+
+sub preamble {
+    my ($self, $text) = @_;
+    $self->{preamble} = $text . $self->{preamble} if defined $text;
+    $self->{preamble};
+}
+
+sub postamble {
+    my ($self, $text) = @_;
+
+    $self->{postamble} ||= $self->admin->postamble;
+    $self->{postamble} .= $text if defined $text;
+    $self->{postamble}
+}
+
+1;
+
+__END__
+
+#line 276

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Metadata.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Metadata.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Metadata.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,190 @@
+#line 1 "inc/Module/Install/Metadata.pm - lib/Module/Install/Metadata.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Metadata.pm $ $Author: autrijus $
+# $Revision: #32 $ $Change: 1885 $ $DateTime: 2004/03/11 05:55:27 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Metadata;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.04';
+
+use strict 'vars';
+use vars qw($VERSION);
+
+sub Meta { shift }
+
+my @scalar_keys = qw(
+    name module_name version abstract author license
+    distribution_type sign perl_version
+);
+my @tuple_keys  = qw(build_requires requires recommends bundles);
+
+foreach my $key (@scalar_keys) {
+    *$key = sub {
+        my $self = shift;
+        return $self->{'values'}{$key} unless @_;
+        $self->{'values'}{$key} = shift;
+        return $self;
+    };
+}
+
+foreach my $key (@tuple_keys) {
+    *$key = sub {
+        my $self = shift;
+        return $self->{'values'}{$key} unless @_;
+        my @rv;
+        while (@_) {
+            my $module  = shift or last;
+            my $version = shift || 0;
+            if ($module eq 'perl') {
+                $version =~ s{^(\d+)\.(\d+)\.(\d+)}
+                             {$1 + $2/1_000 + $3/1_000_000}e;
+                $self->perl_version($version);
+                next;
+            }
+            my $rv = [$module, $version];
+            push @{$self->{'values'}{$key}}, $rv;
+            push @rv, $rv;
+        }
+        return @rv;
+    };
+}
+
+sub features {
+    my $self = shift;
+    while (my ($name, $mods) = splice(@_, 0, 2)) {
+        my $count = 0;
+        push @{$self->{'values'}{'features'}}, ($name => [
+            map { (++$count % 2 and ref($_) and ($count += $#$_)) ? @$_ : $_ } @$mods
+        ] );
+    }
+    return @{$self->{'values'}{'features'}};
+}
+
+sub no_index {
+    my $self = shift;
+    my $type = shift;
+    push @{$self->{'values'}{'no_index'}{$type}}, @_ if $type;
+    return $self->{'values'}{'no_index'};
+}
+
+sub _dump {
+    my $self = shift;
+    my $package = ref($self->_top);
+    my $version = $self->_top->VERSION;
+    my %values = %{$self->{'values'}};
+
+    delete $values{sign};
+    if (my $perl_version = delete $values{perl_version}) {
+        # Always canonical to three-dot version 
+        $perl_version =~ s{^(\d+)\.(\d\d\d)(\d*)}{join('.', $1, int($2), int($3))}e
+            if $perl_version >= 5.006;
+        $values{requires} = [
+            [perl => $perl_version],
+            @{$values{requires}||[]},
+        ];
+    }
+
+    warn "No license specified, setting license = 'unknown'\n"
+        unless $values{license};
+
+    $values{license} ||= 'unknown';
+    $values{distribution_type} ||= 'module';
+    $values{name} ||= do {
+        my $name = $values{module_name};
+        $name =~ s/::/-/g;
+        $name;
+    } if $values{module_name};
+
+    if ($values{name} =~ /::/) {
+        my $name = $values{name};
+        $name =~ s/::/-/g;
+        die "Error in name(): '$values{name}' should be '$name'!\n";
+    }
+
+    my $dump = '';
+    foreach my $key (@scalar_keys) {
+        $dump .= "$key: $values{$key}\n" if exists $values{$key};
+    }
+    foreach my $key (@tuple_keys) {
+        next unless exists $values{$key};
+        $dump .= "$key:\n";
+        foreach (@{$values{$key}}) {
+            $dump .= "  $_->[0]: $_->[1]\n";
+        }
+    }
+
+    if (my $no_index = $values{no_index}) {
+        push @{$no_index->{'directory'}}, 'inc';
+        require YAML;
+        local $YAML::UseHeader = 0;
+        $dump .= YAML::Dump({ no_index => $no_index});
+    }
+    else {
+        $dump .= << "META";
+no_index:
+  directory:
+    - inc
+META
+    }
+    
+    $dump .= "generated_by: $package version $version\n";
+    return $dump;
+}
+
+sub read {
+    my $self = shift;
+    $self->include_deps( 'YAML', 0 );
+    require YAML;
+    my $data = YAML::LoadFile( 'META.yml' );
+    # Call methods explicitly in case user has already set some values.
+    while ( my ($key, $value) = each %$data ) {
+        next unless $self->can( $key );
+        if (ref $value eq 'HASH') {
+            while (my ($module, $version) = each %$value) {
+                $self->$key( $module => $version );
+            }
+        }
+        else {
+            $self->$key( $value );
+        }
+    }
+    return $self;
+}
+
+sub write {
+    my $self = shift;
+    return $self unless $self->is_admin;
+
+    META_NOT_OURS: {
+        local *FH;
+        if (open FH, "META.yml") {
+            while (<FH>) {
+                last META_NOT_OURS if /^generated_by: Module::Install\b/;
+            }
+            return $self if -s FH;
+        }
+    }
+
+    warn "Writing META.yml\n";
+    open META, "> META.yml" or warn "Cannot write to META.yml: $!";
+    print META $self->_dump;
+    close META;
+    return $self;
+}
+
+sub version_from {
+    my ($self, $version_from) = @_;
+    require ExtUtils::MM_Unix;
+    $self->version(ExtUtils::MM_Unix->parse_version($version_from));
+}
+
+sub abstract_from {
+    my ($self, $abstract_from) = @_;
+    require ExtUtils::MM_Unix;
+    $self->abstract(
+        bless( { DISTNAME => $self->name }, 'ExtUtils::MM_Unix')
+            ->parse_abstract($abstract_from)
+    );
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/PAR.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/PAR.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/PAR.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,122 @@
+#line 1 "inc/Module/Install/PAR.pm - lib/Module/Install/PAR.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/PAR.pm $ $Author: autrijus $
+# $Revision: #28 $ $Change: 1650 $ $DateTime: 2003/07/29 06:03:27 $ vim: expandtab shiftwidth=4
+
+package Module::Install::PAR;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub par_base {
+    my ($self, $base, $file) = @_;
+    my $class = ref($self);
+    my $inc_class = join('::', @{$self->_top}{qw(prefix name)});
+    my $ftp_base;
+
+    if (defined $base and length $base) {
+        if ($base =~ m!^(([A-Z])[A-Z])[-_A-Z]+\Z!) {
+            $self->{mailto} = "$base\@cpan.org";
+            $ftp_base = "ftp://ftp.cpan.org/pub/CPAN/authors/id/$2/$1/$base";
+            $base = "http://www.cpan.org/authors/id/$2/$1/$base";
+        }
+        elsif ($base !~ m!^(\w+)://!) {
+            die "Cannot recognize path '$base'; please specify an URL or CPAN ID";
+        }
+        $base .= '/' unless $base =~ m!/\Z!;
+        $ftp_base .= '/' unless $ftp_base =~ m!/\Z!;
+    }
+
+    require Config;
+    my $suffix = "$Config::Config{archname}-$Config::Config{version}.par";
+
+    unless ($file ||= $self->{file}) {
+        my $name    = $self->name or return;
+        my $version = $self->version or return;
+        $name =~ s!::!-!g;
+        $self->{file} = $file = "$name-$version-$suffix";
+    }
+
+    my $perl = $^X;
+    $perl = Win32::GetShortPathName($perl)
+        if $perl =~ / / and defined &Win32::GetShortPathName;
+
+    $self->preamble(<<"END") if $base;
+# --- $class section:
+
+all ::
+\t\@$perl -M$inc_class -e \"extract_par(q($file))\"
+
+END
+
+    $self->postamble(<<"END");
+# --- $class section:
+
+$file: all test
+\t\@\$(PERL) -M$inc_class -e \"make_par(q($file))\"
+
+par :: $file
+\t\@\$(NOOP)
+
+par-upload :: $file
+\tcpan-upload -verbose $file
+
+END
+
+    $self->{url} = $base;
+    $self->{ftp_url} = $ftp_base;
+    $self->{suffix} = $suffix;
+
+    return $self;
+}
+
+sub fetch_par {
+    my ($self, $url, $file, $quiet) = @_;
+    $url = $self->{url} || $self->par_base($url)->{url};
+    $ftp_url = $self->{ftp_url};
+    $file ||= $self->{file};
+
+    return $file if -f $file or $self->get_file(
+        url     => "$url$file",
+        ftp_url => "$ftp_url$file"
+    );
+
+    require Config;
+    print << "END" if $self->{mailto} and !$quiet;
+*** No installation package available for your architecture.
+However, you may wish to generate one with '$Config::Config{make} par' and send
+it to <$self->{mailto}>, so other people on the same platform
+can benefit from it.
+*** Proceeding with normal installation...
+END
+    return;
+}
+
+sub extract_par {
+    my ($self, $file) = @_;
+    return unless -f $file;
+
+    if (eval { require Archive::Zip; 1 }) {
+        my $zip = Archive::Zip->new;
+        return unless $zip->read($file) == Archive::Zip::AZ_OK()
+                  and $zip->extractTree('', 'blib/') == Archive::Zip::AZ_OK();
+    }
+    elsif ($self->can_run('unzip')) {
+        return if system(unzip => $file, qw(-d blib));
+    }
+
+    local *PM_TO_BLIB;
+    open PM_TO_BLIB, '> pm_to_blib' or die $!;
+    close PM_TO_BLIB;
+}
+
+sub make_par {
+    my ($self, $file) = @_;
+    unlink $file if -f $file;
+
+    unless ( eval { require PAR::Dist; PAR::Dist->VERSION >= 0.03 } ) {
+        warn "Please install PAR::Dist 0.03 or above first.";
+        return;
+    }
+
+    return PAR::Dist::blib_to_par(dist => $file);
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Win32.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Win32.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Win32.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,66 @@
+#line 1 "inc/Module/Install/Win32.pm - lib/Module/Install/Win32.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Win32.pm $ $Author: autrijus $
+# $Revision: #9 $ $Change: 1789 $ $DateTime: 2003/11/11 01:22:54 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Win32;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.02';
+
+use strict;
+
+# determine if the user needs nmake, and download it if needed
+sub check_nmake {
+    my $self = shift;
+    $self->load('can_run');
+    $self->load('get_file');
+
+    require Config;
+    return unless (
+        $Config::Config{make}                   and
+        $Config::Config{make} =~ /^nmake\b/i    and
+        $^O eq 'MSWin32'                        and
+        !$self->can_run('nmake')
+    );
+
+    print "The required 'nmake' executable not found, fetching it...\n";
+
+    require File::Basename;
+    my $rv = $self->get_file(
+        url         => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe',
+        ftp_url     => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe',
+        local_dir   => File::Basename::dirname($^X),
+        size        => 51928,
+        run         => 'Nmake15.exe /o > nul',
+        check_for   => 'Nmake.exe',
+        remove      => 1,
+    );
+
+    if (!$rv) {
+        die << '.';
+
+-------------------------------------------------------------------------------
+
+Since you are using Microsoft Windows, you will need the 'nmake' utility
+before installation. It's available at:
+
+  http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe
+      or
+  ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe
+
+Please download the file manually, save it to a directory in %PATH% (e.g.
+C:\WINDOWS\COMMAND\), then launch the MS-DOS command line shell, "cd" to
+that directory, and run "Nmake15.exe" from there; that will create the
+'nmake.exe' file needed by this module.
+
+You may then resume the installation process described in README.
+
+-------------------------------------------------------------------------------
+.
+    }
+}
+
+1;
+
+__END__
+

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/WriteAll.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/WriteAll.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/WriteAll.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,39 @@
+#line 1 "inc/Module/Install/WriteAll.pm - lib/Module/Install/WriteAll.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install/WriteAll.pm $ $Author: autrijus $
+# $Revision: #3 $ $Change: 1885 $ $DateTime: 2004/03/11 05:55:27 $ vim: expandtab shiftwidth=4
+
+package Module::Install::WriteAll;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub WriteAll {
+    my $self = shift;
+    my %args = (
+        meta => 1,
+        sign => 0,
+        inline => 0,
+        check_nmake => 1,
+        @_
+    );
+
+    $self->sign(1) if $args{sign};
+    $self->Meta->write if $args{meta};
+    $self->admin->WriteAll(%args) if $self->is_admin;
+
+    if ($0 =~ /Build.PL$/i) {
+	$self->Build->write;
+    }
+    else {
+	$self->check_nmake if $args{check_nmake};
+        $self->makemaker_args( PL_FILES => {} )
+            unless $self->makemaker_args->{'PL_FILES'};
+
+        if ($args{inline}) {
+            $self->Inline->write;
+        }
+        else {
+            $self->Makefile->write;
+        }
+    }
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,171 @@
+#line 1 "inc/Module/Install.pm - lib/Module/Install.pm"
+# $File: //depot/cpan/Module-Install/lib/Module/Install.pm $ $Author: autrijus $
+# $Revision: #68 $ $Change: 2285 $ $DateTime: 2004/07/01 03:16:20 $ vim: expandtab shiftwidth=4
+
+package Module::Install;
+$VERSION = '0.34';
+
+die << "." unless $INC{join('/', inc => split(/::/, __PACKAGE__)).'.pm'};
+Please invoke ${\__PACKAGE__} with:
+
+    use inc::${\__PACKAGE__};
+
+not:
+
+    use ${\__PACKAGE__};
+
+.
+
+use strict 'vars';
+use Cwd ();
+use File::Find ();
+use File::Path ();
+
+ at inc::Module::Install::ISA = 'Module::Install';
+
+#line 131
+
+sub import {
+    my $class = shift;
+    my $self = $class->new(@_);
+
+    if (not -f $self->{file}) {
+        require "$self->{path}/$self->{dispatch}.pm";
+        File::Path::mkpath("$self->{prefix}/$self->{author}");
+        $self->{admin} = 
+          "$self->{name}::$self->{dispatch}"->new(_top => $self);
+        $self->{admin}->init;
+        @_ = ($class, _self => $self);
+        goto &{"$self->{name}::import"};
+    }
+
+    *{caller(0) . "::AUTOLOAD"} = $self->autoload;
+
+    # Unregister loader and worker packages so subdirs can use them again
+    delete $INC{"$self->{file}"};
+    delete $INC{"$self->{path}.pm"};
+}
+
+#line 158
+
+sub autoload {
+    my $self = shift;
+    my $caller = caller;
+
+    my $cwd = Cwd::cwd();
+    my $sym = "$caller\::AUTOLOAD";
+
+    $sym->{$cwd} = sub {
+        my $pwd = Cwd::cwd();
+        if (my $code = $sym->{$pwd}) {
+            goto &$code unless $cwd eq $pwd; # delegate back to parent dirs
+        }
+        $$sym =~ /([^:]+)$/ or die "Cannot autoload $caller";
+        unshift @_, ($self, $1);
+        goto &{$self->can('call')} unless uc($1) eq $1;
+    };
+}
+
+#line 183
+
+sub new {
+    my ($class, %args) = @_;
+
+    return $args{_self} if $args{_self};
+
+    $args{dispatch} ||= 'Admin';
+    $args{prefix}   ||= 'inc';
+    $args{author}   ||= '.author';
+    $args{bundle}   ||= 'inc/BUNDLES';
+
+    $class =~ s/^\Q$args{prefix}\E:://;
+    $args{name}     ||= $class;
+    $args{version}  ||= $class->VERSION;
+
+    unless ($args{path}) {
+        $args{path}  = $args{name};
+        $args{path}  =~ s!::!/!g;
+    }
+    $args{file}     ||= "$args{prefix}/$args{path}.pm";
+
+    bless(\%args, $class);
+}
+
+#line 212
+
+sub call {
+    my $self   = shift;
+    my $method = shift;
+    my $obj = $self->load($method) or return;
+
+    unshift @_, $obj;
+    goto &{$obj->can($method)};
+}
+
+#line 227
+
+sub load {
+    my ($self, $method) = @_;
+
+    $self->load_extensions(
+        "$self->{prefix}/$self->{path}", $self
+    ) unless $self->{extensions};
+
+    foreach my $obj (@{$self->{extensions}}) {
+        return $obj if $obj->can($method);
+    }
+
+    my $admin = $self->{admin} or die << "END";
+The '$method' method does not exist in the '$self->{prefix}' path!
+Please remove the '$self->{prefix}' directory and run $0 again to load it.
+END
+
+    my $obj = $admin->load($method, 1);
+    push @{$self->{extensions}}, $obj;
+
+    $obj;
+}
+
+#line 257
+
+sub load_extensions {
+    my ($self, $path, $top_obj) = @_;
+
+    unshift @INC, $self->{prefix}
+        unless grep { $_ eq $self->{prefix} } @INC;
+
+    local @INC = ($path, @INC);
+    foreach my $rv ($self->find_extensions($path)) {
+        my ($file, $pkg) = @{$rv};
+        next if $self->{pathnames}{$pkg};
+
+        eval { require $file; 1 } or (warn($@), next);
+        $self->{pathnames}{$pkg} = delete $INC{$file};
+        push @{$self->{extensions}}, $pkg->new( _top => $top_obj );
+    }
+}
+
+#line 281
+
+sub find_extensions {
+    my ($self, $path) = @_;
+    my @found;
+
+    File::Find::find(sub {
+        my $file = $File::Find::name;
+        return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is;
+        return if $1 eq $self->{dispatch};
+
+        $file = "$self->{path}/$1.pm";
+        my $pkg = "$self->{name}::$1"; $pkg =~ s!/!::!g;
+        push @found, [$file, $pkg];
+    }, $path) if -d $path;
+
+    @found;
+}
+
+1;
+
+__END__
+
+#line 619

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Test/Builder.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Test/Builder.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Test/Builder.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,867 @@
+#line 1 "inc/Test/Builder.pm - /usr/local/lib/perl5/site_perl/5.8.4/Test/Builder.pm"
+package Test::Builder;
+
+use 5.004;
+
+# $^C was only introduced in 5.005-ish.  We do this to prevent
+# use of uninitialized value warnings in older perls.
+$^C ||= 0;
+
+use strict;
+use vars qw($VERSION $CLASS);
+$VERSION = '0.17';
+$CLASS = __PACKAGE__;
+
+my $IsVMS = $^O eq 'VMS';
+
+# Make Test::Builder thread-safe for ithreads.
+BEGIN {
+    use Config;
+    if( $] >= 5.008 && $Config{useithreads} ) {
+        require threads;
+        require threads::shared;
+        threads::shared->import;
+    }
+    else {
+        *share = sub { 0 };
+        *lock  = sub { 0 };
+    }
+}
+
+use vars qw($Level);
+my($Test_Died) = 0;
+my($Have_Plan) = 0;
+my $Original_Pid = $$;
+my $Curr_Test = 0;      share($Curr_Test);
+my @Test_Results = ();  share(@Test_Results);
+my @Test_Details = ();  share(@Test_Details);
+
+
+#line 94
+
+my $Test;
+sub new {
+    my($class) = shift;
+    $Test ||= bless ['Move along, nothing to see here'], $class;
+    return $Test;
+}
+
+#line 120
+
+my $Exported_To;
+sub exported_to {
+    my($self, $pack) = @_;
+
+    if( defined $pack ) {
+        $Exported_To = $pack;
+    }
+    return $Exported_To;
+}
+
+#line 143
+
+sub plan {
+    my($self, $cmd, $arg) = @_;
+
+    return unless $cmd;
+
+    if( $Have_Plan ) {
+        die sprintf "You tried to plan twice!  Second plan at %s line %d\n",
+          ($self->caller)[1,2];
+    }
+
+    if( $cmd eq 'no_plan' ) {
+        $self->no_plan;
+    }
+    elsif( $cmd eq 'skip_all' ) {
+        return $self->skip_all($arg);
+    }
+    elsif( $cmd eq 'tests' ) {
+        if( $arg ) {
+            return $self->expected_tests($arg);
+        }
+        elsif( !defined $arg ) {
+            die "Got an undefined number of tests.  Looks like you tried to ".
+                "say how many tests you plan to run but made a mistake.\n";
+        }
+        elsif( !$arg ) {
+            die "You said to run 0 tests!  You've got to run something.\n";
+        }
+    }
+    else {
+        require Carp;
+        my @args = grep { defined } ($cmd, $arg);
+        Carp::croak("plan() doesn't understand @args");
+    }
+
+    return 1;
+}
+
+#line 190
+
+my $Expected_Tests = 0;
+sub expected_tests {
+    my($self, $max) = @_;
+
+    if( defined $max ) {
+        $Expected_Tests = $max;
+        $Have_Plan      = 1;
+
+        $self->_print("1..$max\n") unless $self->no_header;
+    }
+    return $Expected_Tests;
+}
+
+
+#line 212
+
+my($No_Plan) = 0;
+sub no_plan {
+    $No_Plan    = 1;
+    $Have_Plan  = 1;
+}
+
+#line 226
+
+sub has_plan {
+	return($Expected_Tests) if $Expected_Tests;
+	return('no_plan') if $No_Plan;
+	return(undef);
+};
+
+
+#line 242
+
+my $Skip_All = 0;
+sub skip_all {
+    my($self, $reason) = @_;
+
+    my $out = "1..0";
+    $out .= " # Skip $reason" if $reason;
+    $out .= "\n";
+
+    $Skip_All = 1;
+
+    $self->_print($out) unless $self->no_header;
+    exit(0);
+}
+
+#line 276
+
+sub ok {
+    my($self, $test, $name) = @_;
+
+    # $test might contain an object which we don't want to accidentally
+    # store, so we turn it into a boolean.
+    $test = $test ? 1 : 0;
+
+    unless( $Have_Plan ) {
+        require Carp;
+        Carp::croak("You tried to run a test without a plan!  Gotta have a plan.");
+    }
+
+    lock $Curr_Test;
+    $Curr_Test++;
+
+    $self->diag(<<ERR) if defined $name and $name =~ /^[\d\s]+$/;
+    You named your test '$name'.  You shouldn't use numbers for your test names.
+    Very confusing.
+ERR
+
+    my($pack, $file, $line) = $self->caller;
+
+    my $todo = $self->todo($pack);
+
+    my $out;
+    my $result = {};
+    share($result);
+
+    unless( $test ) {
+        $out .= "not ";
+        @$result{ 'ok', 'actual_ok' } = ( ( $todo ? 1 : 0 ), 0 );
+    }
+    else {
+        @$result{ 'ok', 'actual_ok' } = ( 1, $test );
+    }
+
+    $out .= "ok";
+    $out .= " $Curr_Test" if $self->use_numbers;
+
+    if( defined $name ) {
+        $name =~ s|#|\\#|g;     # # in a name can confuse Test::Harness.
+        $out   .= " - $name";
+        $result->{name} = $name;
+    }
+    else {
+        $result->{name} = '';
+    }
+
+    if( $todo ) {
+        my $what_todo = $todo;
+        $out   .= " # TODO $what_todo";
+        $result->{reason} = $what_todo;
+        $result->{type}   = 'todo';
+    }
+    else {
+        $result->{reason} = '';
+        $result->{type}   = '';
+    }
+
+    $Test_Results[$Curr_Test-1] = $result;
+    $out .= "\n";
+
+    $self->_print($out);
+
+    unless( $test ) {
+        my $msg = $todo ? "Failed (TODO)" : "Failed";
+        $self->diag("    $msg test ($file at line $line)\n");
+    } 
+
+    return $test ? 1 : 0;
+}
+
+#line 364
+
+sub is_eq {
+    my($self, $got, $expect, $name) = @_;
+    local $Level = $Level + 1;
+
+    if( !defined $got || !defined $expect ) {
+        # undef only matches undef and nothing else
+        my $test = !defined $got && !defined $expect;
+
+        $self->ok($test, $name);
+        $self->_is_diag($got, 'eq', $expect) unless $test;
+        return $test;
+    }
+
+    return $self->cmp_ok($got, 'eq', $expect, $name);
+}
+
+sub is_num {
+    my($self, $got, $expect, $name) = @_;
+    local $Level = $Level + 1;
+
+    if( !defined $got || !defined $expect ) {
+        # undef only matches undef and nothing else
+        my $test = !defined $got && !defined $expect;
+
+        $self->ok($test, $name);
+        $self->_is_diag($got, '==', $expect) unless $test;
+        return $test;
+    }
+
+    return $self->cmp_ok($got, '==', $expect, $name);
+}
+
+sub _is_diag {
+    my($self, $got, $type, $expect) = @_;
+
+    foreach my $val (\$got, \$expect) {
+        if( defined $$val ) {
+            if( $type eq 'eq' ) {
+                # quote and force string context
+                $$val = "'$$val'"
+            }
+            else {
+                # force numeric context
+                $$val = $$val+0;
+            }
+        }
+        else {
+            $$val = 'undef';
+        }
+    }
+
+    return $self->diag(sprintf <<DIAGNOSTIC, $got, $expect);
+         got: %s
+    expected: %s
+DIAGNOSTIC
+
+}    
+
+#line 438
+
+sub isnt_eq {
+    my($self, $got, $dont_expect, $name) = @_;
+    local $Level = $Level + 1;
+
+    if( !defined $got || !defined $dont_expect ) {
+        # undef only matches undef and nothing else
+        my $test = defined $got || defined $dont_expect;
+
+        $self->ok($test, $name);
+        $self->_cmp_diag('ne', $got, $dont_expect) unless $test;
+        return $test;
+    }
+
+    return $self->cmp_ok($got, 'ne', $dont_expect, $name);
+}
+
+sub isnt_num {
+    my($self, $got, $dont_expect, $name) = @_;
+    local $Level = $Level + 1;
+
+    if( !defined $got || !defined $dont_expect ) {
+        # undef only matches undef and nothing else
+        my $test = defined $got || defined $dont_expect;
+
+        $self->ok($test, $name);
+        $self->_cmp_diag('!=', $got, $dont_expect) unless $test;
+        return $test;
+    }
+
+    return $self->cmp_ok($got, '!=', $dont_expect, $name);
+}
+
+
+#line 490
+
+sub like {
+    my($self, $this, $regex, $name) = @_;
+
+    local $Level = $Level + 1;
+    $self->_regex_ok($this, $regex, '=~', $name);
+}
+
+sub unlike {
+    my($self, $this, $regex, $name) = @_;
+
+    local $Level = $Level + 1;
+    $self->_regex_ok($this, $regex, '!~', $name);
+}
+
+#line 531
+
+
+sub maybe_regex {
+	my ($self, $regex) = @_;
+    my $usable_regex = undef;
+    if( ref $regex eq 'Regexp' ) {
+        $usable_regex = $regex;
+    }
+    # Check if it looks like '/foo/'
+    elsif( my($re, $opts) = $regex =~ m{^ /(.*)/ (\w*) $ }sx ) {
+        $usable_regex = length $opts ? "(?$opts)$re" : $re;
+    };
+    return($usable_regex)
+};
+
+sub _regex_ok {
+    my($self, $this, $regex, $cmp, $name) = @_;
+
+    local $Level = $Level + 1;
+
+    my $ok = 0;
+    my $usable_regex = $self->maybe_regex($regex);
+    unless (defined $usable_regex) {
+        $ok = $self->ok( 0, $name );
+        $self->diag("    '$regex' doesn't look much like a regex to me.");
+        return $ok;
+    }
+
+    {
+        local $^W = 0;
+        my $test = $this =~ /$usable_regex/ ? 1 : 0;
+        $test = !$test if $cmp eq '!~';
+        $ok = $self->ok( $test, $name );
+    }
+
+    unless( $ok ) {
+        $this = defined $this ? "'$this'" : 'undef';
+        my $match = $cmp eq '=~' ? "doesn't match" : "matches";
+        $self->diag(sprintf <<DIAGNOSTIC, $this, $match, $regex);
+                  %s
+    %13s '%s'
+DIAGNOSTIC
+
+    }
+
+    return $ok;
+}
+
+#line 588
+
+sub cmp_ok {
+    my($self, $got, $type, $expect, $name) = @_;
+
+    my $test;
+    {
+        local $^W = 0;
+        local($@,$!);   # don't interfere with $@
+                        # eval() sometimes resets $!
+        $test = eval "\$got $type \$expect";
+    }
+    local $Level = $Level + 1;
+    my $ok = $self->ok($test, $name);
+
+    unless( $ok ) {
+        if( $type =~ /^(eq|==)$/ ) {
+            $self->_is_diag($got, $type, $expect);
+        }
+        else {
+            $self->_cmp_diag($got, $type, $expect);
+        }
+    }
+    return $ok;
+}
+
+sub _cmp_diag {
+    my($self, $got, $type, $expect) = @_;
+    
+    $got    = defined $got    ? "'$got'"    : 'undef';
+    $expect = defined $expect ? "'$expect'" : 'undef';
+    return $self->diag(sprintf <<DIAGNOSTIC, $got, $type, $expect);
+    %s
+        %s
+    %s
+DIAGNOSTIC
+}
+
+#line 636
+
+sub BAILOUT {
+    my($self, $reason) = @_;
+
+    $self->_print("Bail out!  $reason");
+    exit 255;
+}
+
+#line 652
+
+sub skip {
+    my($self, $why) = @_;
+    $why ||= '';
+
+    unless( $Have_Plan ) {
+        require Carp;
+        Carp::croak("You tried to run tests without a plan!  Gotta have a plan.");
+    }
+
+    lock($Curr_Test);
+    $Curr_Test++;
+
+    my %result;
+    share(%result);
+    %result = (
+        'ok'      => 1,
+        actual_ok => 1,
+        name      => '',
+        type      => 'skip',
+        reason    => $why,
+    );
+    $Test_Results[$Curr_Test-1] = \%result;
+
+    my $out = "ok";
+    $out   .= " $Curr_Test" if $self->use_numbers;
+    $out   .= " # skip $why\n";
+
+    $Test->_print($out);
+
+    return 1;
+}
+
+
+#line 697
+
+sub todo_skip {
+    my($self, $why) = @_;
+    $why ||= '';
+
+    unless( $Have_Plan ) {
+        require Carp;
+        Carp::croak("You tried to run tests without a plan!  Gotta have a plan.");
+    }
+
+    lock($Curr_Test);
+    $Curr_Test++;
+
+    my %result;
+    share(%result);
+    %result = (
+        'ok'      => 1,
+        actual_ok => 0,
+        name      => '',
+        type      => 'todo_skip',
+        reason    => $why,
+    );
+
+    $Test_Results[$Curr_Test-1] = \%result;
+
+    my $out = "not ok";
+    $out   .= " $Curr_Test" if $self->use_numbers;
+    $out   .= " # TODO & SKIP $why\n";
+
+    $Test->_print($out);
+
+    return 1;
+}
+
+
+#line 772
+
+sub level {
+    my($self, $level) = @_;
+
+    if( defined $level ) {
+        $Level = $level;
+    }
+    return $Level;
+}
+
+$CLASS->level(1);
+
+
+#line 809
+
+my $Use_Nums = 1;
+sub use_numbers {
+    my($self, $use_nums) = @_;
+
+    if( defined $use_nums ) {
+        $Use_Nums = $use_nums;
+    }
+    return $Use_Nums;
+}
+
+#line 836
+
+my($No_Header, $No_Ending) = (0,0);
+sub no_header {
+    my($self, $no_header) = @_;
+
+    if( defined $no_header ) {
+        $No_Header = $no_header;
+    }
+    return $No_Header;
+}
+
+sub no_ending {
+    my($self, $no_ending) = @_;
+
+    if( defined $no_ending ) {
+        $No_Ending = $no_ending;
+    }
+    return $No_Ending;
+}
+
+
+#line 891
+
+sub diag {
+    my($self, @msgs) = @_;
+    return unless @msgs;
+
+    # Prevent printing headers when compiling (i.e. -c)
+    return if $^C;
+
+    # Escape each line with a #.
+    foreach (@msgs) {
+        $_ = 'undef' unless defined;
+        s/^/# /gms;
+    }
+
+    push @msgs, "\n" unless $msgs[-1] =~ /\n\Z/;
+
+    local $Level = $Level + 1;
+    my $fh = $self->todo ? $self->todo_output : $self->failure_output;
+    local($\, $", $,) = (undef, ' ', '');
+    print $fh @msgs;
+
+    return 0;
+}
+
+#line 926
+
+sub _print {
+    my($self, @msgs) = @_;
+
+    # Prevent printing headers when only compiling.  Mostly for when
+    # tests are deparsed with B::Deparse
+    return if $^C;
+
+    local($\, $", $,) = (undef, ' ', '');
+    my $fh = $self->output;
+
+    # Escape each line after the first with a # so we don't
+    # confuse Test::Harness.
+    foreach (@msgs) {
+        s/\n(.)/\n# $1/sg;
+    }
+
+    push @msgs, "\n" unless $msgs[-1] =~ /\n\Z/;
+
+    print $fh @msgs;
+}
+
+
+#line 977
+
+my($Out_FH, $Fail_FH, $Todo_FH);
+sub output {
+    my($self, $fh) = @_;
+
+    if( defined $fh ) {
+        $Out_FH = _new_fh($fh);
+    }
+    return $Out_FH;
+}
+
+sub failure_output {
+    my($self, $fh) = @_;
+
+    if( defined $fh ) {
+        $Fail_FH = _new_fh($fh);
+    }
+    return $Fail_FH;
+}
+
+sub todo_output {
+    my($self, $fh) = @_;
+
+    if( defined $fh ) {
+        $Todo_FH = _new_fh($fh);
+    }
+    return $Todo_FH;
+}
+
+sub _new_fh {
+    my($file_or_fh) = shift;
+
+    my $fh;
+    unless( UNIVERSAL::isa($file_or_fh, 'GLOB') ) {
+        $fh = do { local *FH };
+        open $fh, ">$file_or_fh" or 
+            die "Can't open test output log $file_or_fh: $!";
+    }
+    else {
+        $fh = $file_or_fh;
+    }
+
+    return $fh;
+}
+
+unless( $^C ) {
+    # We dup STDOUT and STDERR so people can change them in their
+    # test suites while still getting normal test output.
+    open(TESTOUT, ">&STDOUT") or die "Can't dup STDOUT:  $!";
+    open(TESTERR, ">&STDERR") or die "Can't dup STDERR:  $!";
+
+    # Set everything to unbuffered else plain prints to STDOUT will
+    # come out in the wrong order from our own prints.
+    _autoflush(\*TESTOUT);
+    _autoflush(\*STDOUT);
+    _autoflush(\*TESTERR);
+    _autoflush(\*STDERR);
+
+    $CLASS->output(\*TESTOUT);
+    $CLASS->failure_output(\*TESTERR);
+    $CLASS->todo_output(\*TESTOUT);
+}
+
+sub _autoflush {
+    my($fh) = shift;
+    my $old_fh = select $fh;
+    $| = 1;
+    select $old_fh;
+}
+
+
+#line 1065
+
+sub current_test {
+    my($self, $num) = @_;
+
+    lock($Curr_Test);
+    if( defined $num ) {
+        unless( $Have_Plan ) {
+            require Carp;
+            Carp::croak("Can't change the current test number without a plan!");
+        }
+
+        $Curr_Test = $num;
+        if( $num > @Test_Results ) {
+            my $start = @Test_Results ? $#Test_Results + 1 : 0;
+            for ($start..$num-1) {
+                my %result;
+                share(%result);
+                %result = ( ok        => 1, 
+                            actual_ok => undef, 
+                            reason    => 'incrementing test number', 
+                            type      => 'unknown', 
+                            name      => undef 
+                          );
+                $Test_Results[$_] = \%result;
+            }
+        }
+    }
+    return $Curr_Test;
+}
+
+
+#line 1106
+
+sub summary {
+    my($self) = shift;
+
+    return map { $_->{'ok'} } @Test_Results;
+}
+
+#line 1161
+
+sub details {
+    return @Test_Results;
+}
+
+#line 1185
+
+sub todo {
+    my($self, $pack) = @_;
+
+    $pack = $pack || $self->exported_to || $self->caller(1);
+
+    no strict 'refs';
+    return defined ${$pack.'::TODO'} ? ${$pack.'::TODO'}
+                                     : 0;
+}
+
+#line 1205
+
+sub caller {
+    my($self, $height) = @_;
+    $height ||= 0;
+
+    my @caller = CORE::caller($self->level + $height + 1);
+    return wantarray ? @caller : $caller[0];
+}
+
+#line 1217
+
+#line 1231
+
+#'#
+sub _sanity_check {
+    _whoa($Curr_Test < 0,  'Says here you ran a negative number of tests!');
+    _whoa(!$Have_Plan and $Curr_Test, 
+          'Somehow your tests ran without a plan!');
+    _whoa($Curr_Test != @Test_Results,
+          'Somehow you got a different number of results than tests ran!');
+}
+
+#line 1250
+
+sub _whoa {
+    my($check, $desc) = @_;
+    if( $check ) {
+        die <<WHOA;
+WHOA!  $desc
+This should never happen!  Please contact the author immediately!
+WHOA
+    }
+}
+
+#line 1271
+
+sub _my_exit {
+    $? = $_[0];
+
+    return 1;
+}
+
+
+#line 1284
+
+$SIG{__DIE__} = sub {
+    # We don't want to muck with death in an eval, but $^S isn't
+    # totally reliable.  5.005_03 and 5.6.1 both do the wrong thing
+    # with it.  Instead, we use caller.  This also means it runs under
+    # 5.004!
+    my $in_eval = 0;
+    for( my $stack = 1;  my $sub = (CORE::caller($stack))[3];  $stack++ ) {
+        $in_eval = 1 if $sub =~ /^\(eval\)/;
+    }
+    $Test_Died = 1 unless $in_eval;
+};
+
+sub _ending {
+    my $self = shift;
+
+    _sanity_check();
+
+    # Don't bother with an ending if this is a forked copy.  Only the parent
+    # should do the ending.
+    do{ _my_exit($?) && return } if $Original_Pid != $$;
+
+    # Bailout if plan() was never called.  This is so
+    # "require Test::Simple" doesn't puke.
+    do{ _my_exit(0) && return } if !$Have_Plan && !$Test_Died;
+
+    # Figure out if we passed or failed and print helpful messages.
+    if( @Test_Results ) {
+        # The plan?  We have no plan.
+        if( $No_Plan ) {
+            $self->_print("1..$Curr_Test\n") unless $self->no_header;
+            $Expected_Tests = $Curr_Test;
+        }
+
+        # 5.8.0 threads bug.  Shared arrays will not be auto-extended 
+        # by a slice.  Worse, we have to fill in every entry else
+        # we'll get an "Invalid value for shared scalar" error
+        for my $idx ($#Test_Results..$Expected_Tests-1) {
+            my %empty_result = ();
+            share(%empty_result);
+            $Test_Results[$idx] = \%empty_result
+              unless defined $Test_Results[$idx];
+        }
+
+        my $num_failed = grep !$_->{'ok'}, @Test_Results[0..$Expected_Tests-1];
+        $num_failed += abs($Expected_Tests - @Test_Results);
+
+        if( $Curr_Test < $Expected_Tests ) {
+            $self->diag(<<"FAIL");
+Looks like you planned $Expected_Tests tests but only ran $Curr_Test.
+FAIL
+        }
+        elsif( $Curr_Test > $Expected_Tests ) {
+            my $num_extra = $Curr_Test - $Expected_Tests;
+            $self->diag(<<"FAIL");
+Looks like you planned $Expected_Tests tests but ran $num_extra extra.
+FAIL
+        }
+        elsif ( $num_failed ) {
+            $self->diag(<<"FAIL");
+Looks like you failed $num_failed tests of $Expected_Tests.
+FAIL
+        }
+
+        if( $Test_Died ) {
+            $self->diag(<<"FAIL");
+Looks like your test died just after $Curr_Test.
+FAIL
+
+            _my_exit( 255 ) && return;
+        }
+
+        _my_exit( $num_failed <= 254 ? $num_failed : 254  ) && return;
+    }
+    elsif ( $Skip_All ) {
+        _my_exit( 0 ) && return;
+    }
+    elsif ( $Test_Died ) {
+        $self->diag(<<'FAIL');
+Looks like your test died before it could output anything.
+FAIL
+    }
+    else {
+        $self->diag("No tests run!\n");
+        _my_exit( 255 ) && return;
+    }
+}
+
+END {
+    $Test->_ending if defined $Test and !$Test->no_ending;
+}
+
+#line 1407
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/inc/Test/More.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Test/More.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Test/More.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,500 @@
+#line 1 "inc/Test/More.pm - /usr/local/lib/perl5/site_perl/5.8.4/Test/More.pm"
+package Test::More;
+
+use 5.004;
+
+use strict;
+use Test::Builder;
+
+
+# Can't use Carp because it might cause use_ok() to accidentally succeed
+# even though the module being used forgot to use Carp.  Yes, this
+# actually happened.
+sub _carp {
+    my($file, $line) = (caller(1))[1,2];
+    warn @_, " at $file line $line\n";
+}
+
+
+
+require Exporter;
+use vars qw($VERSION @ISA @EXPORT %EXPORT_TAGS $TODO);
+$VERSION = '0.47';
+ at ISA    = qw(Exporter);
+ at EXPORT = qw(ok use_ok require_ok
+             is isnt like unlike is_deeply
+             cmp_ok
+             skip todo todo_skip
+             pass fail
+             eq_array eq_hash eq_set
+             $TODO
+             plan
+             can_ok  isa_ok
+             diag
+            );
+
+my $Test = Test::Builder->new;
+
+
+# 5.004's Exporter doesn't have export_to_level.
+sub _export_to_level
+{
+      my $pkg = shift;
+      my $level = shift;
+      (undef) = shift;                  # redundant arg
+      my $callpkg = caller($level);
+      $pkg->export($callpkg, @_);
+}
+
+
+#line 172
+
+sub plan {
+    my(@plan) = @_;
+
+    my $caller = caller;
+
+    $Test->exported_to($caller);
+
+    my @imports = ();
+    foreach my $idx (0..$#plan) {
+        if( $plan[$idx] eq 'import' ) {
+            my($tag, $imports) = splice @plan, $idx, 2;
+            @imports = @$imports;
+            last;
+        }
+    }
+
+    $Test->plan(@plan);
+
+    __PACKAGE__->_export_to_level(1, __PACKAGE__, @imports);
+}
+
+sub import {
+    my($class) = shift;
+    goto &plan;
+}
+
+
+#line 266
+
+sub ok ($;$) {
+    my($test, $name) = @_;
+    $Test->ok($test, $name);
+}
+
+#line 330
+
+sub is ($$;$) {
+    $Test->is_eq(@_);
+}
+
+sub isnt ($$;$) {
+    $Test->isnt_eq(@_);
+}
+
+*isn't = \&isnt;
+
+
+#line 371
+
+sub like ($$;$) {
+    $Test->like(@_);
+}
+
+
+#line 385
+
+sub unlike {
+    $Test->unlike(@_);
+}
+
+
+#line 423
+
+sub cmp_ok($$$;$) {
+    $Test->cmp_ok(@_);
+}
+
+
+#line 457
+
+sub can_ok ($@) {
+    my($proto, @methods) = @_;
+    my $class = ref $proto || $proto;
+
+    unless( @methods ) {
+        my $ok = $Test->ok( 0, "$class->can(...)" );
+        $Test->diag('    can_ok() called with no methods');
+        return $ok;
+    }
+
+    my @nok = ();
+    foreach my $method (@methods) {
+        local($!, $@);  # don't interfere with caller's $@
+                        # eval sometimes resets $!
+        eval { $proto->can($method) } || push @nok, $method;
+    }
+
+    my $name;
+    $name = @methods == 1 ? "$class->can('$methods[0]')" 
+                          : "$class->can(...)";
+    
+    my $ok = $Test->ok( !@nok, $name );
+
+    $Test->diag(map "    $class->can('$_') failed\n", @nok);
+
+    return $ok;
+}
+
+#line 514
+
+sub isa_ok ($$;$) {
+    my($object, $class, $obj_name) = @_;
+
+    my $diag;
+    $obj_name = 'The object' unless defined $obj_name;
+    my $name = "$obj_name isa $class";
+    if( !defined $object ) {
+        $diag = "$obj_name isn't defined";
+    }
+    elsif( !ref $object ) {
+        $diag = "$obj_name isn't a reference";
+    }
+    else {
+        # We can't use UNIVERSAL::isa because we want to honor isa() overrides
+        local($@, $!);  # eval sometimes resets $!
+        my $rslt = eval { $object->isa($class) };
+        if( $@ ) {
+            if( $@ =~ /^Can't call method "isa" on unblessed reference/ ) {
+                if( !UNIVERSAL::isa($object, $class) ) {
+                    my $ref = ref $object;
+                    $diag = "$obj_name isn't a '$class' it's a '$ref'";
+                }
+            } else {
+                die <<WHOA;
+WHOA! I tried to call ->isa on your object and got some weird error.
+This should never happen.  Please contact the author immediately.
+Here's the error.
+$@
+WHOA
+            }
+        }
+        elsif( !$rslt ) {
+            my $ref = ref $object;
+            $diag = "$obj_name isn't a '$class' it's a '$ref'";
+        }
+    }
+            
+      
+
+    my $ok;
+    if( $diag ) {
+        $ok = $Test->ok( 0, $name );
+        $Test->diag("    $diag\n");
+    }
+    else {
+        $ok = $Test->ok( 1, $name );
+    }
+
+    return $ok;
+}
+
+
+#line 583
+
+sub pass (;$) {
+    $Test->ok(1, @_);
+}
+
+sub fail (;$) {
+    $Test->ok(0, @_);
+}
+
+#line 627
+
+sub diag {
+    $Test->diag(@_);
+}
+
+
+#line 677
+
+sub use_ok ($;@) {
+    my($module, @imports) = @_;
+    @imports = () unless @imports;
+
+    my $pack = caller;
+
+    local($@,$!);   # eval sometimes interferes with $!
+    eval <<USE;
+package $pack;
+require $module;
+'$module'->import(\@imports);
+USE
+
+    my $ok = $Test->ok( !$@, "use $module;" );
+
+    unless( $ok ) {
+        chomp $@;
+        $Test->diag(<<DIAGNOSTIC);
+    Tried to use '$module'.
+    Error:  $@
+DIAGNOSTIC
+
+    }
+
+    return $ok;
+}
+
+#line 712
+
+sub require_ok ($) {
+    my($module) = shift;
+
+    my $pack = caller;
+
+    local($!, $@); # eval sometimes interferes with $!
+    eval <<REQUIRE;
+package $pack;
+require $module;
+REQUIRE
+
+    my $ok = $Test->ok( !$@, "require $module;" );
+
+    unless( $ok ) {
+        chomp $@;
+        $Test->diag(<<DIAGNOSTIC);
+    Tried to require '$module'.
+    Error:  $@
+DIAGNOSTIC
+
+    }
+
+    return $ok;
+}
+
+#line 796
+
+#'#
+sub skip {
+    my($why, $how_many) = @_;
+
+    unless( defined $how_many ) {
+        # $how_many can only be avoided when no_plan is in use.
+        _carp "skip() needs to know \$how_many tests are in the block"
+          unless $Test::Builder::No_Plan;
+        $how_many = 1;
+    }
+
+    for( 1..$how_many ) {
+        $Test->skip($why);
+    }
+
+    local $^W = 0;
+    last SKIP;
+}
+
+
+#line 874
+
+sub todo_skip {
+    my($why, $how_many) = @_;
+
+    unless( defined $how_many ) {
+        # $how_many can only be avoided when no_plan is in use.
+        _carp "todo_skip() needs to know \$how_many tests are in the block"
+          unless $Test::Builder::No_Plan;
+        $how_many = 1;
+    }
+
+    for( 1..$how_many ) {
+        $Test->todo_skip($why);
+    }
+
+    local $^W = 0;
+    last TODO;
+}
+
+#line 933
+
+use vars qw(@Data_Stack);
+my $DNE = bless [], 'Does::Not::Exist';
+sub is_deeply {
+    my($this, $that, $name) = @_;
+
+    my $ok;
+    if( !ref $this || !ref $that ) {
+        $ok = $Test->is_eq($this, $that, $name);
+    }
+    else {
+        local @Data_Stack = ();
+        if( _deep_check($this, $that) ) {
+            $ok = $Test->ok(1, $name);
+        }
+        else {
+            $ok = $Test->ok(0, $name);
+            $ok = $Test->diag(_format_stack(@Data_Stack));
+        }
+    }
+
+    return $ok;
+}
+
+sub _format_stack {
+    my(@Stack) = @_;
+
+    my $var = '$FOO';
+    my $did_arrow = 0;
+    foreach my $entry (@Stack) {
+        my $type = $entry->{type} || '';
+        my $idx  = $entry->{'idx'};
+        if( $type eq 'HASH' ) {
+            $var .= "->" unless $did_arrow++;
+            $var .= "{$idx}";
+        }
+        elsif( $type eq 'ARRAY' ) {
+            $var .= "->" unless $did_arrow++;
+            $var .= "[$idx]";
+        }
+        elsif( $type eq 'REF' ) {
+            $var = "\${$var}";
+        }
+    }
+
+    my @vals = @{$Stack[-1]{vals}}[0,1];
+    my @vars = ();
+    ($vars[0] = $var) =~ s/\$FOO/     \$got/;
+    ($vars[1] = $var) =~ s/\$FOO/\$expected/;
+
+    my $out = "Structures begin differing at:\n";
+    foreach my $idx (0..$#vals) {
+        my $val = $vals[$idx];
+        $vals[$idx] = !defined $val ? 'undef' : 
+                      $val eq $DNE  ? "Does not exist"
+                                    : "'$val'";
+    }
+
+    $out .= "$vars[0] = $vals[0]\n";
+    $out .= "$vars[1] = $vals[1]\n";
+
+    $out =~ s/^/    /msg;
+    return $out;
+}
+
+
+#line 1007
+
+#'#
+sub eq_array  {
+    my($a1, $a2) = @_;
+    return 1 if $a1 eq $a2;
+
+    my $ok = 1;
+    my $max = $#$a1 > $#$a2 ? $#$a1 : $#$a2;
+    for (0..$max) {
+        my $e1 = $_ > $#$a1 ? $DNE : $a1->[$_];
+        my $e2 = $_ > $#$a2 ? $DNE : $a2->[$_];
+
+        push @Data_Stack, { type => 'ARRAY', idx => $_, vals => [$e1, $e2] };
+        $ok = _deep_check($e1,$e2);
+        pop @Data_Stack if $ok;
+
+        last unless $ok;
+    }
+    return $ok;
+}
+
+sub _deep_check {
+    my($e1, $e2) = @_;
+    my $ok = 0;
+
+    my $eq;
+    {
+        # Quiet uninitialized value warnings when comparing undefs.
+        local $^W = 0; 
+
+        if( $e1 eq $e2 ) {
+            $ok = 1;
+        }
+        else {
+            if( UNIVERSAL::isa($e1, 'ARRAY') and
+                UNIVERSAL::isa($e2, 'ARRAY') )
+            {
+                $ok = eq_array($e1, $e2);
+            }
+            elsif( UNIVERSAL::isa($e1, 'HASH') and
+                   UNIVERSAL::isa($e2, 'HASH') )
+            {
+                $ok = eq_hash($e1, $e2);
+            }
+            elsif( UNIVERSAL::isa($e1, 'REF') and
+                   UNIVERSAL::isa($e2, 'REF') )
+            {
+                push @Data_Stack, { type => 'REF', vals => [$e1, $e2] };
+                $ok = _deep_check($$e1, $$e2);
+                pop @Data_Stack if $ok;
+            }
+            elsif( UNIVERSAL::isa($e1, 'SCALAR') and
+                   UNIVERSAL::isa($e2, 'SCALAR') )
+            {
+                push @Data_Stack, { type => 'REF', vals => [$e1, $e2] };
+                $ok = _deep_check($$e1, $$e2);
+            }
+            else {
+                push @Data_Stack, { vals => [$e1, $e2] };
+                $ok = 0;
+            }
+        }
+    }
+
+    return $ok;
+}
+
+
+#line 1083
+
+sub eq_hash {
+    my($a1, $a2) = @_;
+    return 1 if $a1 eq $a2;
+
+    my $ok = 1;
+    my $bigger = keys %$a1 > keys %$a2 ? $a1 : $a2;
+    foreach my $k (keys %$bigger) {
+        my $e1 = exists $a1->{$k} ? $a1->{$k} : $DNE;
+        my $e2 = exists $a2->{$k} ? $a2->{$k} : $DNE;
+
+        push @Data_Stack, { type => 'HASH', idx => $k, vals => [$e1, $e2] };
+        $ok = _deep_check($e1, $e2);
+        pop @Data_Stack if $ok;
+
+        last unless $ok;
+    }
+
+    return $ok;
+}
+
+#line 1116
+
+# We must make sure that references are treated neutrally.  It really
+# doesn't matter how we sort them, as long as both arrays are sorted
+# with the same algorithm.
+sub _bogus_sort { local $^W = 0;  ref $a ? 0 : $a cmp $b }
+
+sub eq_set  {
+    my($a1, $a2) = @_;
+    return 0 unless @$a1 == @$a2;
+
+    # There's faster ways to do this, but this is easiest.
+    return eq_array( [sort _bogus_sort @$a1], [sort _bogus_sort @$a2] );
+}
+
+#line 1154
+
+sub builder {
+    return Test::Builder->new;
+}
+
+#line 1247
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Bundle.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Bundle.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Bundle.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,55 @@
+# $File: //member/autrijus/.vimrc $ $Author: autrijus $
+# $Revision: #14 $ $Change: 4137 $ $DateTime: 2003/02/08 11:41:59 $
+
+package Module::Install::Admin::Bundle;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+sub bundle {
+    my $self = shift;
+    my $bundle_dir = $self->_top->{bundle};
+
+    require Cwd;
+    require CPANPLUS::Backend;
+
+    my $cwd  = Cwd::getcwd();
+    my $cp   = CPANPLUS::Backend->new;
+    my $conf = $cp->configure_object;
+    my $modtree = $cp->module_tree;
+
+    mkdir $bundle_dir;
+
+    my %bundles;
+    while (my ($name, $version) = splice(@_, 0, 2)) {
+        my $fetch_result = $cp->fetch(
+            modules     => [$name],
+            fetchdir    => $bundle_dir,
+        );
+        my $rv = $fetch_result->rv or next;
+        my $file = $rv->{$name} or next;
+	$file = Cwd::abs_path($file);
+
+        my $extract_result = $cp->extract(
+            files       => [$file],
+            extractdir  => $bundle_dir,
+        );
+
+	unlink $file;
+
+        $rv = $extract_result->rv or next;
+	my $filename = $rv->{$file} or next;
+	$bundles{$name} = $filename;
+    }
+
+    chdir $cwd;
+
+    local *FH;
+    open FH, ">>$bundle_dir.yml" or die $!;
+    foreach my $name (sort keys %bundles) {
+	print FH "$name: '$bundles{$name}'\n";
+    }
+    close FH;
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Find.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Find.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Find.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,77 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Admin/Find.pm $ $Author: autrijus $
+# $Revision: #3 $ $Change: 1375 $ $DateTime: 2003/03/18 12:29:32 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Admin::Find;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict;
+use File::Find ();
+
+sub find_extensions {
+    my $self = shift;
+    $self->_top->find_extensions(@_);
+}
+
+sub find_in_inc {
+    my ($self, $pkg) = @_;
+
+    unless ($pkg =~ /\.pm$/) {
+	$pkg =~ s!::!/!g;
+	$pkg = "$pkg.pm";
+    }
+
+    my @found;
+    foreach my $inc (@INC) {
+	next if $inc eq $self->_top->{prefix} or ref($inc);
+	push @found, "$inc/$pkg" if -f "$inc/$pkg";
+    }
+
+    wantarray ? @found : $found[0];
+}
+
+sub glob_in_inc {
+    my ($self, $pkg) = @_;
+
+    unless ($pkg =~ /\.pm$/) {
+	$pkg =~ s!::!/!g;
+	$pkg = "$pkg.pm";
+    }
+
+    my @found;
+    foreach my $inc (@INC) {
+	next if $inc eq $self->_top->{prefix} or ref($inc);
+	push @found, [ do {
+            my $p = $_;
+            $p =~ s!^\Q$inc\E/!!;
+            $p =~ s!/!::!g;
+            $p =~ s!\.pm\Z!!gi;
+            $p
+        }, $_ ] for grep -e, glob("$inc/$pkg");
+    }
+
+    wantarray ? @found : $found[0];
+}
+
+sub find_files {
+    my ($self, $file, $path) = @_;
+    $path = '' if not defined $path;
+    $file = "$path/$file" if length($path);
+    if (-f $file) {
+        return ($file);
+    }
+    elsif (-d $file) {
+        my @files = ();
+        local *DIR;
+        opendir(DIR, $file) or die "Can't opendir $file";
+        while (my $new_file = readdir(DIR)) {
+            next if $new_file =~ /^(\.|\.\.)$/;
+            push @files, $self->find_files($new_file, $file);
+        }
+        return @files;
+    }
+    return ();
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Include.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Include.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Include.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,41 @@
+# $File: //member/autrijus/.vimrc $ $Author: autrijus $
+# $Revision: #14 $ $Change: 4137 $ $DateTime: 2003/02/08 11:41:59 $
+
+package Module::Install::Admin::Include;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.02';
+
+sub include {
+    my ($self, $pattern) = @_;
+
+    foreach my $rv ( $self->admin->glob_in_inc($pattern) ) {
+        $self->admin->copy_package(@$rv);
+    }
+    return $file;
+}
+
+sub include_deps {
+    my ($self, $pkg) = @_;
+    my $deps = $self->admin->scan_dependencies($pkg) or return;
+
+    foreach my $key (sort keys %$deps) {
+        $self->include($key);
+    }
+}
+
+sub auto_include {
+    my $self = shift;
+    foreach my $module ( map $_->[0], map @$_, grep $_, $self->build_requires ) {
+        $self->include($module);
+    }
+}
+
+sub auto_include_deps {
+    my $self = shift;
+    foreach my $module ( map $_->[0], map @$_, grep $_, $self->build_requires ) {
+        $self->include_deps($module);
+    }
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Makefile.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Makefile.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Makefile.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,50 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Admin/Makefile.pm $ $Author: autrijus $
+# $Revision: #9 $ $Change: 1646 $ $DateTime: 2003/07/16 01:05:17 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Admin::Makefile;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict 'vars';
+use vars '$VERSION';
+
+use ExtUtils::MakeMaker ();
+
+sub postamble {
+    my ($self, $text) = @_;
+    my $class = ref($self);
+    my $top_class = ref($self->_top);
+    my $admin_class = join('::', @{$self->_top}{qw(name dispatch)});
+
+    $self->{postamble} ||= << "END";
+# --- $class section:
+
+realclean purge ::
+\t\$(RM_F) \$(DISTVNAME).tar\$(SUFFIX)
+\t\$(RM_RF) inc MANIFEST.bak _build
+\t\$(PERL) -I. -M$admin_class -e \"remove_meta()\"
+
+reset :: purge
+
+upload :: test dist
+\tcpan-upload -verbose \$(DISTVNAME).tar\$(SUFFIX)
+
+grok ::
+\tperldoc $top_class
+
+distsign ::
+\tcpansign -s
+
+END
+    $self->{postamble} .= $text if defined $text;
+    $self->{postamble};
+}
+
+sub preop {
+    my $self = shift;
+    my $admin_class = join('::', @{$self->_top}{qw(name dispatch)});
+    +{ PREOP => qq{\$(PERL) -I. -M$admin_class -e "dist_preop(q(\$(DISTVNAME)))"} }
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Manifest.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Manifest.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Manifest.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,162 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Admin/Manifest.pm $ $Author: autrijus $
+# $Revision: #19 $ $Change: 1847 $ $DateTime: 2003/12/31 23:14:54 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Admin::Manifest;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict;
+use Cwd;
+use File::Spec;
+
+# XXX I really want this method in Module::Install::Admin::Makefile
+# But you can't call across Admin modules. Autrijus??
+sub dist_preop {
+    my ($self, $distdir) = @_;
+    return if $self->check_manifest;
+
+    print << "END";
+
+It appears that your MANIFEST does not contain the same components that
+are currently in the 'inc' directory. 
+
+Please try running 'make manifest' and then run 'make dist' again.
+
+Remember to use the MANIFEST.SKIP file to control things that should not
+end up in your MANIFEST. See 'perldoc ExtUtils::Manifest' for details.
+
+END
+    return if $self->prompt(
+        'Do you *really* want to continue making a distribution?', 'n'
+    ) =~ /^[Yy]/;
+
+    if (-d $distdir) {
+        require File::Path;
+        File::Path::rmtree($distdir);
+    }
+    exit(1);
+}
+
+# XXX Needs a refactoring.
+sub check_manifest {
+    my $self = shift;
+    my $prefix = $self->_top->{prefix};
+    my ($manifest, $manifest_path, $relative_path) = $self->_read_manifest
+        or return;
+
+    my $manifest_skip = "$manifest_path.SKIP";
+    my @skip;
+
+    if (-f "$manifest_path.SKIP") {
+        open SKIP, $manifest_skip 
+          or die "Can't open $manifest_skip for input:\n$!";
+        @skip = map {chomp; $_} <SKIP>;
+        close SKIP;
+    }
+
+    my %manifest;
+    for (my $i = 0; $i < @$manifest; $i++) {
+        my $path = $manifest->[$i];
+        $path =~ s/\s.*//;
+        $path =~ s/^\.[\\\/]//;
+        $path =~ s/[\\\/]/\//g;
+        next unless $path =~ m!^\Q$prefix\E!i;
+        $manifest{$path} = \$manifest->[$i];
+    }
+
+  ADDLOOP:
+    for my $pathname (sort $self->_find_files($prefix)) {
+        $pathname = "$relative_path/$pathname" if length($relative_path);
+        $pathname =~ s!//+!/!g;
+        next unless -f $pathname;
+
+        if (defined $manifest{$pathname}) {
+            delete $manifest{$pathname};
+        }
+        else {
+            for (@skip) {
+                next ADDLOOP if $pathname =~ /$_/;
+            }
+            return 0;
+        }
+    }
+    if (keys %manifest) {
+        return 0;
+    }
+    return 1;
+}
+
+sub _read_manifest {
+    my $manifest = [];
+    my $manifest_path = '';
+    my $relative_path = '';
+    my @relative_dirs = ();
+    my $cwd = Cwd::cwd();
+    my @cwd_dirs = File::Spec->splitdir($cwd);
+
+    while (@cwd_dirs) {
+        last unless -f File::Spec->catfile(@cwd_dirs, 'Makefile.PL');
+        my $path = File::Spec->catfile(@cwd_dirs, 'MANIFEST');
+        if (-f $path) {
+            $manifest_path = $path;
+            last;
+        }
+        unshift @relative_dirs, pop(@cwd_dirs);
+    }
+
+    unless (length($manifest_path)) {
+        warn "Can't locate the MANIFEST file for '$cwd'\n";
+        return;
+    }
+
+    $relative_path = join '/', @relative_dirs
+        if @relative_dirs;
+
+    local *MANIFEST;
+    open MANIFEST, $manifest_path 
+        or die "Can't open $manifest_path for input:\n$!";
+    @$manifest = map { chomp; $_ } <MANIFEST>;
+    close MANIFEST;
+
+    return ($manifest, $manifest_path, $relative_path);
+}
+
+# XXX I copied this from M::I::A::Find because I can't call that one. Please
+# refactor/fix.
+sub _find_files {
+    my ($self, $file, $path) = @_;
+    $path = '' if not defined $path;
+    $file = "$path/$file" if length($path);
+    if (-f $file) {
+        return ($file);
+    }
+    elsif (-d $file) {
+        my @files = ();
+        local *DIR;
+        opendir(DIR, $file) or die "Can't opendir $file";
+        while (defined(my $new_file = readdir(DIR))) {
+            next if $new_file =~ /^(\.|\.\.)$/;
+            push @files, $self->_find_files($new_file, $file);
+        }
+        return @files;
+    }
+    return ();
+}
+
+1;
+
+__END__
+
+=head1 COPYRIGHT
+
+Copyright 2003, 2004 by
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>,
+Brian Ingerson E<lt>ingy at cpan.orgE<gt>
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Metadata.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Metadata.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Metadata.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,31 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Admin/Manifest.pm $ $Author: autrijus $
+# $Revision: #5 $ $Change: 1263 $ $DateTime: 2003/03/06 02:37:29 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Admin::Metadata;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict;
+
+sub remove_meta {
+    my $self = shift;
+    my $package = ref($self->_top);
+    my $version = $self->_top->VERSION;
+
+    return unless -f 'META.yml';
+    open META, 'META.yml'
+      or die "Can't open META.yml for output:\n$!";
+    my $meta = do {local $/; <META>};
+    close META;
+    return unless $meta =~ /^generated_by: $package version $version/m;
+    unless (-w 'META.yml') {
+        warn "Can't remove META.yml file. Not writable.\n";
+        return;
+    }
+    warn "Removing auto-generated META.yml\n";
+    unlink 'META.yml'
+      or die "Couldn't unlink META.yml:\n$!";
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/ScanDeps.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/ScanDeps.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/ScanDeps.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,72 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Admin/ScanDeps.pm $ $Author: autrijus $
+# $Revision: #16 $ $Change: 1815 $ $DateTime: 2003/12/14 20:41:23 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Admin::ScanDeps;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub scan_dependencies {
+    my ($self, $pkg, $perl_version) = @_;
+
+    return if $pkg eq 'perl';
+
+    $perl_version ||= $self->perl_version or die << '.';
+Please first specify a required perl version, like this:
+    requires( perl => '5.004' );
+.
+    $perl_version =~ s{^(\d+)\.(\d+)\.(\d+)}{$1 + $2/1_000 + $3/1_000_000}e;
+
+    require Module::ScanDeps;
+    require Module::CoreList;
+
+    die "Module::CoreList has no information on perl $perl_version"
+        unless exists $Module::CoreList::version{$perl_version};
+
+    if (my $min_version = Module::CoreList->first_release($pkg)) {
+        return if $min_version <= $perl_version;
+    }
+
+    my @files = scalar $self->admin->find_in_inc($pkg)
+        or die "Cannot find $pkg in \@INC";
+    my %result = ($pkg => $files[0]);
+
+    while (@files) {
+        my $deps = Module::ScanDeps::scan_deps(
+            files   => \@files,
+            recurse => 0,
+        );
+
+        @files = ();
+
+        foreach my $key (keys %$deps) {
+            if ($deps->{$key}{type} eq 'shared') {
+                foreach my $used_by (@{$deps->{$key}{used_by}}) {
+                    $used_by =~ s!/!::!;
+                    $used_by =~ s!\.pm\Z!!i or next;
+                    next if exists $result{$used_by};
+                    $result{$used_by} = undef;
+                    print "skipped $used_by (needs shared library)\n";
+                }
+            }
+
+            my $dep_pkg = $key;
+            $dep_pkg =~ s!/!::!;
+            $dep_pkg =~ s!\.pm\Z!!i or next;
+
+            if (my $min_version = Module::CoreList->first_release($dep_pkg)) {
+                next if $min_version <= $perl_version;
+            }
+            next if $dep_pkg =~ /^(?:DB|(?:Auto|Dyna|XS)Loader|threads|warnings)\b/i;
+            next if exists $result{$dep_pkg};
+
+            $result{$dep_pkg} = $deps->{$key}{file};
+            push @files, $deps->{$key}{file};
+        }
+    }
+
+    while (my($k,$v) = each %result) {
+        delete $result{$k} unless defined $v;
+    }
+    return \%result;
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/WriteAll.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/WriteAll.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/WriteAll.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,41 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Admin/WriteAll.pm $ $Author: autrijus $
+# $Revision: #4 $ $Change: 1821 $ $DateTime: 2003/12/14 21:07:46 $
+
+package Module::Install::Admin::WriteAll;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+sub WriteAll {
+    my ($self, %args) = @_;
+
+    if (-e 'Makefile.PL') {
+	$self->load('Makefile');
+	if ($args{check_nmake}) {
+	    $self->load($_) for qw(Makefile check_nmake can_run get_file);
+	}
+    }
+
+    if (-e 'Build.PL') {
+	$self->load('Build');
+	if ($self->sign and !-e 'MANIFEST.SKIP') {
+	    local *FH;
+	    open FH, '>MANIFEST.SKIP' or die $!;
+	    print FH << '.';
+#defaults
+^Makefile$
+^blib/
+^pm_to_blib$
+^blibdirs$
+^Build$
+^_build/
+.
+	    close FH;
+	    open FH, '>>MANIFEST' or die $!;
+	    print FH "MANIFEST.SKIP";
+	    close FH;
+	}
+    }
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,295 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Admin.pm $ $Author: autrijus $
+# $Revision: #42 $ $Change: 1847 $ $DateTime: 2003/12/31 23:14:54 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Admin;
+$VERSION = '0.29';
+ at ISA = 'Module::Install';
+
+use strict 'vars';
+use File::Path ();
+use inc::Module::Install ();
+
+=head1 NAME
+
+Module::Install::Admin - Author-side manager for Module::Install
+
+=head1 SYNOPSIS
+
+In a B<Module::Install> extension module:
+
+    sub extension_method {
+        my $self = shift;
+        $self->admin->some_method(@args);
+    }
+
+As an one-liner:
+
+    % perl -MModule::Install::Admin -e'&some_method(@args);'
+
+The two snippets above are really shorthands for
+
+    $some_obj->some_method(@args)
+
+where C<$some_obj> is the singleton object of a class under the
+C<Module::Install::Admin::*> namespace that provides the method
+C<some_method>.  See L</METHODS> for a list of built-in methods.
+
+=head1 DESCRIPTION
+
+This module implements the internal mechanism for initializing,
+including and managing extensions, and should only be of interest to
+extension developers; it is I<never> included under a distribution's
+F<inc/> directory, nor are any of the B<Module::Install::Admin::*>
+extensions.
+
+For normal usage of B<Module::Install>, please see L<Module::Install>
+and L<Module::Install-Cookbook> instead.
+
+=head2 Bootstrapping
+
+When someone runs a F<Makefile.PL> that has C<use inc::Module::Install>,
+and there is no F<inc/> in the current directory, B<Module::Install>
+will load this module bootstrap itself, through the steps below:
+
+=over 4
+
+=item *
+
+First, F<Module/Install.pm> is POD-stripped and copied from C<@INC> to
+F<inc/>.  This should only happen on the author's side, never on the
+end-user side.
+
+=item *
+
+Reload F<inc/Module/Install.pm> if the current file is somewhere else.
+This ensures that the included version of F<inc/Module/Install.pm> is
+always preferred over the installed version.
+
+=item *
+
+Look at F<inc/Module/Install/*.pm> and load all of them.
+
+=item *
+
+Set up a C<main::AUTOLOAD> function to delegate missing function calls
+to C<Module::Install::Admin::load> -- again, this should only happen
+at the author's side.
+
+=item *
+
+Provide a C<Module::Install::purge_self> function for removing included
+files under F<inc/>.
+
+=back
+
+=head1 METHODS
+
+=cut
+
+sub import {
+    my $class = shift;
+    my $self = $class->new( _top => Module::Install->new, @_);
+
+    *{caller(0) . "::AUTOLOAD"} = sub {
+        no strict 'vars';
+        $AUTOLOAD =~ /([^:]+)$/ or die "Cannot load";
+        return if uc($1) eq $1;
+        my $obj = $self->load($1) or return;
+        unshift @_, $obj;
+        goto &{$obj->can($1)};
+    }
+}
+
+sub new {
+    my ($class, %args) = @_;
+    return $class->SUPER::new(
+        %{$args{_top}}, %args,
+        extensions  => undef,
+        pathnames   => undef,
+    );
+}
+
+sub init {
+    my $self = shift;
+
+    $self->copy($INC{"$self->{path}.pm"} => $self->{file});
+    # $self->delete_package($self->{name});
+
+    unshift @INC, $self->{prefix}
+        unless grep { $_ eq $self->{prefix} } @INC;
+
+    delete $INC{"$self->{path}.pm"};
+    local $^W;
+    do "$self->{path}.pm";
+}
+
+sub copy {
+    my ($self, $from, $to) = @_;
+
+    my @parts = split('/', $to);
+    File::Path::mkpath([ join('/', @parts[ 0 .. $#parts-1 ])]);
+
+    chomp $to;
+
+    local (*FROM, *TO, $/);
+    open FROM, "< $from" or die "Can't open $from for input:\n$!";
+    my $content = <FROM>;
+    close FROM;
+
+    {
+        local $^W;
+        my $line = 1;
+        $content =~ s{(
+            (.*?)
+            ^=(?:head\d|pod|begin|item|over|for|back|end)\b.*?
+            ^=cut[\t ]*
+            (?:[\r\n])*?
+            (\r?\n)?
+        )}{
+            my ($pre, $post) = ($2, $3);
+            "$pre#line " . (
+                $line += ( () = ( $1 =~ /\n/g ) )
+            ) . $post;
+        }mgsex;
+    }
+
+    open TO, "> $to" or die "Can't open $to for output:\n$!";
+    print TO "#line 1 \"$to - $from\"\n";
+    print TO $content;
+    close TO;
+
+    print "include $to\n";
+}
+
+sub load {
+    my ($self, $method, $copy) = @_;
+
+    # scan through our target to find
+    unless ($self->{extensions}) {
+        $self->{extensions} = [];
+        foreach my $inc (@INC) {
+            next if $inc eq $self->{prefix} or ref($inc);
+            $self->load_extensions("$inc/$self->{path}", $self->{_top});
+        }
+    }
+
+    my @extobj;
+    foreach my $obj (@{$self->{extensions}}) {
+        next unless defined &{ref($obj)."::$method"};
+        my $is_admin = (ref($obj) =~ /^\Q$self->{name}::$self->{dispatch}::/);
+        # Don't ever include admin modules, and vice versa.
+        # $copy = 0 if $XXX and $is_admin;
+        push @extobj, $obj if $copy xor $is_admin;
+    }
+
+    die "Cannot find an extension with method '$method'" unless @extobj;
+
+    my $obj = $self->pick($method, \@extobj);
+
+    # XXX - do we need to reload $obj from the new location?
+    $self->copy_package(ref($obj)) if $copy;
+
+    return $obj;
+}
+
+# Copy a package to inc/, with its @ISA tree. $pathname is optional.
+sub copy_package {
+    my ($self, $pkg, $pathname) = @_;
+    return unless ($pathname ||= $self->{pathnames}{$pkg});
+
+    my $file = $pkg; $file =~ s!::!/!g;
+    $file = "$self->{prefix}/$file.pm";
+    return if -f $file; # prevents infinite recursion
+
+    $self->copy($pathname => $file);
+    foreach my $pkg (@{"$pkg\::ISA"}) {
+        $self->copy_package($pkg);
+    }
+}
+
+sub pick {
+    # determine which name to load
+    my ($self, $method, $objects) = @_;
+
+    # XXX this whole thing needs to be discussed
+    return $objects->[0] unless $#{$objects} > 0 and -t STDIN;
+
+    # sort by last modified time
+    @$objects = map { $_->[0] }
+                sort { $a->[1] <=> $b->[1] }
+                map { [ $_ => -M $self->{pathnames}{ref($_)} ] } @$objects;
+
+    print "Multiple extensions found for method '$method':\n";
+    foreach my $i (1 .. @$objects) {
+        print "\t$i. ", ref($objects->[$i-1]), "\n";
+    }
+
+    while (1) {
+        print "Please select one [1]: ";
+        chomp(my $choice = <STDIN>);
+        $choice ||= 1;
+        return $objects->[$choice-1] if $choice > 0 and $choice <= @$objects;
+        print "Invalid choice.  ";
+    }
+}
+
+sub delete_package {
+    my ($self, $pkg) = @_;
+
+    # expand to full symbol table name if needed
+
+    unless ($pkg =~ /^main::.*::$/) {
+        $pkg = "main$pkg"       if      $pkg =~ /^::/;
+        $pkg = "main::$pkg"     unless  $pkg =~ /^main::/;
+        $pkg .= '::'            unless  $pkg =~ /::$/;
+    }
+
+    my($stem, $leaf) = $pkg =~ m/(.*::)(\w+::)$/;
+    my $stem_symtab = *{$stem}{HASH};
+    return unless defined $stem_symtab and exists $stem_symtab->{$leaf};
+
+    # free all the symbols in the package
+
+    my $leaf_symtab = *{$stem_symtab->{$leaf}}{HASH};
+    foreach my $name (keys %$leaf_symtab) {
+        next if $name eq "$self->{dispatch}::";
+        undef *{$pkg . $name};
+    }
+
+    # delete the symbol table
+
+    foreach my $name (keys %$leaf_symtab) {
+        next if $name eq "$self->{dispatch}::";
+        delete $leaf_symtab->{$name};
+    }
+}
+
+sub AUTOLOAD {
+    my $self = shift;
+    goto &{$self->autoload};
+}
+
+sub DESTROY {}
+
+1;
+
+__END__
+
+=head1 SEE ALSO
+
+L<Module::Install>
+
+=head1 AUTHORS
+
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2003, 2004 by Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/AutoInstall.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/AutoInstall.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/AutoInstall.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,64 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/AutoInstall.pm $ $Author: autrijus $
+# $Revision: #13 $ $Change: 1846 $ $DateTime: 2003/12/31 22:57:12 $ vim: expandtab shiftwidth=4
+
+package Module::Install::AutoInstall;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub AutoInstall { $_[0] }
+
+sub run {
+    my $self = shift;
+    $self->auto_install_now(@_);
+}
+
+sub write {
+    my $self = shift;
+    $self->auto_install(@_);
+}
+
+sub auto_install {
+    my $self = shift;
+    return if $self->{done}++;
+
+# ExtUtils::AutoInstall Bootstrap Code, version 7.
+AUTO:{my$p='ExtUtils::AutoInstall';my$v=0.49;$p->VERSION||0>=$v
+or+eval"use $p $v;1"or+do{my$e=$ENV{PERL_EXTUTILS_AUTOINSTALL};
+(!defined($e)||$e!~m/--(?:default|skip|testonly)/and-t STDIN or
+eval"use ExtUtils::MakeMaker;WriteMakefile(PREREQ_PM=>{'$p',$v}
+);1"and exit)and print"==> $p $v required. Install it from CP".
+"AN? [Y/n] "and<STDIN>!~/^n/i and print"*** Installing $p\n"and
+do{if (eval '$>' and lc(`sudo -V`) =~ /version/){system('sudo',
+$^X,"-MCPANPLUS","-e","CPANPLUS::install $p");eval"use $p $v;1"
+||system('sudo', $^X, "-MCPAN", "-e", "CPAN::install $p")}eval{
+require CPANPLUS;CPANPLUS::install$p};eval"use $p $v;1"or eval{
+require CPAN;CPAN::install$p};eval"use $p $v;1"||die"*** Please
+manually install $p $v from cpan.org first...\n"}}}
+
+    # Flatten array of arrays into a single array
+    my @core = map @$_, map @$_, grep ref,
+               $self->build_requires, $self->requires;
+
+    while ( @core and @_ > 1 and $_[0] =~ /^-\w+$/ ) {
+        push @core, splice(@_, 0, 2);
+    }
+
+    ExtUtils::AutoInstall->import(
+        (@core ? (-core => \@core) : ()), @_, $self->features
+    );
+
+    $self->makemaker_args( ExtUtils::AutoInstall::_make_args() );
+
+    my $class = ref($self);
+    $self->postamble(
+        "# --- $class section:\n" .
+        ExtUtils::AutoInstall::postamble()
+    );
+}
+
+sub auto_install_now {
+    my $self = shift;
+    $self->auto_install;
+    ExtUtils::AutoInstall::do_install();
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Base.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Base.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Base.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,114 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Base.pm $ $Author: autrijus $
+# $Revision: #10 $ $Change: 1847 $ $DateTime: 2003/12/31 23:14:54 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Base;
+
+=head1 NAME
+
+Module::Install::Base - Base class for Module::Install extensions
+
+=head1 SYNOPSIS
+
+In a B<Module::Install> extension:
+
+    use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+=head1 DESCRIPTION
+
+This module provide essential methods for all B<Module::Install>
+extensions, in particular the common constructor C<new> and method
+dispatcher C<AUTOLOAD>.
+
+=head1 METHODS
+
+=over 4
+
+=item new(%args)
+
+Constructor -- need to preserve at least _top
+
+=cut
+
+sub new {
+    my ($class, %args) = @_;
+
+    foreach my $method (qw(call load)) {
+        *{"$class\::$method"} = sub {
+            +shift->_top->$method(@_);
+        } unless defined &{"$class\::$method"};
+    }
+
+    bless(\%args, $class);
+}
+
+=item AUTOLOAD
+
+The main dispatcher - copy extensions if missing
+
+=cut
+
+sub AUTOLOAD {
+    my $self = shift;
+    goto &{$self->_top->autoload};
+}
+
+=item _top()
+
+Returns the top-level B<Module::Install> object.
+
+=cut
+
+sub _top { $_[0]->{_top} }
+
+=item admin()
+
+Returns the C<_top> object's associated B<Module::Install::Admin> object
+on the first run (i.e. when there was no F<inc/> when the program
+started); on subsequent (user-side) runs, returns a fake admin object
+with an empty C<AUTOLOAD> method that does nothing at all.
+
+=cut
+
+sub admin {
+    my $self = shift;
+    $self->_top->{admin} or Module::Install::Base::FakeAdmin->new;
+}
+
+sub is_admin {
+    my $self = shift;
+    $self->admin->VERSION;
+}
+
+sub DESTROY {}
+
+package Module::Install::Base::FakeAdmin;
+
+my $Fake;
+sub new { $Fake ||= bless(\@_, $_[0]) }
+sub AUTOLOAD {}
+sub DESTROY {}
+
+1;
+
+__END__
+
+=back
+
+=head1 SEE ALSO
+
+L<Module::Install>
+
+=head1 AUTHORS
+
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2003, 2004 by Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Build.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Build.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Build.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,177 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Build.pm $ $Author: ingy $
+# $Revision: #23 $ $Change: 1255 $ $DateTime: 2003/03/05 13:23:32 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Build;
+$VERSION = '0.01';
+use strict;
+use vars qw(@ISA);
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub Build { $_[0] }
+
+sub write {
+    my $self = shift;
+    die "Build->write() takes no arguments\n" if @_;
+
+    my %args;
+    my $build;
+
+    $args{dist_name} = $self->name || $self->determine_NAME($self->{args});
+    $args{license} = $self->license;
+    $args{dist_version} = $self->version || $self->determine_VERSION($self->{args});
+    $args{dist_abstract} = $self->abstract;
+    $args{dist_author} = $self->author;
+    $args{sign} = $self->sign;
+    $args{no_index} = $self->no_index;
+
+    foreach my $key (qw(build_requires requires recommends conflicts)) {
+        my $val = eval "\$self->$key" or next;
+        $args{$key} = { map @$_, @$val };
+    }
+
+    %args = map {($_, $args{$_})} grep {defined($args{$_})} keys %args;
+
+    require Module::Build;
+    $build = Module::Build->new(%args);
+    $build->add_to_cleanup(split /\s+/, $self->clean_files);
+    $build->create_build_script;
+}
+
+sub ACTION_reset {
+    my ($self) = @_;
+    die "XXX - Can't get this working yet";
+    require File::Path;
+    warn "Removing inc\n";
+    rmpath('inc');
+}
+
+sub ACTION_dist {
+    my ($self) = @_;
+    die "XXX - Can't get this working yet";
+}
+
+# <ingy> DrMath: is there an OO way to add actions to Module::Build??
+# <DrMath> ingy: yeah
+# <DrMath> ingy: package MyBuilder; use w(Module::Build; @ISA = qw(w(Module::Build); sub ACTION_ingy
+#           {...}
+# <DrMath> ingy: then my $build = new MyBuilder( ...parameters... );
+#           $build->write_build_script;
+
+
+1;
+
+__END__
+
+=head1 NAME
+
+Module::Install::Build - Extension Rules for Module::Build
+
+=head1 VERSION
+
+This document describes version 0.01 of Module::Install::Build, released
+March 1, 2003.
+
+=head1 SYNOPSIS
+
+In your F<Makefile.PL>:
+
+    use inc::Module::Install;
+    &Build->write;
+
+=head1 DESCRIPTION
+
+This module is a wrapper around B<Module::Build>.
+
+The C<&Build->write> function will pass on keyword/value pair functions
+to C<Module::Build::create_build_script>.
+
+=head2 VERSION
+
+B<Module::Build> requires either the C<VERSION> or C<VERSION_FROM>
+parameter.  If this module can guess the package's C<NAME>, it will attempt
+to parse the C<VERSION> from it.
+
+If this module can't find a default for C<VERSION> it will ask you to
+specify it manually.
+
+=head1 MAKE TARGETS
+
+B<Module::Build> provides you with many useful C<make> targets. A
+C<make> B<target> is the word you specify after C<make>, like C<test>
+for C<make test>. Some of the more useful targets are:
+
+=over 4
+
+=item * all
+
+This is the default target. When you type C<make> it is the same as
+entering C<make all>. This target builds all of your code and stages it
+in the C<blib> directory.
+
+=item * test
+
+Run your distribution's test suite.
+
+=item * install
+
+Copy the contents of the C<blib> directory into the appropriate
+directories in your Perl installation.
+
+=item * dist
+
+Create a distribution tarball, ready for uploading to CPAN or sharing
+with a friend.
+
+=item * clean distclean purge
+
+Remove the files created by C<perl Makefile.PL> and C<make>.
+
+=item * help
+
+Same as typing C<perldoc Module::Build>.
+
+=back
+
+This module modifies the behaviour of some of these targets, depending
+on your requirements, and also adds the following targets to your Makefile:
+
+=over 4
+
+=item * cpurge
+
+Just like purge, except that it also deletes the files originally added
+by this module itself.
+
+=item * chelp
+
+Short cut for typing C<perldoc Module::Install>.
+
+=item * distsign
+
+Short cut for typing C<cpansign -s>, for B<Module::Signature> users to
+sign the distribution before release.
+
+=back
+
+=head1 SEE ALSO
+
+L<Module::Install>, L<CPAN::MakeMaker>, L<CPAN::MakeMaker-Philosophy>
+
+=head1 AUTHORS
+
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+
+Based on original works by Brian Ingerson E<lt>INGY at cpan.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2002, 2003, 2004 by
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>,
+Brian Ingerson E<lt>ingy at cpan.orgE<gt>
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Bundle.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Bundle.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Bundle.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,171 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Bundle.pm $ $Author: autrijus $
+# $Revision: #7 $ $Change: 1847 $ $DateTime: 2003/12/31 23:14:54 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Bundle;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+use strict;
+use Cwd ();
+use File::Find ();
+use File::Copy ();
+use File::Basename ();
+
+sub auto_bundle {
+    my $self = shift;
+
+    # Flatten array of arrays into a single array
+    my @core = map @$_, map @$_, grep ref, $self->requires;
+
+    $self->bundle(@core);
+}
+
+sub bundle {
+    my $self = shift;
+    $self->admin->bundle(@_) if $self->is_admin;
+
+    my $cwd = Cwd::cwd();
+    my $bundles = $self->read_bundles;
+    my $bundle_dir = $self->_top->{bundle};
+    $bundle_dir =~ s/\W+/\\W+/g;
+
+    while (my ($name, $version) = splice(@_, 0, 2)) {
+        next if eval "use $name $version; 1";
+        my $source = $bundles->{$name} or next;
+        my $target = File::Basename::basename($source);
+        mkdir $target or die $! unless -d $target;
+
+        # XXX - clean those directories upon "make clean"?
+        File::Find::find({
+            wanted => sub {
+                my $out = $_;
+                $out =~ s/$bundle_dir/./i;
+                mkdir $out if -d;
+                File::Copy::copy($_ => $out) unless -d;
+            },
+            no_chdir => 1,
+        }, $source);
+
+        $self->bundles($name, $target);
+    }
+
+    chdir $cwd;
+}
+
+sub read_bundles {
+    my $self = shift;
+    my %map;
+
+    local *FH;
+    open FH, $self->_top->{bundle} . ".yml" or return {};
+    while (<FH>) {
+        /^(.*?): (['"])?(.*?)\2$/ or next;
+        $map{$1} = $3;
+    }
+    close FH;
+
+    return \%map;
+}
+
+sub bundle_deps {
+    my ($self, $pkg, $version) = @_;
+    my $deps = $self->admin->scan_dependencies($pkg) or return;
+
+    foreach my $key (sort keys %$deps) {
+        $self->bundle($key, ($key eq $pkg) ? $version : 0);
+    }
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Module::Install::Bundle - Bundle distributions along with your distribution
+
+=head1 SYNOPSIS
+
+Have your Makefile.PL read as follows:
+
+  use inc::Module::Install;
+
+  name("Foo-Bar");
+  version_from("lib/Foo/Bar.pm");
+  abstract("Description of your distribution");
+  author("Your Name <your at email.com>");
+  license("gpl"); # or "perl", etc
+  requires("Baz" => "1.60");
+
+  # one of either:
+  auto_bundle(); # OR
+  bundle("Baz" => "1.60");
+
+  &WriteAll;
+
+=head1 DESCRIPTION
+
+Module::Install::Bundle allows you to bundle a CPAN distribution within your
+distribution. When your end-users install your distribution, the bundled
+distribution will be installed along with yours, unless a newer version of the
+bundled distribution already exists on their local filesystem.
+
+While bundling will increase the size of your distribution, it has several
+benefits:
+
+  Allows installation of bundled distributions when CPAN is unavailable
+  Allows installation of bundled distributions when networking is unavailable
+  Allows everything your distribution needs to be packaged in one place
+
+Bundling differs from auto-installation in that when it comes time to
+install, a bundled distribution will be installed based on the distribution
+bundled with your distribution, whereas with auto-installation the distibution
+to be installed will be acquired from CPAN and then installed.
+
+=head1 METHODS
+
+=over 4
+
+=item * auto_bundle()
+
+Takes no arguments, will bundle every distribution specified by a C<requires()>.
+When you, as a module author, do a C<perl Makefile.PL> the latest versions of the
+distributions to be bundled will be acquired from CPAN and placed in
+F<inc/BUNDLES/>.
+
+=item * bundle($name, $version)
+
+Takes a list of key/value pairs specifying a distribution name and version
+number. When you, as a module author, do a perl Makefile.PL the distributions
+that you specified with C<bundle()> will be acquired from CPAN and placed in
+F<inc/BUNDLES/>.
+
+=item * bundle_deps($name, $version)
+
+Same as C<bundle>, except that all dependencies of the bundled modules are
+also detected and bundled.  To use this function, you need to declare the
+minimum supported perl version first, like this:
+
+    requires( perl => 5.005 );
+
+=back
+
+=head1 BUGS
+
+Please report any bugs to (patches welcome):
+
+    http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Module-Install
+
+=head1 AUTHORS
+
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+
+Documentation by Adam Foxson E<lt>afoxson at pobox.comE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2003, 2004 by Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>.
+
+This program is free software; you can redistribute it and/or modify it under
+the same terms as Perl itself.
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Can.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Can.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Can.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,40 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Can.pm $ $Author: autrijus $
+# $Revision: #6 $ $Change: 1840 $ $DateTime: 2003/12/28 19:42:02 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Can;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+$VERSION = '0.01';
+
+use strict;
+use Config ();
+use File::Spec ();
+use ExtUtils::MakeMaker ();
+
+# check if we can run some command
+sub can_run {
+    my ($self, $cmd) = @_;
+
+    my $_cmd = $cmd;
+    return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
+
+    for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
+        my $abs = File::Spec->catfile($dir, $_[1]);
+        return $abs if (-x $abs or $abs = MM->maybe_command($abs));
+    }
+
+    return;
+}
+
+sub can_cc {
+    my $self = shift;
+    my @chunks = split(/ /, $Config::Config{cc}) or return;
+
+    # $Config{cc} may contain args; try to find out the program part
+    while (@chunks) {
+        return $self->can_run("@chunks") || (pop(@chunks), next);
+    }
+
+    return;
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Fetch.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Fetch.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Fetch.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,88 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Fetch.pm $ $Author: autrijus $
+# $Revision: #8 $ $Change: 1374 $ $DateTime: 2003/03/18 11:50:15 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Fetch;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+sub get_file {
+    my ($self, %args) = @_;
+    my ($scheme, $host, $path, $file) = 
+        $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
+
+    if ($scheme eq 'http' and !eval { require LWP::Simple; 1 }) {
+        $args{url} = $args{ftp_url}
+            or (warn("LWP support unavailable!\n"), return);
+        ($scheme, $host, $path, $file) = 
+            $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
+    }
+
+    $|++;
+    print "Fetching '$file' from $host... ";
+
+    unless (eval { require Socket; Socket::inet_aton($host) }) {
+        warn "'$host' resolve failed!\n";
+        return;
+    }
+
+    return unless $scheme eq 'ftp' or $scheme eq 'http';
+
+    require Cwd;
+    my $dir = Cwd::getcwd();
+    chdir $args{local_dir} or return if exists $args{local_dir};
+
+    if (eval { require LWP::Simple; 1 }) {
+        LWP::Simple::mirror($args{url}, $file);
+    }
+    elsif (eval { require Net::FTP; 1 }) { eval {
+        # use Net::FTP to get past firewall
+        my $ftp = Net::FTP->new($host, Passive => 1, Timeout => 600);
+        $ftp->login("anonymous", 'anonymous at example.com');
+        $ftp->cwd($path);
+        $ftp->binary;
+        $ftp->get($file) or (warn("$!\n"), return);
+        $ftp->quit;
+    } }
+    elsif (my $ftp = $self->can_run('ftp')) { eval {
+        # no Net::FTP, fallback to ftp.exe
+        require FileHandle;
+        my $fh = FileHandle->new;
+
+        local $SIG{CHLD} = 'IGNORE';
+        unless ($fh->open("|$ftp -n")) {
+            warn "Couldn't open ftp: $!\n";
+            chdir $dir; return;
+        }
+
+        my @dialog = split(/\n/, << ".");
+open $host
+user anonymous anonymous\@example.com
+cd $path
+binary
+get $file $file
+quit
+.
+        foreach (@dialog) { $fh->print("$_\n") }
+        $fh->close;
+    } }
+    else {
+        warn "No working 'ftp' program available!\n";
+        chdir $dir; return;
+    }
+
+    unless (-f $file) {
+        warn "Fetching failed: $@\n";
+        chdir $dir; return;
+    }
+
+    return if exists $args{size} and -s $file != $args{size};
+    system($args{run}) if exists $args{run};
+    unlink($file) if $args{remove};
+
+    print(((!exists $args{check_for} or -e $args{check_for})
+        ? "done!" : "failed! ($!)"), "\n");
+    chdir $dir; return !$?;
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Include.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Include.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Include.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,12 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Include.pm $ $Author: autrijus $
+# $Revision: #9 $ $Change: 2288 $ $DateTime: 2004/07/01 04:49:12 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Include;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub include { +shift->admin->include(@_) };
+sub include_deps { +shift->admin->include_deps(@_) };
+sub auto_include { +shift->admin->auto_include(@_) };
+sub auto_include_deps { +shift->admin->auto_include_deps(@_) };
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Inline.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Inline.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Inline.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,47 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Inline.pm $ $Author: autrijus $
+# $Revision: #7 $ $Change: 1885 $ $DateTime: 2004/03/11 05:55:27 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Inline;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict;
+
+sub Inline { $_[0] }
+
+sub write {
+    my $self = shift;
+    my $name = $self->module_name || $self->name
+        or die "Please set name() before calling &Inline->write\n";
+    $name =~ s/-/::/g;
+    my $object = (split(/::/, $name))[-1] or return;
+    my $version = $self->version
+        or die "Please set version() or version_from() before calling &Inline->write\n";
+
+    $version =~ /^\d\.\d\d$/ or die << "END";
+Invalid version '$version' for $name.
+Must be of the form '#.##'. (For instance '1.23')
+END
+
+    $self->clean_files('_Inline', "$object.inl");
+    $self->build_requires('Inline' => 0.44); # XXX: check for existing? yagni?
+
+    my $class = ref($self);
+    my $prefix = $self->_top->{prefix};
+    $self->postamble(<<"MAKEFILE");
+# --- $class section:
+
+.SUFFIXES: .pm .inl
+
+.pm.inl:
+\t\$(PERL) -I$prefix -Mblib -MInline=NOISY,_INSTALL_ -M$name -e1 $version \$(INST_ARCHLIB)
+
+pure_all :: $object.inl
+
+MAKEFILE
+
+    $self->Makefile->write;
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/MakeMaker.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/MakeMaker.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/MakeMaker.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,45 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/MakeMaker.pm $ $Author: autrijus $
+# $Revision: #11 $ $Change: 1781 $ $DateTime: 2003/10/22 17:14:03 $ vim: expandtab shiftwidth=4
+
+package Module::Install::MakeMaker;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use ExtUtils::MakeMaker ();
+
+my $makefile;
+sub WriteMakefile {
+    my ($self, %args) = @_;
+    $makefile = $self->load('Makefile');
+
+    # mapping between MakeMaker and META.yml keys
+    $args{MODULE_NAME} = $args{NAME};
+    unless ($args{NAME} = $args{DISTNAME} or !$args{MODULE_NAME}) {
+        $args{NAME} = $args{MODULE_NAME};
+        $args{NAME} =~ s/::/-/g;
+    }
+
+    foreach my $key (qw(name module_name version version_from abstract author)) {
+        my $value = delete($args{uc($key)}) or next;
+        $self->$key($value);
+    }
+
+    if (my $prereq = delete($args{PREREQ_PM})) {
+        while (my($k,$v) = each %$prereq) {
+            $self->requires($k,$v);
+        }
+    }
+
+    # put the remaining args to makemaker_args
+    $self->makemaker_args(%args);
+}
+
+END {
+    if ($makefile) {
+        $makefile->write;
+        $makefile->Meta->write;
+    }
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Name.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Name.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Name.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,40 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Makefile/Name.pm $ $Author: autrijus $
+# $Revision: #11 $ $Change: 1645 $ $DateTime: 2003/07/16 01:05:06 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Makefile::Name;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict;
+
+sub determine_NAME {
+    my $self = shift;
+    my @modules = glob('*.pm');
+
+    require File::Find;
+    File::Find::find(sub { push @modules, $File::Find::name if /\.pm/i }, 'lib');
+
+    if (@modules == 1) {
+        local *MODULE;
+        open MODULE, $modules[0] or die $!;
+        while (<MODULE>) {
+            next if /^\s*(?:#|$)/;
+            $self->module_name($1) if /^\s*package\s+(\w[\w:]*)\s*;\s*$/;
+            last;
+        }
+    }
+
+    return if $self->module_name;
+
+    my $name = MM->guess_name or die <<"END";
+Can't determine a NAME for this distribution.
+Please use the 'name' function in Makefile.PL.
+END
+
+    $name =~ s/-/::/g;
+    $self->module_name($name);
+    return $name;
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Version.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Version.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Version.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,35 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Makefile/Version.pm $ $Author: autrijus $
+# $Revision: #14 $ $Change: 1648 $ $DateTime: 2003/07/16 01:09:42 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Makefile::Version;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict;
+
+sub determine_VERSION {
+    my $self = shift;
+    my @modules = glob('*.pm');
+
+    require File::Find;
+    File::Find::find(sub { push @modules, $File::Find::name =~ /\.pm\z/i }, 'lib');
+
+    if (@modules == 1) {
+        eval {
+            $self->version(ExtUtils::MM_Unix->parse_version($modules[0]));
+        };
+        print STDERR $@ if $@;
+    }
+    elsif (my $file = "lib/" . $self->name . ".pm") {
+        $file =~ s!-!/!g;
+        $self->version(ExtUtils::MM_Unix->parse_version($file)) if -f $file;
+    }
+
+    $self->version or die << "END";
+Can't determine a VERSION for this distribution.
+Please call the 'version' or 'version_from' function in Makefile.PL.
+END
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,275 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Makefile.pm $ $Author: autrijus $
+# $Revision: #53 $ $Change: 1847 $ $DateTime: 2003/12/31 23:14:54 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Makefile;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict 'vars';
+use vars '$VERSION';
+
+use ExtUtils::MakeMaker ();
+
+sub Makefile { $_[0] }
+
+sub prompt { 
+    shift;
+    goto &ExtUtils::MakeMaker::prompt;
+}
+
+sub makemaker_args {
+    my $self = shift;
+    my $args = ($self->{makemaker_args} ||= {});
+    %$args = ( %$args, @_ ) if @_;
+    $args;
+}
+
+sub clean_files {
+    my $self = shift;
+    my $clean = $self->makemaker_args->{clean} ||= {};
+    %$clean = (
+        %$clean, 
+        FILES => join(" ", grep length, $clean->{FILES}, @_),
+    );
+}
+
+sub libs {
+    my $self = shift;
+    my $libs = ref $_[0] ? shift : [shift];
+    $self->makemaker_args( LIBS => $libs );
+}
+
+sub inc {
+    my $self = shift;
+    $self->makemaker_args( INC => shift );
+}
+
+sub write {
+    my $self = shift;
+    die "&Makefile->write() takes no arguments\n" if @_;
+
+    my $args = $self->makemaker_args;
+
+    $args->{DISTNAME} = $self->name;
+    $args->{NAME} = $self->module_name || $self->name || $self->determine_NAME($args);
+    $args->{VERSION} = $self->version || $self->determine_VERSION($args);
+    $args->{NAME} =~ s/-/::/g;
+
+    if ($] >= 5.005) {
+	$args->{ABSTRACT} = $self->abstract;
+	$args->{AUTHOR} = $self->author;
+    }
+    if ( eval($ExtUtils::MakeMaker::VERSION) >= 6.10 ) {
+        $args->{NO_META} = 1;
+    }
+    if ( eval($ExtUtils::MakeMaker::VERSION) > 6.17 ) {
+	$args->{SIGN} = 1 if $self->sign;
+    }
+    delete $args->{SIGN} unless $self->is_admin;
+
+    # merge both kinds of requires into prereq_pm
+    my $prereq = ($args->{PREREQ_PM} ||= {});
+    %$prereq = ( %$prereq, map { @$_ } map { @$_ } grep $_,
+                 ($self->build_requires, $self->requires) );
+
+    # merge both kinds of requires into prereq_pm
+    my $dir = ($args->{DIR} ||= []);
+    if ($self->bundles) {
+        push @$dir, map "$_->[1]", @{$self->bundles};
+        delete $prereq->{$_->[0]} for @{$self->bundles};
+    }
+
+    if (my $perl_version = $self->perl_version) {
+        eval "use $perl_version; 1"
+            or die "ERROR: perl: Version $] is installed, ".
+                   "but we need version >= $perl_version";
+    }
+
+    my %args = map {($_ => $args->{$_})} grep {defined($args->{$_})} keys %$args;
+
+    if ($self->admin->preop) {
+        $args{dist} = $self->admin->preop;
+    }
+
+    ExtUtils::MakeMaker::WriteMakefile(%args);
+
+    $self->fix_up_makefile();
+}
+
+sub fix_up_makefile {
+    my $self = shift;
+    my $top_class = ref($self->_top) || '';
+    my $top_version = $self->_top->VERSION || '';
+
+    my $preamble = $self->preamble 
+       ? "# Preamble by $top_class $top_version\n" . $self->preamble
+       : '';
+    my $postamble = "# Postamble by $top_class $top_version\n" . 
+                    ($self->postamble || '');
+
+    open MAKEFILE, '< Makefile' or die $!;
+    my $makefile = do { local $/; <MAKEFILE> };
+    close MAKEFILE;
+
+    $makefile =~ s/\b(test_harness\(\$\(TEST_VERBOSE\), )/$1'inc', /;
+    $makefile =~ s/( -I\$\(INST_ARCHLIB\))/ -Iinc$1/g;
+    $makefile =~ s/( "-I\$\(INST_LIB\)")/ "-Iinc"$1/g;
+
+    $makefile =~ s/^(FULLPERL = .*)/$1 -Iinc/m;
+    $makefile =~ s/^(PERL = .*)/$1 -Iinc/m;
+
+    open MAKEFILE, '> Makefile' or die $!;
+    print MAKEFILE "$preamble$makefile$postamble";
+    close MAKEFILE;
+}
+
+sub preamble {
+    my ($self, $text) = @_;
+    $self->{preamble} = $text . $self->{preamble} if defined $text;
+    $self->{preamble};
+}
+
+sub postamble {
+    my ($self, $text) = @_;
+
+    $self->{postamble} ||= $self->admin->postamble;
+    $self->{postamble} .= $text if defined $text;
+    $self->{postamble}
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+Module::Install::MakeMaker - Extension Rules for ExtUtils::MakeMaker
+
+=head1 VERSION
+
+This document describes version 0.01 of Module::Install::MakeMaker, released
+March 1, 2003.
+
+=head1 SYNOPSIS
+
+In your F<Makefile.PL>:
+
+    use inc::Module::Install;
+    WriteMakefile();
+
+=head1 DESCRIPTION
+
+This module is a wrapper around B<ExtUtils::MakeMaker>.  It exports
+two functions: C<prompt> (an alias for C<ExtUtils::MakeMaker::prompt>)
+and C<WriteMakefile>.
+
+The C<WriteMakefile> function will pass on keyword/value pair functions
+to C<ExtUtils::MakeMaker::WriteMakefile>. The required parameters
+C<NAME> and C<VERSION> (or C<VERSION_FROM>) are not necessary if
+it can find them unambiguously in your code.
+
+=head1 CONFIGURATION OPTIONS
+
+This module also adds some Configuration parameters of its own:
+
+=head2 NAME
+
+The NAME parameter is required by B<ExtUtils::MakeMaker>. If you have a
+single module in your distribution, or if the module name indicated by
+the current directory exists under F<lib/>, this module will use the
+guessed package name as the default.
+
+If this module can't find a default for C<NAME> it will ask you to specify
+it manually.
+
+=head2 VERSION
+
+B<ExtUtils::MakeMaker> requires either the C<VERSION> or C<VERSION_FROM>
+parameter.  If this module can guess the package's C<NAME>, it will attempt
+to parse the C<VERSION> from it.
+
+If this module can't find a default for C<VERSION> it will ask you to
+specify it manually.
+
+=head1 MAKE TARGETS
+
+B<ExtUtils::MakeMaker> provides you with many useful C<make> targets. A
+C<make> B<target> is the word you specify after C<make>, like C<test>
+for C<make test>. Some of the more useful targets are:
+
+=over 4
+
+=item * all
+
+This is the default target. When you type C<make> it is the same as
+entering C<make all>. This target builds all of your code and stages it
+in the C<blib> directory.
+
+=item * test
+
+Run your distribution's test suite.
+
+=item * install
+
+Copy the contents of the C<blib> directory into the appropriate
+directories in your Perl installation.
+
+=item * dist
+
+Create a distribution tarball, ready for uploading to CPAN or sharing
+with a friend.
+
+=item * clean distclean purge
+
+Remove the files created by C<perl Makefile.PL> and C<make>.
+
+=item * help
+
+Same as typing C<perldoc ExtUtils::MakeMaker>.
+
+=back
+
+This module modifies the behaviour of some of these targets, depending
+on your requirements, and also adds the following targets to your Makefile:
+
+=over 4
+
+=item * cpurge
+
+Just like purge, except that it also deletes the files originally added
+by this module itself.
+
+=item * chelp
+
+Short cut for typing C<perldoc Module::Install>.
+
+=item * distsign
+
+Short cut for typing C<cpansign -s>, for B<Module::Signature> users to
+sign the distribution before release.
+
+=back
+
+=head1 SEE ALSO
+
+L<Module::Install>, L<CPAN::MakeMaker>, L<CPAN::MakeMaker-Philosophy>
+
+=head1 AUTHORS
+
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+
+Based on original works by Brian Ingerson E<lt>INGY at cpan.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2002, 2003, 2004 by
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>,
+Brian Ingerson E<lt>ingy at cpan.orgE<gt>
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Metadata.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Metadata.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Metadata.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,189 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Metadata.pm $ $Author: autrijus $
+# $Revision: #32 $ $Change: 1885 $ $DateTime: 2004/03/11 05:55:27 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Metadata;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.04';
+
+use strict 'vars';
+use vars qw($VERSION);
+
+sub Meta { shift }
+
+my @scalar_keys = qw(
+    name module_name version abstract author license
+    distribution_type sign perl_version
+);
+my @tuple_keys  = qw(build_requires requires recommends bundles);
+
+foreach my $key (@scalar_keys) {
+    *$key = sub {
+        my $self = shift;
+        return $self->{'values'}{$key} unless @_;
+        $self->{'values'}{$key} = shift;
+        return $self;
+    };
+}
+
+foreach my $key (@tuple_keys) {
+    *$key = sub {
+        my $self = shift;
+        return $self->{'values'}{$key} unless @_;
+        my @rv;
+        while (@_) {
+            my $module  = shift or last;
+            my $version = shift || 0;
+            if ($module eq 'perl') {
+                $version =~ s{^(\d+)\.(\d+)\.(\d+)}
+                             {$1 + $2/1_000 + $3/1_000_000}e;
+                $self->perl_version($version);
+                next;
+            }
+            my $rv = [$module, $version];
+            push @{$self->{'values'}{$key}}, $rv;
+            push @rv, $rv;
+        }
+        return @rv;
+    };
+}
+
+sub features {
+    my $self = shift;
+    while (my ($name, $mods) = splice(@_, 0, 2)) {
+        my $count = 0;
+        push @{$self->{'values'}{'features'}}, ($name => [
+            map { (++$count % 2 and ref($_) and ($count += $#$_)) ? @$_ : $_ } @$mods
+        ] );
+    }
+    return @{$self->{'values'}{'features'}};
+}
+
+sub no_index {
+    my $self = shift;
+    my $type = shift;
+    push @{$self->{'values'}{'no_index'}{$type}}, @_ if $type;
+    return $self->{'values'}{'no_index'};
+}
+
+sub _dump {
+    my $self = shift;
+    my $package = ref($self->_top);
+    my $version = $self->_top->VERSION;
+    my %values = %{$self->{'values'}};
+
+    delete $values{sign};
+    if (my $perl_version = delete $values{perl_version}) {
+        # Always canonical to three-dot version 
+        $perl_version =~ s{^(\d+)\.(\d\d\d)(\d*)}{join('.', $1, int($2), int($3))}e
+            if $perl_version >= 5.006;
+        $values{requires} = [
+            [perl => $perl_version],
+            @{$values{requires}||[]},
+        ];
+    }
+
+    warn "No license specified, setting license = 'unknown'\n"
+        unless $values{license};
+
+    $values{license} ||= 'unknown';
+    $values{distribution_type} ||= 'module';
+    $values{name} ||= do {
+        my $name = $values{module_name};
+        $name =~ s/::/-/g;
+        $name;
+    } if $values{module_name};
+
+    if ($values{name} =~ /::/) {
+        my $name = $values{name};
+        $name =~ s/::/-/g;
+        die "Error in name(): '$values{name}' should be '$name'!\n";
+    }
+
+    my $dump = '';
+    foreach my $key (@scalar_keys) {
+        $dump .= "$key: $values{$key}\n" if exists $values{$key};
+    }
+    foreach my $key (@tuple_keys) {
+        next unless exists $values{$key};
+        $dump .= "$key:\n";
+        foreach (@{$values{$key}}) {
+            $dump .= "  $_->[0]: $_->[1]\n";
+        }
+    }
+
+    if (my $no_index = $values{no_index}) {
+        push @{$no_index->{'directory'}}, 'inc';
+        require YAML;
+        local $YAML::UseHeader = 0;
+        $dump .= YAML::Dump({ no_index => $no_index});
+    }
+    else {
+        $dump .= << "META";
+no_index:
+  directory:
+    - inc
+META
+    }
+    
+    $dump .= "generated_by: $package version $version\n";
+    return $dump;
+}
+
+sub read {
+    my $self = shift;
+    $self->include_deps( 'YAML', 0 );
+    require YAML;
+    my $data = YAML::LoadFile( 'META.yml' );
+    # Call methods explicitly in case user has already set some values.
+    while ( my ($key, $value) = each %$data ) {
+        next unless $self->can( $key );
+        if (ref $value eq 'HASH') {
+            while (my ($module, $version) = each %$value) {
+                $self->$key( $module => $version );
+            }
+        }
+        else {
+            $self->$key( $value );
+        }
+    }
+    return $self;
+}
+
+sub write {
+    my $self = shift;
+    return $self unless $self->is_admin;
+
+    META_NOT_OURS: {
+        local *FH;
+        if (open FH, "META.yml") {
+            while (<FH>) {
+                last META_NOT_OURS if /^generated_by: Module::Install\b/;
+            }
+            return $self if -s FH;
+        }
+    }
+
+    warn "Writing META.yml\n";
+    open META, "> META.yml" or warn "Cannot write to META.yml: $!";
+    print META $self->_dump;
+    close META;
+    return $self;
+}
+
+sub version_from {
+    my ($self, $version_from) = @_;
+    require ExtUtils::MM_Unix;
+    $self->version(ExtUtils::MM_Unix->parse_version($version_from));
+}
+
+sub abstract_from {
+    my ($self, $abstract_from) = @_;
+    require ExtUtils::MM_Unix;
+    $self->abstract(
+        bless( { DISTNAME => $self->name }, 'ExtUtils::MM_Unix')
+            ->parse_abstract($abstract_from)
+    );
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/PAR.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/PAR.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/PAR.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,121 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/PAR.pm $ $Author: autrijus $
+# $Revision: #28 $ $Change: 1650 $ $DateTime: 2003/07/29 06:03:27 $ vim: expandtab shiftwidth=4
+
+package Module::Install::PAR;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub par_base {
+    my ($self, $base, $file) = @_;
+    my $class = ref($self);
+    my $inc_class = join('::', @{$self->_top}{qw(prefix name)});
+    my $ftp_base;
+
+    if (defined $base and length $base) {
+        if ($base =~ m!^(([A-Z])[A-Z])[-_A-Z]+\Z!) {
+            $self->{mailto} = "$base\@cpan.org";
+            $ftp_base = "ftp://ftp.cpan.org/pub/CPAN/authors/id/$2/$1/$base";
+            $base = "http://www.cpan.org/authors/id/$2/$1/$base";
+        }
+        elsif ($base !~ m!^(\w+)://!) {
+            die "Cannot recognize path '$base'; please specify an URL or CPAN ID";
+        }
+        $base .= '/' unless $base =~ m!/\Z!;
+        $ftp_base .= '/' unless $ftp_base =~ m!/\Z!;
+    }
+
+    require Config;
+    my $suffix = "$Config::Config{archname}-$Config::Config{version}.par";
+
+    unless ($file ||= $self->{file}) {
+        my $name    = $self->name or return;
+        my $version = $self->version or return;
+        $name =~ s!::!-!g;
+        $self->{file} = $file = "$name-$version-$suffix";
+    }
+
+    my $perl = $^X;
+    $perl = Win32::GetShortPathName($perl)
+        if $perl =~ / / and defined &Win32::GetShortPathName;
+
+    $self->preamble(<<"END") if $base;
+# --- $class section:
+
+all ::
+\t\@$perl -M$inc_class -e \"extract_par(q($file))\"
+
+END
+
+    $self->postamble(<<"END");
+# --- $class section:
+
+$file: all test
+\t\@\$(PERL) -M$inc_class -e \"make_par(q($file))\"
+
+par :: $file
+\t\@\$(NOOP)
+
+par-upload :: $file
+\tcpan-upload -verbose $file
+
+END
+
+    $self->{url} = $base;
+    $self->{ftp_url} = $ftp_base;
+    $self->{suffix} = $suffix;
+
+    return $self;
+}
+
+sub fetch_par {
+    my ($self, $url, $file, $quiet) = @_;
+    $url = $self->{url} || $self->par_base($url)->{url};
+    $ftp_url = $self->{ftp_url};
+    $file ||= $self->{file};
+
+    return $file if -f $file or $self->get_file(
+        url     => "$url$file",
+        ftp_url => "$ftp_url$file"
+    );
+
+    require Config;
+    print << "END" if $self->{mailto} and !$quiet;
+*** No installation package available for your architecture.
+However, you may wish to generate one with '$Config::Config{make} par' and send
+it to <$self->{mailto}>, so other people on the same platform
+can benefit from it.
+*** Proceeding with normal installation...
+END
+    return;
+}
+
+sub extract_par {
+    my ($self, $file) = @_;
+    return unless -f $file;
+
+    if (eval { require Archive::Zip; 1 }) {
+        my $zip = Archive::Zip->new;
+        return unless $zip->read($file) == Archive::Zip::AZ_OK()
+                  and $zip->extractTree('', 'blib/') == Archive::Zip::AZ_OK();
+    }
+    elsif ($self->can_run('unzip')) {
+        return if system(unzip => $file, qw(-d blib));
+    }
+
+    local *PM_TO_BLIB;
+    open PM_TO_BLIB, '> pm_to_blib' or die $!;
+    close PM_TO_BLIB;
+}
+
+sub make_par {
+    my ($self, $file) = @_;
+    unlink $file if -f $file;
+
+    unless ( eval { require PAR::Dist; PAR::Dist->VERSION >= 0.03 } ) {
+        warn "Please install PAR::Dist 0.03 or above first.";
+        return;
+    }
+
+    return PAR::Dist::blib_to_par(dist => $file);
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Run.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Run.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Run.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,11 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Run.pm $ $Author: autrijus $
+# $Revision: #6 $ $Change: 1375 $ $DateTime: 2003/03/18 12:29:32 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Run;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+# eventually move the ipc::run / open3 stuff here.
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Scripts.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Scripts.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Scripts.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,45 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Scripts.pm $ $Author: autrijus $
+# $Revision: #7 $ $Change: 1841 $ $DateTime: 2003/12/28 19:43:56 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Scripts;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+$VERSION = '0.01';
+use strict;
+use File::Basename ();
+
+sub prompt_script {
+    my ($self, $script_file) = @_;
+    my ($prompt, $abstract, $default);
+
+    foreach my $line ( $self->_read_script($script_file) ) {
+        last unless $line =~ /^#/;
+        $prompt = $1   if $line =~ /^#\s*prompt:\s+(.*)/;
+        $default = $1  if $line =~ /^#\s*default:\s+(.*)/;
+        $abstract = $1 if $line =~ /^#\s*abstract:\s+(.*)/;
+    }
+    unless (defined $prompt) {
+        my $script_name = File::Basename::basename($script_file);
+        $prompt = "Do you want to install '$script_name'";
+        $prompt .= " ($abstract)" if defined $abstract;
+        $prompt .= '?';
+    }
+    return unless $self->prompt($prompt, ($default || 'n')) =~ /^[Yy]/;
+    $self->install_script($script_file);
+}
+
+sub install_script {
+    my ($self, $script_file) = @_;
+    my $args = $self->makemaker_args;
+    my $exe_files = $args->{EXE_FILES} ||= [];
+    push @$exe_files, $script_file;
+}
+
+sub _read_script {
+    my ($self, $script_file) = @_;
+    local *SCRIPT;
+    open SCRIPT, $script_file
+      or die "Can't open '$script_file' for input: $!\n";
+    return <SCRIPT>;
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Win32.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Win32.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Win32.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,65 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/Win32.pm $ $Author: autrijus $
+# $Revision: #9 $ $Change: 1789 $ $DateTime: 2003/11/11 01:22:54 $ vim: expandtab shiftwidth=4
+
+package Module::Install::Win32;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+$VERSION = '0.02';
+
+use strict;
+
+# determine if the user needs nmake, and download it if needed
+sub check_nmake {
+    my $self = shift;
+    $self->load('can_run');
+    $self->load('get_file');
+
+    require Config;
+    return unless (
+        $Config::Config{make}                   and
+        $Config::Config{make} =~ /^nmake\b/i    and
+        $^O eq 'MSWin32'                        and
+        !$self->can_run('nmake')
+    );
+
+    print "The required 'nmake' executable not found, fetching it...\n";
+
+    require File::Basename;
+    my $rv = $self->get_file(
+        url         => 'http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe',
+        ftp_url     => 'ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe',
+        local_dir   => File::Basename::dirname($^X),
+        size        => 51928,
+        run         => 'Nmake15.exe /o > nul',
+        check_for   => 'Nmake.exe',
+        remove      => 1,
+    );
+
+    if (!$rv) {
+        die << '.';
+
+-------------------------------------------------------------------------------
+
+Since you are using Microsoft Windows, you will need the 'nmake' utility
+before installation. It's available at:
+
+  http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/Nmake15.exe
+      or
+  ftp://ftp.microsoft.com/Softlib/MSLFILES/Nmake15.exe
+
+Please download the file manually, save it to a directory in %PATH% (e.g.
+C:\WINDOWS\COMMAND\), then launch the MS-DOS command line shell, "cd" to
+that directory, and run "Nmake15.exe" from there; that will create the
+'nmake.exe' file needed by this module.
+
+You may then resume the installation process described in README.
+
+-------------------------------------------------------------------------------
+.
+    }
+}
+
+1;
+
+__END__
+

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/WriteAll.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/WriteAll.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/WriteAll.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,38 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install/WriteAll.pm $ $Author: autrijus $
+# $Revision: #3 $ $Change: 1885 $ $DateTime: 2004/03/11 05:55:27 $ vim: expandtab shiftwidth=4
+
+package Module::Install::WriteAll;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+
+sub WriteAll {
+    my $self = shift;
+    my %args = (
+        meta => 1,
+        sign => 0,
+        inline => 0,
+        check_nmake => 1,
+        @_
+    );
+
+    $self->sign(1) if $args{sign};
+    $self->Meta->write if $args{meta};
+    $self->admin->WriteAll(%args) if $self->is_admin;
+
+    if ($0 =~ /Build.PL$/i) {
+	$self->Build->write;
+    }
+    else {
+	$self->check_nmake if $args{check_nmake};
+        $self->makemaker_args( PL_FILES => {} )
+            unless $self->makemaker_args->{'PL_FILES'};
+
+        if ($args{inline}) {
+            $self->Inline->write;
+        }
+        else {
+            $self->Makefile->write;
+        }
+    }
+}
+
+1;

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Cookbook.pod
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Cookbook.pod	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Cookbook.pod	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,125 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install-Cookbook.pod $ $Author: autrijus $
+# $Revision: #4 $ $Change: 1847 $ $DateTime: 2003/12/31 23:14:54 $ vim: expandtab shiftwidth=4
+
+=head1 NAME
+
+Module::Install-Cookbook - A CornucopiE<aelig> of Module::Install Recipes
+
+=head1 DESCRIPTION
+
+It's a lot easier for most of us to cook a meal from a recipe, rather
+than just throwing things into a pot until something edible forms.  So
+it is with programming as well.  B<Module::Install> makes writing Perl
+module installers as easy as possible.  Having a set of easy to
+understand samples, makes it simpler yet.
+
+This Cookbook is intended to be an ever-growing repository of small yet
+complete coding examples; each showing how to accomplish a particular
+task with B<Module::Install>.  Each example is followed by a short
+discussion, explaining in detail the particular features that are being
+demonstrated.
+
+Guten Appetit!
+
+=head1 Appetizers
+
+=head2 Replacing C<ExtUtils::MakeMaker>
+
+=over 4
+
+=item Problem
+
+As a CPAN author, you are likely to have some B<ExtUtils::MakeMaker>
+based F<Makefile.PL> already.  You want to take advantage of cool
+features offered by B<Module::Install> extensions, but why fix something
+that's not broken?
+
+=item Solution
+
+The I<fix> turns out to be extremely simple.  Where you had:
+
+    use ExtUtils::MakeMaker;
+    WriteMakefile( NAME => "Foo::Bar" );
+
+Now just write:
+
+    use inc::Module::Install;
+    WriteMakefile( NAME => "Foo::Bar" );
+
+Presto!  Your F<Makefile.PL> is now ready to receive all sort of magic
+extensions; see below for details.
+
+=back
+
+=over 4
+
+=item Problem
+
+XXX F<Build.PL>
+
+=item Solution
+
+=back
+
+
+=head1 Fast Food
+
+XXX: to be written
+
+=head1 The Main Course
+
+=item Problem
+
+Installing XS extensions from CPAN was difficult.  Some platforms do
+not come with a compiler (Win32, MacOSX...); some headers or libraries
+may be missing.
+
+=item Solution
+
+Just use the C<par_base> and C<fetch_par> functions:
+
+    # same old Makefile.PL, with a few changes
+    use inc::Module::Install;	        # was "use ExtUtils::MakeMaker;"
+    WriteMakefile( ... );		# same as the original
+    check_nmake();			# make sure the user have nmake
+    par_base('AUTRIJUS');		# your CPAN ID or a URL
+    fetch_par() unless can_cc();	# use precompiled PAR only if necessary
+
+Users will not notice anything, except now it works.  Of course, you
+still need to type C<make par> and upload the precompiled package.
+
+=head1 Just Desserts
+
+XXX: to be written
+
+=head1 Entertaining Guests
+
+XXX: to be written
+
+=head1 Food for Thought
+
+XXX: to be written
+
+=head1 SEE ALSO
+
+For generic information, see L<Module::Install>.
+
+=head1 AUTHOR
+
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+
+Structure based on L<Inline::C-Cookbook> by Brian Ingerson
+E<lt>INGY at cpan.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2003, 2004 by Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>.
+
+Copyright 2002 by Brian Ingerson E<lt>INGY at cpan.orgE<gt>.
+
+This document is free documentation; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Philosophy.pod
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Philosophy.pod	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Philosophy.pod	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,190 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install-Philosophy.pod $ $Author: autrijus $
+# $Revision: #4 $ $Change: 1288 $ $DateTime: 2003/03/06 21:32:32 $ vim: expandtab shiftwidth=4
+
+=head1 NAME
+
+Module::Install-Philosophy - The idea behind Module::Install
+
+=head1 SYNOPSIS
+
+This document describes the personal philosophy behind the creation of
+B<CPAN::MakeMaker> (the predecessor of B<Module::Install>).  The views
+expressed here belong to Brian Ingerson; if they are not of interest to
+you, you can safely ignore this document.
+
+=head1 I HAVE A DREAM
+
+I say to you today, my friends, that in spite of the difficulties and
+frustrations of the moment, I still have a dream. It is a dream deeply
+rooted in the Perl Module dream.
+
+I have a dream that one day this community will rise up and live out the
+true meaning of its creed: "We hold these truths to be self-evident:
+that all Perl authors are created equal."
+
+I have a dream that one day even the state of the C<CGI::> namespace, a
+desert state, sweltering with the heat of injustice and oppression, will
+be transformed into an oasis of freedom and justice.
+
+I have a dream that my four modules will one day live in an archive
+where they will not be judged by the number of their prerequisites but
+by the content of their source code.
+
+I have a dream today.
+
+=head1 DESCRIPTION
+
+The above is obviously a mutation of the monumental speech by great
+Martin Luther King (L<http://web66.coled.umn.edu/new/MLK/MLK.html>).
+While the contexts are vastly different, I feel that there are some
+serious parallelisms.
+
+The CPAN has become a place that is not free of injustice. This
+situation has arisen not out of directed oppression, but from a failure
+of our community to keep its tools sharp. It is the culmination of many
+small decisions made in the name of practicality. This is a sad state
+for an institution that was created to allow all interested people to
+contribute equally to the best of their ability.
+
+This assertion is rooted in my personal experience as an author. When I
+created my first Perl module, Inline.pm, I knew that I had done
+something important. But how was I to make a dent in vast Perl
+community?
+
+As a complete unknown in the Perl community, my voice did not travel
+far. I repeatedly tried to get even an acknowledgment from the gurus
+familiar with XS. No success. I resorted to sending messages with
+ridiculous subjects to C<modules at perl.org>. 
+(L<http://www.xray.mpe.mpg.de/mailing-lists/modules/2000-08/msg00078.html>) 
+No response. Through sheer determination and shameless self-promotion I
+eventually got the word out, and I hope the world is a slightly better
+place for it.
+
+Since then, Inline has won awards and I have had the privilege to meet almost
+all of Perl's finest. But I still remember the pain of starting out, and
+want to help invite more people into this wonderful world. 
+
+One thing I have learned from experience is that the Perl community (and
+throw in the Python and Ruby people as well) is a small drop in the vast
+ocean of programming. It's a giant pot of Java out there; and a sea of
+C. Perl may not be the biggest fish, but with some care and cunning we
+could become a much bigger school.
+
+These are the current problems that I see with CPAN and the core modules:
+
+=over 4
+
+=item * New Modules don't help Older Perls
+
+If I were to guess what percent of all Perl5 installations were at the
+current release level (5.8.0 in October 2002) I would say 3-5%. That may
+even be generous. I'd say that over 40% of installations might still be
+at 5.005 or earlier.
+
+The biggest problem with adding a module to the core is that it only
+helps a small subset of Perl users for a long long time. Worse yet, a
+good module author will still probably avoid using the core additions as
+prerequisites, because they want their new module to work as well on
+5.005 as on 5.8.
+
+CPAN::MakeMaker should be able to help in this regard. For example,
+instead of putting Inline.pm into the core for 5.9, I can now
+effectively get it into the core for every version of Perl that
+Inline supports.
+
+=item * Author Exclusiveness
+
+Not just anybody can get a module into the core. It seems you have to
+know people in high places. If I were a brilliant new talent with a
+great new module, it would have a harder time getting the ear of the
+pumpking, then if I were, say, Damian Conway. In fact, I probably
+wouldn't even know where to start.
+
+=item * Reduced Competition
+
+One comment I've heard from some very good Perl programmers is
+"Everything important has already been done". Their feeling is that
+even though a module is suboptimal, it would be a waste of time to
+write a competing module. Who would use it instead of the one already
+in the core?
+
+When I write a competing module, I know that I have to make it at least
+twice as good as the existing one to even get noticed. That's not a bad
+thing, but should everybody be forced into that situation?
+
+For example, let's say that you have created a really useful CGI script.
+Let's also say that it makes use of your own B<CGI::Special> module,
+because B<CGI.pm> doesn't meet your needs. Even though your script might be
+generally useful and worth sharing, the fact that it requires a
+non-standard module can only negatively affect its acceptance. Trying to
+get general acceptance for the superior B<CGI::Special> module will be
+harder still.
+
+Core modules are assumed by the general public to be "Best of Breed".
+While this may be true for some modules at some point in time, it keeps
+talented people from attempting to "breed" something better.
+
+=item * Core Bloat
+
+Every time we add a module to the core it gets bigger and bigger. And we
+can't ever remove modules from the core, once they've been added.
+
+If I had my druthers, we'd remove all modules from the core that weren't
+necessary for either running Perl or installing modules. Of course, we'd
+need to set things up so that installing modules was so easy, that it
+could be done on the fly if necessary. Is this easily accomplishable?
+Nope. Is it impossible? Nope. We have the best language in the world to
+help us do it!
+
+=item * Maintenance Bitrot
+
+Believe it or not, Perl authors can sometimes acquire a "Life Beyond
+Perl". They get families or new hobbies or even hit by a bus. (This
+would be a "Death Beyond Perl".) The fact is, that once somebody writes
+a piece of code and shares it with the world, they are expected to
+maintain it for all time.
+
+That is being generous. There are others that think that once their
+module has become popular or made it into the core, they don't need to
+keep fixing and improving it. I have personally been guilty of this sin.
+
+And then there's the Damian Conway Effect. This plagues the exceptional
+authors who are so innovative and prolific they simply don't have time
+to maintain everything they have written.
+
+=back
+
+I initially formalized these opinions at the YAPC (Yet Another Perl
+Conference) in June 2001. Since then I have been trying to think of
+technological solutions to fix these social problems.
+
+One idea was dubbed NAPC. NAPC is CPAN backwards. It is a large system
+of precompiled modules that can be installed on the fly, with the goal
+of reducing the number of modules in the core. NAPC hasn't got started
+yet. I'd still like to do it someday, but it's a big problem with a lot
+of issues.
+
+B<CPAN::MakeMaker> (and now B<Module::Install>) on the other hand, is
+simple and ultimately flexible.  It should work with all of the existing
+CPAN processes without requiring any changes from them. And new features
+can be continuously added. Even though it doesn't scratch all of my
+philosophical CPAN itches, it's a good start.
+
+=head1 CONCLUSION
+
+This is all just food for thought. Take it with a pinch of salt. 
+
+=head1 AUTHOR
+
+Brian Ingerson E<lt>INGY at cpan.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright (c) 2002. Brian Ingerson. All rights reserved.
+
+This document is free documentation; you can redistribute it and/or
+modify it under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,618 @@
+# $File: //depot/cpan/Module-Install/lib/Module/Install.pm $ $Author: autrijus $
+# $Revision: #68 $ $Change: 2285 $ $DateTime: 2004/07/01 03:16:20 $ vim: expandtab shiftwidth=4
+
+package Module::Install;
+$VERSION = '0.34';
+
+die << "." unless $INC{join('/', inc => split(/::/, __PACKAGE__)).'.pm'};
+Please invoke ${\__PACKAGE__} with:
+
+    use inc::${\__PACKAGE__};
+
+not:
+
+    use ${\__PACKAGE__};
+
+.
+
+use strict 'vars';
+use Cwd ();
+use File::Find ();
+use File::Path ();
+
+ at inc::Module::Install::ISA = 'Module::Install';
+
+=head1 NAME
+
+Module::Install - Standalone, extensible Perl module installer
+
+=head1 VERSION
+
+This document describes version 0.34 of Module::Install, released
+July 1, 2004.
+
+=head1 SYNOPSIS
+
+In your F<Makefile.PL>:
+
+    # drop-in replacement to ExtUtils::MakeMaker!
+    use inc::Module::Install;
+    WriteMakefile( ... );
+
+Standard usage:
+
+    use inc::Module::Install;
+
+    name            ('Your-Module');
+    abstract        ('Some Abstract here');
+    author          ('Your Name <email at example.com>');
+    version_from    ('lib/Your/Module.pm');
+    license         ('perl');
+
+    requires        ('perl' => 5.005);
+    requires        ('Acme::Hello');
+    build_requires  ('Test::More');
+    recommends      ('Acme::ComeFrom' => 0.01);
+
+    # -- You'll likely only want one of the below --
+    # auto_bundle();       # bundle run-time dependencies
+    # auto_include();      # include build-time dependencies
+    # auto_include_deps(); # same as above, plus recursive dependencies
+    # auto_install();      # auto-install all dependencies from CPAN
+
+    &WriteAll;
+
+If it is invoked as F<Makefile.PL>, it will write a standard F<Makefile>,
+and also download a F<nmake.exe> on Microsoft Windows if needed.  If invoked
+as F<Build.PL>, it writes a standard F<Build> script that works with the
+L<Module::Build> framework.
+
+You can even support both by having a dummy F<Build.PL> that reads:
+
+    require 'Makefile.PL';
+
+=head1 DESCRIPTION
+
+This module provides a drop-in replacement for B<ExtUtils::MakeMaker>.
+For first-time users, Brian Ingerson's I<Creating Module Distributions
+with Module::Install> in June 2003 issue of The Perl Journal
+(L<http://www.tpj.com/issues/>) provides a gentle introduction to how
+this module works.
+
+If you want to start working with real-world examples right away, check
+out L<Module::Install-Cookbook>.  For some personal opinions behind this
+module's making, see L<Module::Install-Philosophy>.
+
+This module is designed to let module authors eliminate all duplicated
+codes in F<Makefile.PL> and F<Build.PL>, by abstracting them into
+I<extensions>, and distribute them under the F<inc/> directory.
+
+To start using it, just replace the C<use ExtUtils::MakeMaker;> line
+from F<Makefile.PL> with C<use inc::Module::Install;>, then run it once:
+
+    % perl Makefile.PL
+    include inc/Module/Install.pm
+    include inc/Module/Install/MakeMaker.pm
+    include inc/Module/Install/Base.pm
+    include inc/Module/Install/Makefile.pm
+    include inc/Module/Install/Metadata.pm
+    Writing Makefile for foo
+    Creating META.yml
+
+Now your distribution will have an extra F<inc/> directory, with the
+minimal loader code F<inc/Module/Install.pm> and base extension class
+B<Module::Install::Base> copied into it.  Also, since you made use of
+the C<WriteMakefile> function, the B<Module::Install::MakeMaker>
+extension is also copied into F<inc/>, along with two other extensions
+called from B<Module::Install::MakeMaker>.
+
+End-users of your distribution do not need to install anything extra;
+the distribution already includes all necessary extensions, with their
+POD documentations removed.  Note that because it does not include
+unused extensions or B<Module::Install> itself, the impact on
+distribution size is minimized.
+
+=head1 METHODS
+
+=over 4
+
+=item import(@args)
+
+If this module was not loaded from F<inc/>, calls the C<init>
+method of B<Module::Install::Admin> to include and reload itself;
+see L<Module::Install::Admin/Bootstrapping> for details.
+
+Otherwise, export a default C<AUTOLOAD> handler to the caller's package.
+
+The C<@args> array is passed to C<new> to intialize the top-level
+B<Module::Install> object; it should usually be left empty.
+
+=cut
+
+sub import {
+    my $class = shift;
+    my $self = $class->new(@_);
+
+    if (not -f $self->{file}) {
+        require "$self->{path}/$self->{dispatch}.pm";
+        File::Path::mkpath("$self->{prefix}/$self->{author}");
+        $self->{admin} = 
+          "$self->{name}::$self->{dispatch}"->new(_top => $self);
+        $self->{admin}->init;
+        @_ = ($class, _self => $self);
+        goto &{"$self->{name}::import"};
+    }
+
+    *{caller(0) . "::AUTOLOAD"} = $self->autoload;
+
+    # Unregister loader and worker packages so subdirs can use them again
+    delete $INC{"$self->{file}"};
+    delete $INC{"$self->{path}.pm"};
+}
+
+=item autoload()
+
+Returns an AUTOLOAD handler bound to the caller package.
+
+=cut
+
+sub autoload {
+    my $self = shift;
+    my $caller = caller;
+
+    my $cwd = Cwd::cwd();
+    my $sym = "$caller\::AUTOLOAD";
+
+    $sym->{$cwd} = sub {
+        my $pwd = Cwd::cwd();
+        if (my $code = $sym->{$pwd}) {
+            goto &$code unless $cwd eq $pwd; # delegate back to parent dirs
+        }
+        $$sym =~ /([^:]+)$/ or die "Cannot autoload $caller";
+        unshift @_, ($self, $1);
+        goto &{$self->can('call')} unless uc($1) eq $1;
+    };
+}
+
+=item new(%args)
+
+Constructor, taking a hash of named arguments.  Usually you do not want
+change any of them.
+
+=cut
+
+sub new {
+    my ($class, %args) = @_;
+
+    return $args{_self} if $args{_self};
+
+    $args{dispatch} ||= 'Admin';
+    $args{prefix}   ||= 'inc';
+    $args{author}   ||= '.author';
+    $args{bundle}   ||= 'inc/BUNDLES';
+
+    $class =~ s/^\Q$args{prefix}\E:://;
+    $args{name}     ||= $class;
+    $args{version}  ||= $class->VERSION;
+
+    unless ($args{path}) {
+        $args{path}  = $args{name};
+        $args{path}  =~ s!::!/!g;
+    }
+    $args{file}     ||= "$args{prefix}/$args{path}.pm";
+
+    bless(\%args, $class);
+}
+
+=item call($method, @args)
+
+Call an extension method, passing C<@args> to it.
+
+=cut
+
+sub call {
+    my $self   = shift;
+    my $method = shift;
+    my $obj = $self->load($method) or return;
+
+    unshift @_, $obj;
+    goto &{$obj->can($method)};
+}
+
+=item load($method)
+
+Include and load an extension object implementing C<$method>.
+
+=cut
+
+sub load {
+    my ($self, $method) = @_;
+
+    $self->load_extensions(
+        "$self->{prefix}/$self->{path}", $self
+    ) unless $self->{extensions};
+
+    foreach my $obj (@{$self->{extensions}}) {
+        return $obj if $obj->can($method);
+    }
+
+    my $admin = $self->{admin} or die << "END";
+The '$method' method does not exist in the '$self->{prefix}' path!
+Please remove the '$self->{prefix}' directory and run $0 again to load it.
+END
+
+    my $obj = $admin->load($method, 1);
+    push @{$self->{extensions}}, $obj;
+
+    $obj;
+}
+
+=item load_extensions($path, $top_obj)
+
+Loads all extensions under C<$path>; for each extension, create a
+singleton object with C<_top> pointing to C<$top_obj>, and populates the
+arrayref C<$self-E<gt>{extensions}> with those objects.
+
+=cut
+
+sub load_extensions {
+    my ($self, $path, $top_obj) = @_;
+
+    unshift @INC, $self->{prefix}
+        unless grep { $_ eq $self->{prefix} } @INC;
+
+    local @INC = ($path, @INC);
+    foreach my $rv ($self->find_extensions($path)) {
+        my ($file, $pkg) = @{$rv};
+        next if $self->{pathnames}{$pkg};
+
+        eval { require $file; 1 } or (warn($@), next);
+        $self->{pathnames}{$pkg} = delete $INC{$file};
+        push @{$self->{extensions}}, $pkg->new( _top => $top_obj );
+    }
+}
+
+=item load_extensions($path)
+
+Returns an array of C<[ $file_name, $package_name ]> for each extension
+module found under C<$path> and its subdirectories.
+
+=cut
+
+sub find_extensions {
+    my ($self, $path) = @_;
+    my @found;
+
+    File::Find::find(sub {
+        my $file = $File::Find::name;
+        return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is;
+        return if $1 eq $self->{dispatch};
+
+        $file = "$self->{path}/$1.pm";
+        my $pkg = "$self->{name}::$1"; $pkg =~ s!/!::!g;
+        push @found, [$file, $pkg];
+    }, $path) if -d $path;
+
+    @found;
+}
+
+1;
+
+__END__
+
+=back
+
+=head1 EXTENSIONS
+
+All extensions belong to the B<Module::Install::*> namespace, and
+inherit from B<Module::Install::Base>.  There are three categories
+of extensions:
+
+=over 4
+
+=item Standard Extensions
+
+Methods defined by a standard extension may be called as plain functions
+inside F<Makefile.PL>; a corresponding singleton object will be spawned
+automatically.  Other extensions may also invoke its methods just like
+their own methods:
+
+    # delegates to $other_extension_obj->method_name(@args)
+    $self->method_name(@args);
+
+At the first time an extension's method is invoked, a POD-stripped
+version of it will be included under the F<inc/Module/Install/>
+directory, and becomes I<fixed> -- i.e. even if the user had installed a
+different version of the same extension, the included one will still be
+used instead.
+
+If the author wish to upgrade extensions in F<inc/> with installed ones,
+simply run C<perl Makefile.PL> again; B<Module::Install> determines
+whether you are an author by the existence of the F<inc/.author/>
+directory.  End-users can reinitialize everything and become the author
+by typing C<make realclean> and C<perl Makefile.PL>.
+
+=item Private Extensions
+
+Those extensions take the form of B<Module::Install::PRIVATE> and
+B<Module::Install::PRIVATE::*>.
+
+Authors are encouraged to put all existing F<Makefile.PL> magics into
+such extensions (e.g. F<Module::Install::PRIVATE> for common bits;
+F<Module::Install::PRIVATE::DISTNAME> for functions specific to a
+distribution).
+
+Private extensions should not to be released on CPAN; simply put them
+somewhere in your C<@INC>, under the C<Module/Install/> directory, and
+start using their functions in F<Makefile.PL>.  Like standard
+extensions, they will never be installed on the end-user's machine,
+and therefore never conflict with other people's private extensions.
+
+=item Administrative Extensions
+
+Extensions under the B<Module::Install::Admin::*> namespace are never
+included with the distribution.  Their methods are not directly
+accessible from F<Makefile.PL> or other extensions; they are invoked
+like this:
+
+    # delegates to $other_admin_extension_obj->method_name(@args)
+    $self->admin->method_name(@args);
+
+These methods only take effect during the I<initialization> run, when
+F<inc/> is being populated; they are ignored for end-users.  Again,
+to re-initialize everything, just run C<perl Makefile.PL> as the author.
+
+Scripts (usually one-liners in F<Makefile>) that wish to dispatch
+B<AUTOLOAD> functions into administrative extensions (instead of
+standard extensions) should use the B<Module::Install::Admin> module
+directly.  See L<Module::Install::Admin> for details.
+
+=back
+
+B<Module::Install> comes with several standard extensions:
+
+=over 4
+
+=item Module::Install::AutoInstall
+
+Provides C<auto_install()> to automatically fetch and install
+prerequisites via B<CPANPLUS> or B<CPAN>, specified either by
+the C<features> metadata or by method arguments. 
+
+You may wish to add a C<include('ExtUtils::AutoInstall');> before
+C<auto_install()> to include B<ExtUtils::AutoInstall> with your
+distribution.  Otherwise, this extension will attempt to automatically
+install it from CPAN.
+
+=item Module::Install::Base
+
+The base class of all extensions, providing C<new>, C<initialized>,
+C<admin>, C<load> and the C<AUTOLOAD> dispatcher.
+
+=item Module::Install::Build
+
+Provides C<&Build-E<gt>write> to generate a B<Module::Build> compliant
+F<Build> file, as well as other B<Module::Build> support functions.
+
+=item Module::Install::Bundle
+
+Provides C<bundle>, C<bundle_deps> and C<bundle_all>, allowing you
+to bundle a CPAN distribution within your distribution.  When your
+end-users install your distribution, the bundled distribution will be
+installed along with yours, unless a newer version of the bundled
+distribution already exists on their local filesystem.
+
+=item Module::Install::Fetch
+
+Handles fetching files from remote servers via FTP.
+
+=item Module::Install::Include
+
+Provides the C<include($pkg)> function to include pod-stripped
+package(s) from C<@INC> to F<inc/>, and the C<auto_include()>
+function to include all modules specified in C<build_requires>,
+
+Also provides the C<include_deps($pkg)> function to include every
+non-core modules needed by C<$pkg>, and the C<auto_include_deps()>
+function that does the same thing as C<auto_include()>, plus all
+recursive dependencies that are subsequently required by modules in
+C<build_requires>.
+
+=item Module::Install::Inline
+
+Provides C<&Inline-E<gt>write> to replace B<Inline::MakeMaker>'s
+functionality of making (and cleaning after) B<Inline>-based modules.
+
+However, you should invoke this with C<WriteAll( inline => 1 )> instead.
+
+=item Module::Install::MakeMaker
+
+Simple wrapper class for C<ExtUtils::MakeMaker::WriteMakefile>.
+
+=item Module::Install::Makefile
+
+Provides C<&Makefile-E<gt>write> to generate a B<ExtUtils::MakeMaker>
+compliant F<Makefile>; preferred over B<Module::Install::MakeMaker>.
+It adds several extra C<make> targets, as well as being more intelligent
+at guessing unspecified arguments.
+
+=item Module::Install::Makefile::Name
+
+Guess the distribution name.
+
+=item Module::Install::Makefile::Version
+
+Guess the distribution version.
+
+=item Module::Install::Metadata
+
+Provides C<&Meta-E<gt>write> to generate a B<YAML>-compliant F<META.yml>
+file, and C<&Meta-E<gt>read> to parse it for C<&Makefile>, C<&Build> and
+C<&AutoInstall> to use.
+
+=item Module::Install::PAR
+
+Makes pre-compiled module binary packages from F<blib>, and download
+existing ones to save the user from recompiling.
+
+=item Module::Install::Run
+
+Determines if a command is available on the user's machine, and run
+external commands via B<IPC::Run3>.
+
+=item Module::Install::Scripts
+
+Handles packaging and installation of scripts, instead of modules.
+
+=item Module::Install::Win32
+
+Functions related for installing modules on Win32, e.g. automatically
+fetching and installing F<nmake.exe> for users that need it.
+
+=item Module::Install::WriteAll
+
+This extension offers C<WriteAll>, which writes F<META.yml> and
+either F<Makefile> or F<Build> depending on how the program was
+invoked.
+
+C<WriteAll> takes four optional named parameters:
+
+=over 4
+
+=item C<check_nmake> (defaults to true)
+    
+If true, invokes functions with the same name.
+
+=item C<inline> (defaults to false)
+
+If true, invokes C<&Inline-E<gt>write> instead of C<&Makefile-E<gt>write>.
+
+=item C<meta> (defaults to true)
+
+If true, writes a C<META.yml> file.
+
+=item C<sign> (defaults to false)
+
+If true, invokes functions with the same name.
+
+=back
+
+=back
+
+B<Module::Install> also comes with several administrative extensions:
+
+=over
+
+=item Module::Install::Admin::Find
+
+Functions for finding extensions, installed packages and files in
+subdirectories.
+
+=item Module::Install::Admin::Manifest
+
+Functions for manipulating and updating the F<MANIFEST> file.
+
+=item Module::Install::Admin::Metadata
+
+Functions for manipulating and updating the F<META.yml> file.
+
+=item Module::Install::Admin::ScanDeps
+
+Handles scanning for non-core dependencies via B<Module::ScanDeps> and
+B<Module::CoreList>.
+
+=back
+
+Please consult their own POD documentations for detailed information.
+
+=head1 FAQ
+
+=head2 What are the benefits of using B<Module::Install>?
+
+Here is a brief overview of the reasons:
+
+    Does everything ExtUtils::MakeMaker does.
+    Requires no installation for end-users.
+    Generate stock Makefile.PL for Module::Build users.
+    Guaranteed forward-compatibility.
+    Automatically updates your MANIFEST.
+    Distributing scripts is easy.
+    Include prerequisite modules (even the entire dependency tree).
+    Auto-installation of prerequisites.
+    Support for Inline-based modules.
+    Support for precompiled PAR binaries.
+
+Besides, if you maintain more than one CPAN modules, chances are there
+are duplications in their F<Makefile.PL>, and also with other CPAN module
+you copied the code from.  B<Module::Install> makes it really easy for you
+to abstract away such codes; see the next question.
+
+=head2 How is this different from its predecessor, B<CPAN::MakeMaker>?
+
+According to Brian Ingerson, the author of B<CPAN::MakeMaker>,
+their difference is that I<Module::Install is sane>.
+
+Also, this module is not self-modifying, and offers a clear separation
+between standard, private and administrative extensions.  Therefore
+writing extensions for B<Module::Install> is easier -- instead of
+tweaking your local copy of C<CPAN/MakeMaker.pm>, just make your own
+B<Modula::Install::PRIVATE> module, or a new B<Module::Install::*>
+extension.
+
+=head1 SEE ALSO
+
+L<Module::Install-Cookbook>,
+L<Module::Install-Philosophy>,
+L<inc::Module::Install>
+
+L<Module::Install::AutoInstall>,
+L<Module::Install::Base>,
+L<Module::Install::Bundle>,
+L<Module::Install::Build>,
+L<Module::Install::Directives>,
+L<Module::Install::Fetch>,
+L<Module::Install::Include>,
+L<Module::Install::MakeMaker>,
+L<Module::Install::Makefile>,
+L<Module::Install::Makefile::CleanFiles>,
+L<Module::Install::Makefile::Name>,
+L<Module::Install::Makefile::Version>,
+L<Module::Install::Metadata>,
+L<Module::Install::PAR>,
+L<Module::Install::Run>,
+L<Module::Install::Scripts>,
+L<Module::Install::Win32>
+L<Module::Install::WriteAll>
+
+L<Module::Install::Admin>,
+L<Module::Install::Admin::Bundle>,
+L<Module::Install::Admin::Find>,
+L<Module::Install::Admin::Include>,
+L<Module::Install::Admin::Makefile>,
+L<Module::Install::Admin::Manifest>,
+L<Module::Install::Admin::Metadata>,
+L<Module::Install::Admin::ScanDeps>
+L<Module::Install::Admin::WriteAll>
+
+L<CPAN::MakeMaker>,
+L<Inline::MakeMaker>,
+L<ExtUtils::MakeMaker>,
+L<Module::Build>
+
+=head1 AUTHORS
+
+Brian Ingerson E<lt>INGY at cpan.orgE<gt>,
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2002, 2003, 2004 by
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>,
+Brian Ingerson E<lt>INGY at cpan.orgE<gt>.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/lib/inc/Module/Install.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/inc/Module/Install.pm	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/inc/Module/Install.pm	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,63 @@
+# $File: //depot/cpan/Module-Install/lib/inc/Module/Install.pm $ $Author: autrijus $
+# $Revision: #16 $ $Change: 2286 $ $DateTime: 2004/07/01 04:47:26 $ vim: expandtab shiftwidth=4
+
+package inc::Module::Install;
+
+if (-d 'inc/.author') {
+    require File::Path;
+    File::Path::rmtree('inc');
+}
+
+unshift @INC, 'inc';
+require Module::Install;
+*VERSION = *Module::Install::VERSION;
+
+1;
+
+__END__
+
+=head1 NAME
+
+inc::Module::Install - Module::Install loader
+
+=head1 SYNOPSIS
+
+    use inc::Module::Install;
+
+=head1 DESCRIPTION
+
+This module first checks whether the F<inc/.author> directory exists,
+and removes the whole F<inc/> directory if it does, so the module author
+always get a fresh F<inc> every time they run F<Makefile.PL>.  Next, it
+unshifts C<inc> into C<@INC>, then loads B<Module::Install> from there.
+
+Below is an explanation of the reason for using a I<loader module>:
+
+The original implementation of B<CPAN::MakeMaker> introduces subtle
+problems for distributions ending with C<CPAN> (e.g. B<CPAN.pm>,
+B<WAIT::Format::CPAN>), because its placement in F<./CPAN/> duplicates
+the real libraries that will get installed; also, the directory name
+F<./CPAN/> may confuse users.
+
+On the other hand, putting included, for-build-time-only libraries in
+F<./inc/> is a normal practice, and there is little chance that a
+CPAN distribution will be called C<Something::inc>, so it's much safer
+to use.
+
+Also, it allows for other helper modules like B<ExtUtils::AutoInstall>
+to reside also in F<inc/>, and to make use of them.
+
+=head1 AUTHORS
+
+Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2003, 2004 by Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+See L<http://www.perl.com/perl/misc/Artistic.html>
+
+=cut

Added: packages/libmodule-install-perl/branches/upstream/current/t/0-signature.t
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/t/0-signature.t	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/t/0-signature.t	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,24 @@
+#!/usr/bin/perl
+# $File: //depot/cpan/Module-Install/t/0-signature.t $ $Author: autrijus $
+# $Revision: #4 $ $Change: 1313 $ $DateTime: 2003/03/08 02:30:22 $ vim: expandtab shiftwidth=4
+
+use strict;
+print "1..1\n";
+
+if (!-s 'SIGNATURE') {
+    print "ok 1 # skip - No signature file found";
+}
+elsif (!eval { require Socket; Socket::inet_aton('pgp.mit.edu') }) {
+    print "ok 1 # skip - Cannot connect to the keyserver";
+}
+elsif (!eval { require Module::Signature; 1 }) {
+    warn "# Next time around, consider install Module::Signature,\n".
+         "# so you can verify the integrity of this distribution.\n";
+    print "ok 1 # skip - Module::Signature not installed\n";
+}
+else {
+    (Module::Signature::verify() == Module::Signature::SIGNATURE_OK())
+        or print "not ";
+    print "ok 1 # Valid signature\n";
+}
+

Added: packages/libmodule-install-perl/branches/upstream/current/t/1-basic.t
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/t/1-basic.t	2005-12-29 21:59:52 UTC (rev 1797)
+++ packages/libmodule-install-perl/branches/upstream/current/t/1-basic.t	2005-12-30 11:07:55 UTC (rev 1798)
@@ -0,0 +1,82 @@
+# $File: //depot/cpan/Module-Install/t/1-basic.t $ $Author: autrijus $
+# $Revision: #2 $ $Change: 1815 $ $DateTime: 2003/12/14 20:41:23 $
+
+use Test;
+use File::Spec;
+
+plan(tests => 4);
+
+ok(TestHelper->create_dist('Foo'));
+ok(TestHelper->build_dist('Foo'));
+ok(-f File::Spec->catfile(qw(t Foo inc Module Install.pm)));
+ok(TestHelper->kill_dist('Foo'));
+
+package TestHelper;
+BEGIN {$^W = 1};
+use strict;
+use File::Spec;
+use File::Path;
+use Cwd;
+use Config;
+
+sub create_dist {
+    my ($self, $dist) = @_;
+    my $dist_path = File::Spec->catdir('t', $dist);
+    return 0 if -d $dist_path;
+    my $home = cwd;
+    mkdir($dist_path, 0777) or return 0;
+    chdir $dist_path or return 0;
+
+    open MANIFEST, '> MANIFEST' or return 0;
+    print MANIFEST <<END;
+MANIFEST
+Makefile.PL
+$dist.pm
+END
+    close MANIFEST;
+
+    open MAKEFILE_PL, '> Makefile.PL' or return 0;
+    print MAKEFILE_PL <<END;
+use inc::Module::Install;
+WriteMakefile;
+END
+    close MAKEFILE_PL;
+
+    open MODULE, "> $dist.pm" or return 0;
+    print MODULE <<END;
+package $dist;
+\$VERSION = '3.21';
+use strict;
+
+1;
+__END__
+=head1 NAME
+
+$dist - A test module
+
+=cut
+END
+    close MODULE;
+    chdir $home or return 0;
+    return 1;
+}
+
+sub build_dist {
+    my ($self, $dist) = @_;
+    my $dist_path = File::Spec->catdir('t', $dist);
+    return 0 unless -d $dist_path;
+    my $home = cwd;
+    chdir $dist_path or return 0;
+    system($^X, "-Mblib", "Makefile.PL") == 0 or return 0;
+    chdir $home or return 0;
+    return 1;
+}
+    
+sub kill_dist {
+    my ($self, $dist) = @_;
+    my $dist_path = File::Spec->catdir('t', $dist);
+    File::Path::rmtree($dist_path) or return 0;
+    return 1; 
+}
+
+1;




More information about the Pkg-perl-cvs-commits mailing list