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