r1803 - in
packages/libmodule-install-perl/branches/upstream/current: .
inc inc/Module inc/Module/Install lib/Module
lib/Module/Install lib/Module/Install/Admin
lib/Module/Install/Makefile lib/inc/Module t
Krzysztof Krzyzaniak
eloy at costa.debian.org
Fri Dec 30 11:12:56 UTC 2005
Author: eloy
Date: 2005-12-30 11:12:30 +0000 (Fri, 30 Dec 2005)
New Revision: 1803
Added:
packages/libmodule-install-perl/branches/upstream/current/inc/Module/AutoInstall.pm
packages/libmodule-install-perl/branches/upstream/current/lib/Module/AutoInstall.pm
packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pod
packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Compiler.pm
packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Share.pm
packages/libmodule-install-perl/branches/upstream/current/t/2-pod.t
packages/libmodule-install-perl/branches/upstream/current/t/3-autoinstall.t
Removed:
packages/libmodule-install-perl/branches/upstream/current/Build.PL
packages/libmodule-install-perl/branches/upstream/current/ToDo
packages/libmodule-install-perl/branches/upstream/current/inc/ExtUtils/
packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Build.pm
packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/PAR.pm
packages/libmodule-install-perl/branches/upstream/current/inc/Test/
packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Cookbook.pod
packages/libmodule-install-perl/branches/upstream/current/t/0-signature.t
Modified:
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/inc/Module/Install.pm
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/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/Win32.pm
packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/WriteAll.pm
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/Admin.pm
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/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/Module/Install.pm
packages/libmodule-install-perl/branches/upstream/current/t/1-basic.t
Log:
Load /tmp/tmp.UCsA3H/libmodule-install-perl-0.50 into
packages/libmodule-install-perl/branches/upstream/current.
Deleted: packages/libmodule-install-perl/branches/upstream/current/Build.PL
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/Build.PL 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/Build.PL 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,4 +0,0 @@
-# $File: //depot/cpan/Module-Install/Build.PL $ $Author: autrijus $
-# $Revision: #5 $ $Change: 1820 $ $DateTime: 2003/12/14 21:01:57 $
-
-require 'Makefile.PL';
Modified: packages/libmodule-install-perl/branches/upstream/current/Changes
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/Changes 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/Changes 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,1561 +1,287 @@
-____________________________________________________________________________
-[ 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
+[Changes for 0.50 - 2005-12-26]
+
+* Fixed the bug where cpan signing was set forcibly to true instead
+ of defaulting to false.
+ Reported by: Martin Thurn and Randal Schwartz
+
+* Module::Install::Admin's copy() subroutine was using a lot of CPU
+ on inefficient regex matches, where a simple passthrough while()
+ line-processing loop would do.
+
+* The t/ directory is now listed in META.yml's no_index entries by
+ default, along with inc/.
+
+* YAML.pm is now listed as an explicit dependency.
+
+[Changes for 0.48 - 2005-12-26]
+
+* New Module::Install::Compiler extension with commands:
+ c_files(), inc_paths(), optimize_flags().
+
+[Changes for 0.47 - 2005-12-25]
+
+* Slight documentation cleanup and update Module::Install::Admin
+ version to 0.47; no functional changes.
+
+[Changes for 0.46 - 2005-12-22]
+
+* tests() should always take effect even if auto_install() or
+ makemaker_args() had set it before.
+ Reported by: Jesse Vincent.
+
+[Changes for 0.45 - 2005-12-16]
+
+* Improved detection for author_from() based on the copyright line
+ in addition to =head1 AUTHORS.
+
+* Bump version of Module::Install::Admin to match Module::Install.
+ Reported by: Sebastian Riedel
+
+[Changes for 0.44 - 2005-12-13]
+
+* Module::Install::Bundle now extract files correctly again;
+ this was a regression since 0.40.
+ Reported by: Randal Schwartz
+
+* Add support to Module::Includes::Bundle so each subdirectory
+ can use Module::Install for bundling.
+
+* The "bundles:" key in META.yml is now populated even if the
+ bundled modules already exist on the system.
+
+[Changes for 0.43 - 2005-12-12]
+
+* Better documentation to install_share().
+
+* New author_from() command to guess the author name from POD.
+
+* all_from() no longer probes for metadata that has been set before.
+
+[Changes for 0.42 - 2005-12-11]
+
+* auto_provides() was broken due to a typo.
+
+* New command install_share() to put a directory's content into the
+ per-distribution auto/ directory.
+
+[Changes for 0.41 - 2005-12-11]
+
+* Only query '$self->tests' if we haven't been given an explicit list
+ (From Paul Fenwick)
+
+* New command auto_provides() to calculate "provides:" information using
+ Module::Build. Requested by Chia-Liang Kao.
+
+[Changes for 0.40 - 2005-12-07]
+
+* Massively updated documentation (more to come later).
+
+* Parentheses are now optional in Makefile.PL.
+
+* Includes Module::AutoInstall, a cleaned-up version of ExtUtils::AutoInstall.
+
+* New command all_from() to combine all *_from() tests into one.
+
+* New command test() to Support specifying test files.
+
+* New command feature() to list individual features easily.
+
+[Changes for 0.37 - 2005-08-04]
+
+* Always include ExtUtils::AutoInstall in inc/ if auto_install() is called.
+
+* Fixed a bug where modules having shared libraries would sometimes
+ be included in inc/.
+
+* The needs shared library message will now only be printed if the module
+ version indicates that it would otherwise be included. The module name has
+ also been corrected so that "::" is used everywhere instead of "/".
+
+[Changes for 0.36 - 2004-09-09]
+
+* First version under SVK management.
+
+* install_scripts() now takes multiple scripts to install.
+
+[Changes for 0.35 - 2004-07-13]
+
+* Jos Boumans reported that "use inc::Module::Install 0.34"
+ was failing because Module::Install does not assign VERSION
+ to inc::Module::Install.
+
+* Implemented auto_include_deps() for real.
+
+[Changes for 0.34 - 2004-07-01]
+
+* auto_include() will not include recursive dependencies now;
+ that functionality is refactored into auto_include_deps().
+
+[Changes for 0.33 - 2004-03-11]
+
+* abstract_from() was broken; it works now thanks to SHAY.
+
+* WriteAll() now takes (inline => 1) to support
+ Inline-based modules.
+
+[Changes for 0.31 - 2003-12-31]
+
+* Allow auto_install() to take -core-specific options like
+ (-default => 0).
+
+* No longer use inc/SCRIPT but simply modify the scripts to install.
+
+* Make can_cc() to probe the program part of $Config{cc}
+
+* 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.
+
+[Changes for 0.29 - 2003-12-14]
+
+* 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.
+
+* Real Module::Build support in WriteAll and in this module.
+
+* Transparent Build.PL, as promised in README, is back.
+
+* WriteAll now takes three non-metadata flags:
+ check_nmake (default 1), meta (default 1) and
+ sign (default 0).
+
+* The "private" key in META.yml is officially obsoleted by "no_index".
+
+* Now warns if the user did not specify a license.
+
+* "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()".
+
+* Implemented auto_include() and bundle_deps().
+
+* Add "#defaults" to MANIFEST.SKIP.
+
+[Changes for 0.28 - 2003-12-11]
+
+* Module::Install::Bundle now works, thanks to Adam Foxson!
+
+* Unbreak against newer EU::MM.
+
+* Let "inc" work with "make test" on 5.6.x too.
+
+* mcdavis pointed out that Microsoft now wants
+ "Nmake15.exe", not "nmake15.exe".
+
+[Changes for 0.27 - 2003-10-27]
+
+* Make the include'd modules actually work during
+ "make" and "make test", by adding "inc" to the
+ Makefile targets.
+
+* Graham's patch for 5.004 backcompat.
+
+* Graham Barr points out that readdir() can return 0.
+
+* Do not sign the distribution if we are not the admin.
+
+[Changes for 0.26 - 2003-10-17]
+
+* sign(1) support for automatic digital signing.
+
+* no_index(directory => 'example') support, for telling
+ PAUSE and search to skip indexing modules.
+
+[Changes for 0.25 - 2003-10-13]
+
+* Add no_index as an alias to private in META.yml.
+
+* Support for YAML::Parser::Syck.
+
+* No point in supporting Build.PL now.
+
+[Changes for 0.24 - 2003-09-01]
+
+* 0.17 is simply too old as it scans in POD sections.
+
+* Kingpin <mthurn at carbon> notes that we are using "next"
+outside a loop block in ScanDeps.
+
+* threads.pm and warnings.pm should be exempted too.
+
+[Changes for 0.23 - 2003-08-18]
+
+* Implemented $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.
+
+* sWitch to PAR::Dist to do make_par().
+
+[Changes for 0.22 - 2003-07-16]
+
+* 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.
+
+* /\.pm/i should be /\.pm$/i.
+
+* Iain Truskett wants us to not overwrite alien META.yml files.
+
+- PREREQ_PM wasn't being filled out.
+
+- Should be including YAML dependencies too.
+
+* POD cleanups.
+
+[Changes for 0.21 - 2003-06-15]
+
+* Lindsay Morris pointed out that include_deps()
+ does not work with non-core modules; fixed.
+
+[Changes for 0.20 - 2003-06-05]
+
+* Add pointer to ingy's TPJ article.
+
+* Eliminated warnings on 5.005.
+
+* Added the "package inc::Module::Install;" line at
+ request by Graham Barr, for search.cpan.org.
+
+* Close META.yml before zipping; otherwise trips on win32.
+
+* requires(), build_requires(), recommends() etc can now take
+ multiple pairs in addition to a single pair.
+
+* Add standard MANIFEST and META.yml to generated PAR file.
+
+* Implemented the &Meta->read mentioned in the main docs.
+
+* Our version of WriteMakefile was failing to fine Meta
+ object; fixed.
+
+* 'make reset' now just an author side alias for 'make purge'.
+
+* The whole #! business is unneeded since MakeMaker does that.
+
+* Don't skip other non-pm inc/ stuff when checking MANIFEST.
+
+* The hashbang line should be the first, not last, in scripts.
+
+* Also people may not always like -w.
+
+* 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 expects y/n.
Modified: packages/libmodule-install-perl/branches/upstream/current/MANIFEST
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/MANIFEST 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/MANIFEST 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,24 +1,20 @@
-Build.PL
Changes
-inc/ExtUtils/AutoInstall.pm
+inc/Module/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/AutoInstall.pm
lib/Module/Install-Philosophy.pod
lib/Module/Install.pm
+lib/Module/Install.pod
lib/Module/Install/Admin.pm
lib/Module/Install/Admin/Bundle.pm
lib/Module/Install/Admin/Find.pm
@@ -33,6 +29,7 @@
lib/Module/Install/Build.pm
lib/Module/Install/Bundle.pm
lib/Module/Install/Can.pm
+lib/Module/Install/Compiler.pm
lib/Module/Install/Fetch.pm
lib/Module/Install/Include.pm
lib/Module/Install/Inline.pm
@@ -44,6 +41,7 @@
lib/Module/Install/PAR.pm
lib/Module/Install/Run.pm
lib/Module/Install/Scripts.pm
+lib/Module/Install/Share.pm
lib/Module/Install/Win32.pm
lib/Module/Install/WriteAll.pm
Makefile.PL
@@ -52,6 +50,6 @@
META.yml
README
SIGNATURE
-t/0-signature.t
t/1-basic.t
-ToDo
+t/2-pod.t
+t/3-autoinstall.t
Modified: packages/libmodule-install-perl/branches/upstream/current/MANIFEST.SKIP
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/MANIFEST.SKIP 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/MANIFEST.SKIP 2005-12-30 11:12:30 UTC (rev 1803)
@@ -10,4 +10,7 @@
^blib/
^pm_to_blib$
^blibdirs$
+^ToDo$
^t/Foo
+^.*\.tmp$
+\.svn/
Modified: packages/libmodule-install-perl/branches/upstream/current/META.yml
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/META.yml 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/META.yml 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,21 +1,115 @@
+abstract: 'Standalone, extensible Perl module installer'
+author: Audrey Tang <autrijus at autrijus.org>
+distribution_type: module
+generated_by: Module::Install version 0.50
+license: perl
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
+ - t
+provides:
+ Module::AutoInstall:
+ file: lib/Module/AutoInstall.pm
+ version: 1.00
+ Module::Install:
+ file: lib/Module/Install.pm
+ version: 0.50
+ Module::Install::Admin:
+ file: lib/Module/Install/Admin.pm
+ version: 0.50
+ Module::Install::Admin::Bundle:
+ file: lib/Module/Install/Admin/Bundle.pm
+ version: 0.04
+ Module::Install::Admin::Find:
+ file: lib/Module/Install/Admin/Find.pm
+ version: 0.01
+ Module::Install::Admin::Include:
+ file: lib/Module/Install/Admin/Include.pm
+ version: 0.02
+ Module::Install::Admin::Makefile:
+ file: lib/Module/Install/Admin/Makefile.pm
+ version: 0.01
+ Module::Install::Admin::Manifest:
+ file: lib/Module/Install/Admin/Manifest.pm
+ version: 0.01
+ Module::Install::Admin::Metadata:
+ file: lib/Module/Install/Admin/Metadata.pm
+ version: 0.02
+ Module::Install::Admin::ScanDeps:
+ file: lib/Module/Install/Admin/ScanDeps.pm
+ Module::Install::Admin::WriteAll:
+ file: lib/Module/Install/Admin/WriteAll.pm
+ version: 0.01
+ Module::Install::AutoInstall:
+ file: lib/Module/Install/AutoInstall.pm
+ Module::Install::Base:
+ file: lib/Module/Install/Base.pm
+ Module::Install::Base::FakeAdmin:
+ file: lib/Module/Install/Base.pm
+ Module::Install::Build:
+ file: lib/Module/Install/Build.pm
+ version: 0.01
+ Module::Install::Bundle:
+ file: lib/Module/Install/Bundle.pm
+ version: 0.04
+ Module::Install::Can:
+ file: lib/Module/Install/Can.pm
+ version: 0.01
+ Module::Install::Compiler:
+ file: lib/Module/Install/Compiler.pm
+ version: 0.01
+ Module::Install::Fetch:
+ file: lib/Module/Install/Fetch.pm
+ version: 0.01
+ Module::Install::Include:
+ file: lib/Module/Install/Include.pm
+ Module::Install::Inline:
+ file: lib/Module/Install/Inline.pm
+ version: 0.01
+ Module::Install::MakeMaker:
+ file: lib/Module/Install/MakeMaker.pm
+ version: 0.01
+ Module::Install::Makefile:
+ file: lib/Module/Install/Makefile.pm
+ version: 0.01
+ Module::Install::Makefile::Name:
+ file: lib/Module/Install/Makefile/Name.pm
+ version: 0.01
+ Module::Install::Makefile::Version:
+ file: lib/Module/Install/Makefile/Version.pm
+ version: 0.01
+ Module::Install::Metadata:
+ file: lib/Module/Install/Metadata.pm
+ version: 0.05
+ Module::Install::PAR:
+ file: lib/Module/Install/PAR.pm
+ Module::Install::Run:
+ file: lib/Module/Install/Run.pm
+ version: 0.01
+ Module::Install::Scripts:
+ file: lib/Module/Install/Scripts.pm
+ version: 0.02
+ Module::Install::Share:
+ file: lib/Module/Install/Share.pm
+ version: 0.01
+ Module::Install::Win32:
+ file: lib/Module/Install/Win32.pm
+ version: 0.02
+ Module::Install::WriteAll:
+ file: lib/Module/Install/WriteAll.pm
+ inc::Module::Install:
+ file: lib/inc/Module/Install.pm
+recommends:
+ CPANPLUS: 0.04
+ Module::Build: 0
+ Module::CoreList: 0
+ Module::ScanDeps: 0.28
+ PAR::Dist: 0.03
+ Test::Harness: 2.03
+ Test::More: 0
+requires:
+ YAML: 0.35
+ perl: 5.004
+version: 0.50
Modified: packages/libmodule-install-perl/branches/upstream/current/Makefile.PL
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/Makefile.PL 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/Makefile.PL 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,53 +1,45 @@
-# $File: //depot/cpan/Module-Install/Makefile.PL $ $Author: autrijus $
-# $Revision: #37 $ $Change: 2287 $ $DateTime: 2004/07/01 04:48:23 $ vim: expandtab shiftwidth=4
+#!perl -w
+use strict;
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);
+name 'Module-Install';
+author 'Audrey Tang <autrijus at autrijus.org>';
+all_from 'lib/Module/Install.pm';
+requires 'YAML' => 0.35;
-build_requires ('Test::More');
-include ('ExtUtils::AutoInstall');
+feature 'Include packages with full dependencies',
+ recommends
+ 'Test::Harness' => 2.03, # merely a dependency of M::CoreList
+ 'Test::More' => 0, # ditto
+ 'Module::ScanDeps' => 0.28,
+ 'Module::CoreList';
-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'),
- ],
-);
+feature 'Bundle other CPAN packages',
+ recommends
+ 'CPANPLUS' => 0.040;
-auto_include_deps();
-auto_install_now( -config => { prerequisites_policy => 'follow' } );
+feature 'PAR-based binary distributions',
+ recommends
+ 'PAR::Dist' => 0.03;
-par_base(); # par_base('AUTRIJUS') to enable downloading
+feature 'Module::Build support',
+ 'Archive::Tar' => 0.23,
+ 'ExtUtils::Install' => 0.3,
+ 'ExtUtils::ParseXS',
+ recommends
+ 'Module::Build';
-&WriteAll;
+no_index
+ directory => 'example';
+
+auto_install_now
+ prerequisites_policy => 'follow';
+
+auto_provides;
+
+sign;
+WriteAll;
Modified: packages/libmodule-install-perl/branches/upstream/current/README
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/README 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/README 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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.
@@ -12,20 +9,12 @@
Module::Install uses the standard perl module install process:
-cpansign -v # see SIGNATURE for details
-perl Makefile.PL
-make
-make test
-make install
+ cpansign -v # optional; see SIGNATURE for details
+ perl Makefile.PL
+ make # or 'nmake' on Win32
+ 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'
@@ -50,8 +39,10 @@
* Copyright
-Copyright 2002, 2003, 2004 by Autrijus Tang <autrijus at autrijus.org>,
- Brian Ingerson <ingy at cpan.org>.
+Copyright 2002, 2003, 2004, 2005 by
+ Audrey Tang <autrijus at autrijus.org>
+ Brian Ingerson <ingy at cpan.org>
+ Adam Kennedy <cpan at ali.as>
All rights reserved. You can redistribute and/or modify
this bundle under the same terms as Perl itself.
Modified: packages/libmodule-install-perl/branches/upstream/current/SIGNATURE
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/SIGNATURE 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/SIGNATURE 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,5 +1,5 @@
This file contains message digests of all files listed in MANIFEST,
-signed via the Module::Signature module, version 0.39.
+signed via the Module::Signature module, version 0.41.
To verify the content in this distribution, first make sure you have
Module::Signature installed, then type:
@@ -14,66 +14,64 @@
-----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
+SHA1 739b871ff482c56af74a261fd5e0b6db99afb7cc Changes
+SHA1 5a719bc1917e640ab583da941586e210da83a18f MANIFEST
+SHA1 d8504618f3e772137facea61a59906d77fffc412 MANIFEST.SKIP
+SHA1 9deb8214cd681e2fcbf75c4232eec316acbad376 META.yml
+SHA1 146b6205f9f6e80928c6363c3d99edfa7aaf778d Makefile.PL
+SHA1 fdbef62afa79c657e86178a9dac5b8c1b5223fc4 README
+SHA1 7ce8ff26d5421842cc0c205ca9be1bf48056223d inc/Module/AutoInstall.pm
+SHA1 8635ef6993523dc91e858650be45ec8b8e2247f6 inc/Module/Install.pm
+SHA1 efb445738be8e47593d412d57de91bc6a5a87474 inc/Module/Install/AutoInstall.pm
+SHA1 fc87ce8f843e80f84df2b7b2fe254002353816e3 inc/Module/Install/Base.pm
+SHA1 2dba703acae347917bd7fea7ac10487fbda467d8 inc/Module/Install/Can.pm
+SHA1 a5389bc01a2c81898654796e0206588229f74b16 inc/Module/Install/Fetch.pm
+SHA1 5f9007e74cb6df03acd616cc2dd350966257162c inc/Module/Install/Include.pm
+SHA1 5d88fa771b77486b13d28661080fbefab81e1768 inc/Module/Install/Makefile.pm
+SHA1 ad8741f364b7c724498ac7870816a138d7b70637 inc/Module/Install/Metadata.pm
+SHA1 6dea053579084d1a638ddb3c22e86146d1588b28 inc/Module/Install/Win32.pm
+SHA1 5fa5a44d068cc7f7f4e2f4186192f6aef21735c1 inc/Module/Install/WriteAll.pm
+SHA1 5b7e69ece28acd582c4429e57a6c00ae9cc1bea0 lib/Module/AutoInstall.pm
+SHA1 a5cf37c2cc23f233b1be225e7a54160f01c2e339 lib/Module/Install-Philosophy.pod
+SHA1 15463a08c2fdf48557b7b3940c9634c9f78b121c lib/Module/Install.pm
+SHA1 788df3fa37af58bdd0e73dd3ca67d2744401c8e8 lib/Module/Install.pod
+SHA1 8b4193e96f5cf41e41c85e98408758300dc6fcc5 lib/Module/Install/Admin.pm
+SHA1 57b0f1152c5490287f85b52f4f0d5d849332f960 lib/Module/Install/Admin/Bundle.pm
+SHA1 4c56a004332e0b6988c9598b80cf9a5c334da471 lib/Module/Install/Admin/Find.pm
+SHA1 6ee0a0a2d969287219b69eeb20a8b314b90839cb lib/Module/Install/Admin/Include.pm
+SHA1 99f1a2f84648a827a8a75204ceda00371a72987b lib/Module/Install/Admin/Makefile.pm
+SHA1 dd389fb52d2dedab2a96cc0b9f9e3185080a2b47 lib/Module/Install/Admin/Manifest.pm
+SHA1 f3564bf33f23810ec357a5e13e6d9fe261538587 lib/Module/Install/Admin/Metadata.pm
+SHA1 5ba95cbf306f7fb0c96e96f7b6f0f0eb4c27f77f lib/Module/Install/Admin/ScanDeps.pm
+SHA1 14246009fe66492d939604013adb732a2744732b lib/Module/Install/Admin/WriteAll.pm
+SHA1 5c17235758de252ef7b6f6da246277d1e6321d10 lib/Module/Install/AutoInstall.pm
+SHA1 a097c0c3f23de102e98517bb0f440fac0fecedd9 lib/Module/Install/Base.pm
+SHA1 02c15969f75db48679d55dfd651946164bbcaca6 lib/Module/Install/Build.pm
+SHA1 78c07394ca84ce3563091da33bbe4057d133bcb9 lib/Module/Install/Bundle.pm
+SHA1 06fb8fe19ebbbc06d3a30f9c21d3ac1710f0897b lib/Module/Install/Can.pm
+SHA1 b59ba3eec58d09457268199ee5dc6ed8b8fb4b7d lib/Module/Install/Compiler.pm
+SHA1 20ec4c053545daa827987ea0d0153f991e55dbaf lib/Module/Install/Fetch.pm
+SHA1 d51f1c421c7c31098272eaff796ac297ac584cbb lib/Module/Install/Include.pm
+SHA1 d15dab5a96deeb578458e7231eaadb5440b895e0 lib/Module/Install/Inline.pm
+SHA1 324da41791c871b41892422104c77c19506a158d lib/Module/Install/MakeMaker.pm
+SHA1 3c422dfc3f8c563506b35edc36dfb923ee5bc849 lib/Module/Install/Makefile.pm
+SHA1 a572b91b863aa6b2e087d0deb9234ce4f21224d0 lib/Module/Install/Makefile/Name.pm
+SHA1 f2f05144695375d8ef4e96109284428a08a49127 lib/Module/Install/Makefile/Version.pm
+SHA1 e4de0f14535d0ce823e7042874de6f46ba3edddf lib/Module/Install/Metadata.pm
+SHA1 256a646db9716ea7f15c474116dfabf10a3fbea7 lib/Module/Install/PAR.pm
+SHA1 581dab4432dbbe4296062fcda79f7a54907804ab lib/Module/Install/Run.pm
+SHA1 18a6d6ce26048d32fccef1e2ffbe67d485c12c29 lib/Module/Install/Scripts.pm
+SHA1 cbdf015561c516db721d996dc722c82db44ed1db lib/Module/Install/Share.pm
+SHA1 2f2c6535776715797270e8d318a766d472ed410f lib/Module/Install/Win32.pm
+SHA1 a381986c71098f7e07980b47d3bef1cd2e515c67 lib/Module/Install/WriteAll.pm
+SHA1 1a054e15bfbd68c6ccb8f30bc4d2badcac543335 lib/inc/Module/Install.pm
+SHA1 cc165528d2e584ffcfaf9bfc8cbc3a814c48d53f t/1-basic.t
+SHA1 7867cff04a8429890fa473fcd8ea51a66d0f6772 t/2-pod.t
+SHA1 34873535b662d7b6833adda1e2aea8630b7d3969 t/3-autoinstall.t
-----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.2.3 (FreeBSD)
+Version: GnuPG v1.4.2 (FreeBSD)
-iD8DBQFA4/pStLPdNzw1AaARAi73AJ94RW/otD3h2Al5XE3+vFJd4j5fLwCeMq+i
-nVpUj59l274ijrKOea3hCS4=
-=CtY+
+iD8DBQFDr+lutLPdNzw1AaARAn2FAJ42Uyrnn8qLhvAIexpihO8IScYEuQCguyHf
+VaFk713c/nA0nKpEFxl+F1o=
+=ijEk
-----END PGP SIGNATURE-----
Deleted: packages/libmodule-install-perl/branches/upstream/current/ToDo
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/ToDo 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/ToDo 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,31 +0,0 @@
-- 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/Module/AutoInstall.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/AutoInstall.pm 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/AutoInstall.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -0,0 +1,717 @@
+#line 1 "inc/Module/AutoInstall.pm - lib/Module/AutoInstall.pm"
+package Module::AutoInstall;
+$Module::AutoInstall::VERSION = '1.00';
+
+use strict;
+use Cwd ();
+use ExtUtils::MakeMaker ();
+
+#line 221
+
+# 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(
+ [
+ $Config
+ ? ( 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_AUTOINSTALL} || $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($_)
+ ? ( ( ref($_) eq 'HASH' ) ? keys(%$_) : @{$_} )
+ : ''
+ }
+ 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 );
+
+ if ( $arg and $arg =~ /^\D/ ) {
+ unshift @$modules, $arg;
+ $arg = 0;
+ }
+
+ # 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->can('conf')
+ ? $conf->get_conf('base') # 0.05x+
+ : $conf->_get_build('base') # 0.04x
+ );
+
+ # 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;
+ require Config;
+
+ return
+ unless _can_write( MM->catfile( $CPAN::Config->{cpan_home}, 'sources' ) )
+ and _can_write( $Config::Config{sitelib} );
+
+ # 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 $CPAN::META;
+ };
+
+ 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;
+
+ return 1 if -w $path;
+
+ 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} and -e 'MANIFEST' ) {
+ 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 Module::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 950
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/AutoInstall.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,7 +1,4 @@
#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);
@@ -21,45 +18,35 @@
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);
- }
+ my @config = @_;
- ExtUtils::AutoInstall->import(
- (@core ? (-core => \@core) : ()), @_, $self->features
+ # We'll need Module::AutoInstall
+ $self->include('Module::AutoInstall');
+ require Module::AutoInstall;
+
+ Module::AutoInstall->import(
+ (@config ? (-config => \@config) : ()),
+ (@core ? (-core => \@core) : ()),
+ $self->features,
);
- $self->makemaker_args( ExtUtils::AutoInstall::_make_args() );
+ $self->makemaker_args( Module::AutoInstall::_make_args() );
my $class = ref($self);
$self->postamble(
"# --- $class section:\n" .
- ExtUtils::AutoInstall::postamble()
+ Module::AutoInstall::postamble()
);
}
sub auto_install_now {
my $self = shift;
- $self->auto_install;
- ExtUtils::AutoInstall::do_install();
+ $self->auto_install(@_);
+ Module::AutoInstall::do_install();
}
1;
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Base.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,11 +1,11 @@
#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
+# Suspend handler for "redefined" warnings
+BEGIN { my $w = $SIG{__WARN__}; $SIG{__WARN__} = sub { $w } };
+#line 30
+
sub new {
my ($class, %args) = @_;
@@ -18,18 +18,18 @@
bless(\%args, $class);
}
-#line 49
+#line 48
sub AUTOLOAD {
my $self = shift;
goto &{$self->_top->autoload};
}
-#line 60
+#line 59
sub _top { $_[0]->{_top} }
-#line 71
+#line 70
sub admin {
my $self = shift;
@@ -52,6 +52,9 @@
1;
+# Restore warning handler
+BEGIN { $SIG{__WARN__} = $SIG{__WARN__}->() };
+
__END__
-#line 115
+#line 117
Deleted: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Build.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,66 +0,0 @@
-#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
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Can.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,7 +1,4 @@
#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';
@@ -11,6 +8,20 @@
use File::Spec ();
use ExtUtils::MakeMaker ();
+# check if we can load some module
+sub can_use {
+ my ($self, $mod, $ver) = @_;
+ $mod =~ s{::|\\}{/}g;
+ $mod .= ".pm" unless $mod =~ /\.pm$/i;
+
+ my $pkg = $mod;
+ $pkg =~ s{/}{::}g;
+ $pkg =~ s{\.pm$}{}i;
+
+ local $@;
+ eval { require $mod; $pkg->VERSION($ver || 0); 1 };
+}
+
# check if we can run some command
sub can_run {
my ($self, $cmd) = @_;
@@ -38,4 +49,20 @@
return;
}
+# Fix Cygwin bug on maybe_command();
+if ($^O eq 'cygwin') {
+ require ExtUtils::MM_Cygwin;
+ if (!defined(&ExtUtils::MM_Cygwin::maybe_command)) {
+ *ExtUtils::MM_Cygwin::maybe_command = sub {
+ my ($self, $file) = @_;
+ if ($file =~ m{^/cygdrive/}i) {
+ ExtUtils::MM_Win32->maybe_command($file);
+ }
+ else {
+ $self->SUPER::maybe_command($file);
+ }
+ }
+ }
+}
+
1;
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Fetch.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,7 +1,4 @@
#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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Include.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,7 +1,4 @@
#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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Makefile.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,7 +1,4 @@
#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);
@@ -26,6 +23,14 @@
$args;
}
+sub build_subdirs {
+ my $self = shift;
+ my $subdirs = $self->makemaker_args->{DIR} ||= [];
+ for my $subdir (@_) {
+ push @$subdirs, $subdir;
+ }
+}
+
sub clean_files {
my $self = shift;
my $clean = $self->makemaker_args->{clean} ||= {};
@@ -57,6 +62,8 @@
$args->{VERSION} = $self->version || $self->determine_VERSION($args);
$args->{NAME} =~ s/-/::/g;
+ $args->{test} = {TESTS => $self->tests} if $self->tests;
+
if ($] >= 5.005) {
$args->{ABSTRACT} = $self->abstract;
$args->{AUTHOR} = $self->author;
@@ -75,10 +82,13 @@
($self->build_requires, $self->requires) );
# merge both kinds of requires into prereq_pm
- my $dir = ($args->{DIR} ||= []);
+ my $subdirs = ($args->{DIR} ||= []);
if ($self->bundles) {
- push @$dir, map "$_->[1]", @{$self->bundles};
- delete $prereq->{$_->[0]} for @{$self->bundles};
+ foreach my $bundle (@{ $self->bundles }) {
+ my ($file, $dir) = @$bundle;
+ push @$subdirs, $dir if -d $dir;
+ delete $prereq->{$file};
+ }
}
if (my $perl_version = $self->perl_version) {
@@ -109,6 +119,7 @@
my $postamble = "# Postamble by $top_class $top_version\n" .
($self->postamble || '');
+ local *MAKEFILE;
open MAKEFILE, '< Makefile' or die $!;
my $makefile = do { local $/; <MAKEFILE> };
close MAKEFILE;
@@ -143,4 +154,4 @@
__END__
-#line 276
+#line 286
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Metadata.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,151 +1,175 @@
#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);
+use Module::Install::Base;
+ at ISA = qw(Module::Install::Base);
-$VERSION = '0.04';
+$VERSION = '0.05';
use strict 'vars';
use vars qw($VERSION);
+my @scalar_keys = qw<
+ name module_name version abstract author license
+ distribution_type perl_version tests
+>;
+my @tuple_keys = qw<
+ build_requires requires recommends bundles
+>;
+
sub Meta { shift }
+sub Meta_ScalarKeys { @scalar_keys }
+sub Meta_TupleKeys { @tuple_keys }
-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->{values}{$key} if defined wantarray and !@_;
+ $self->{values}{$key} = shift;
return $self;
};
}
+sub sign {
+ my $self = shift;
+ return $self->{values}{sign} if defined wantarray and !@_;
+ $self->{values}{sign} = ( @_ ? $_[0] : 1 );
+ return $self;
+}
+
foreach my $key (@tuple_keys) {
*$key = sub {
my $self = shift;
- return $self->{'values'}{$key} unless @_;
+ return $self->{values}{$key} unless @_;
+
my @rv;
while (@_) {
- my $module = shift or last;
+ my $module = shift or last;
my $version = shift || 0;
- if ($module eq 'perl') {
+ 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;
+ my $rv = [ $module, $version ];
push @rv, $rv;
}
- return @rv;
+ push @{ $self->{values}{$key} }, @rv;
+ @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
- ] );
+sub all_from {
+ my ( $self, $file ) = @_;
+
+ $self->version_from($file) unless $self->version;
+ $self->perl_version_from($file) unless $self->perl_version;
+
+ # The remaining probes read from POD sections; if the file
+ # has an accompanying .pod, use that instead
+ my $pod = $file;
+ if ( $pod =~ s/\.pm$/.pod/i and -e $pod ) {
+ $file = $pod;
}
- return @{$self->{'values'}{'features'}};
+
+ $self->author_from($file) unless $self->author;
+ $self->license_from($file) unless $self->license;
+ $self->abstract_from($file) unless $self->abstract;
}
-sub no_index {
- my $self = shift;
- my $type = shift;
- push @{$self->{'values'}{'no_index'}{$type}}, @_ if $type;
- return $self->{'values'}{'no_index'};
+sub provides {
+ my $self = shift;
+ my $provides = ( $self->{values}{provides} ||= {} );
+ %$provides = (%$provides, @_) if @_;
+ return $provides;
}
-sub _dump {
+sub auto_provides {
my $self = shift;
- my $package = ref($self->_top);
- my $version = $self->_top->VERSION;
- my %values = %{$self->{'values'}};
+ return $self unless $self->is_admin;
- 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}||[]},
- ];
+ unless (-e 'MANIFEST') {
+ warn "Cannot deduce auto_provides without a MANIFEST, skipping\n";
+ return $self;
}
- warn "No license specified, setting license = 'unknown'\n"
- unless $values{license};
+ # Avoid spurious warnings as we are not checking manifest here.
- $values{license} ||= 'unknown';
- $values{distribution_type} ||= 'module';
- $values{name} ||= do {
- my $name = $values{module_name};
- $name =~ s/::/-/g;
- $name;
- } if $values{module_name};
+ local $SIG{__WARN__} = sub {1};
+ require ExtUtils::Manifest;
+ local *ExtUtils::Manifest::manicheck = sub { return };
- if ($values{name} =~ /::/) {
- my $name = $values{name};
- $name =~ s/::/-/g;
- die "Error in name(): '$values{name}' should be '$name'!\n";
- }
+ require Module::Build;
+ my $build = Module::Build->new(
+ dist_name => $self->{name},
+ dist_version => $self->{version},
+ license => $self->{license},
+ );
+ $self->provides(%{ $build->find_dist_packages || {} });
+}
- 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";
- }
- }
+sub feature {
+ my $self = shift;
+ my $name = shift;
+ my $features = ( $self->{values}{features} ||= [] );
- 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});
+ my $mods;
+
+ if ( @_ == 1 and ref( $_[0] ) ) {
+ # The user used ->feature like ->features by passing in the second
+ # argument as a reference. Accomodate for that.
+ $mods = $_[0];
}
else {
- $dump .= << "META";
-no_index:
- directory:
- - inc
-META
+ $mods = \@_;
}
-
- $dump .= "generated_by: $package version $version\n";
- return $dump;
+
+ my $count = 0;
+ push @$features, (
+ $name => [
+ map {
+ ref($_) ? ( ref($_) eq 'HASH' ) ? %$_
+ : @$_
+ : $_
+ } @$mods
+ ]
+ );
+
+ return @$features;
}
+sub features {
+ my $self = shift;
+ while ( my ( $name, $mods ) = splice( @_, 0, 2 ) ) {
+ $self->feature( $name, @$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 read {
my $self = shift;
$self->include_deps( 'YAML', 0 );
+
require YAML;
- my $data = YAML::LoadFile( 'META.yml' );
+ 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 );
+ while ( my ( $key, $value ) = each %$data ) {
+ next unless $self->can($key);
+ if ( ref $value eq 'HASH' ) {
+ while ( my ( $module, $version ) = each %$value ) {
+ $self->can($key)->($self, $module => $version );
}
}
else {
- $self->$key( $value );
+ $self->can($key)->($self, $value);
}
}
return $self;
@@ -154,37 +178,110 @@
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;
+ $self->admin->write_meta;
return $self;
}
sub version_from {
- my ($self, $version_from) = @_;
+ my ( $self, $file ) = @_;
require ExtUtils::MM_Unix;
- $self->version(ExtUtils::MM_Unix->parse_version($version_from));
+ $self->version( ExtUtils::MM_Unix->parse_version($file) );
}
sub abstract_from {
- my ($self, $abstract_from) = @_;
+ my ( $self, $file ) = @_;
require ExtUtils::MM_Unix;
$self->abstract(
- bless( { DISTNAME => $self->name }, 'ExtUtils::MM_Unix')
- ->parse_abstract($abstract_from)
- );
+ bless( { DISTNAME => $self->name }, 'ExtUtils::MM_Unix' )
+ ->parse_abstract($file) );
}
+sub _slurp {
+ my ( $self, $file ) = @_;
+
+ local *FH;
+ open FH, "< $file" or die "Cannot open $file.pod: $!";
+ do { local $/; <FH> };
+}
+
+sub perl_version_from {
+ my ( $self, $file ) = @_;
+
+ if (
+ $self->_slurp($file) =~ m/
+ ^
+ use \s*
+ v?
+ ([\d\.]+)
+ \s* ;
+ /ixms
+ )
+ {
+ $self->perl_version($1);
+ }
+ else {
+ warn "Cannot determine perl version info from $file\n";
+ return;
+ }
+}
+
+sub author_from {
+ my ( $self, $file ) = @_;
+ my $content = $self->_slurp($file);
+ if ($content =~ m/
+ =head \d \s+ (?:authors?)\b \s*
+ ([^\n]*)
+ |
+ =head \d \s+ (?:licen[cs]e|licensing|copyright|legal)\b \s*
+ .*? copyright .*? \d\d\d[\d.]+ \s* (?:\bby\b)? \s*
+ ([^\n]*)
+ /ixms) {
+ my $author = $1 || $2;
+ $author =~ s{E<lt>}{<}g;
+ $author =~ s{E<gt>}{>}g;
+ $self->author($author);
+ }
+ else {
+ warn "Cannot determine author info from $file\n";
+ }
+}
+
+sub license_from {
+ my ( $self, $file ) = @_;
+
+ if (
+ $self->_slurp($file) =~ m/
+ =head \d \s+
+ (?:licen[cs]e|licensing|copyright|legal)\b
+ (.*?)
+ (=head\\d.*|=cut.*|)
+ \z
+ /ixms
+ )
+ {
+ my $license_text = $1;
+ my @phrases = (
+ 'under the same (?:terms|license) as perl itself' => 'perl',
+ 'GNU public license' => 'gpl',
+ 'GNU lesser public license' => 'gpl',
+ 'BSD license' => 'bsd',
+ 'Artistic license' => 'artistic',
+ 'GPL' => 'gpl',
+ 'LGPL' => 'lgpl',
+ 'BSD' => 'bsd',
+ 'Artistic' => 'artistic',
+ );
+ while ( my ( $pattern, $license ) = splice( @phrases, 0, 2 ) ) {
+ $pattern =~ s{\s+}{\\s+}g;
+ if ( $license_text =~ /\b$pattern\b/i ) {
+ $self->license($license);
+ return 1;
+ }
+ }
+ }
+
+ warn "Cannot determine license info from $file\n";
+ return 'unknown';
+}
+
1;
Deleted: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/PAR.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,122 +0,0 @@
-#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;
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/Win32.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,7 +1,4 @@
#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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install/WriteAll.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,7 +1,4 @@
#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);
Modified: packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install.pm 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/inc/Module/Install.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,10 +1,9 @@
-#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
-
+#line 1 "/home/autrijus/work/modinstall/trunk/inc/Module/Install.pm - lib/Module/Install.pm"
package Module::Install;
-$VERSION = '0.34';
+use 5.004;
+$VERSION = '0.50'; # Don't forget to update Module::Install::Admin too!
+
die << "." unless $INC{join('/', inc => split(/::/, __PACKAGE__)).'.pm'};
Please invoke ${\__PACKAGE__} with:
@@ -17,14 +16,32 @@
.
use strict 'vars';
-use Cwd ();
+use Cwd qw(cwd abs_path);
+use FindBin;
use File::Find ();
use File::Path ();
@inc::Module::Install::ISA = 'Module::Install';
+*inc::Module::Install::VERSION = *VERSION;
-#line 131
+sub autoload {
+ my $self = shift;
+ my $caller = $self->_caller;
+ my $cwd = cwd();
+ my $sym = "$caller\::AUTOLOAD";
+
+ $sym->{$cwd} = sub {
+ my $pwd = cwd();
+ if (my $code = $sym->{$pwd}) {
+ goto &$code unless $cwd eq $pwd; # delegate back to parent dirs
+ }
+ $$sym =~ /([^:]+)$/ or die "Cannot autoload $caller - $sym";
+ unshift @_, ($self, $1);
+ goto &{$self->can('call')} unless uc($1) eq $1;
+ };
+}
+
sub import {
my $class = shift;
my $self = $class->new(@_);
@@ -39,44 +56,61 @@
goto &{"$self->{name}::import"};
}
- *{caller(0) . "::AUTOLOAD"} = $self->autoload;
+ *{$self->_caller . "::AUTOLOAD"} = $self->autoload;
+ $self->preload;
# Unregister loader and worker packages so subdirs can use them again
delete $INC{"$self->{file}"};
delete $INC{"$self->{path}.pm"};
}
-#line 158
+sub preload {
+ my ($self) = @_;
-sub autoload {
- my $self = shift;
- my $caller = caller;
+ $self->load_extensions(
+ "$self->{prefix}/$self->{path}", $self
+ ) unless $self->{extensions};
- my $cwd = Cwd::cwd();
- my $sym = "$caller\::AUTOLOAD";
+ my @exts = @{$self->{extensions}};
- $sym->{$cwd} = sub {
- my $pwd = Cwd::cwd();
- if (my $code = $sym->{$pwd}) {
- goto &$code unless $cwd eq $pwd; # delegate back to parent dirs
+ unless (@exts) {
+ my $admin = $self->{admin};
+ @exts = $admin->load_all_extensions;
+ }
+
+ my %seen_method;
+ foreach my $obj (@exts) {
+ while (my ($method, $glob) = each %{ref($obj) . '::'}) {
+ next unless defined *{$glob}{CODE};
+ next if $method =~ /^_/;
+ next if $method eq uc($method);
+ $seen_method{$method}++;
}
- $$sym =~ /([^:]+)$/ or die "Cannot autoload $caller";
- unshift @_, ($self, $1);
- goto &{$self->can('call')} unless uc($1) eq $1;
- };
+ }
+
+ my $caller = $self->_caller;
+ foreach my $name (sort keys %seen_method) {
+ *{"${caller}::$name"} = sub {
+ ${"${caller}::AUTOLOAD"} = "${caller}::$name";
+ goto &{"${caller}::AUTOLOAD"};
+ };
+ }
}
-#line 183
-
sub new {
my ($class, %args) = @_;
+ # ignore the prefix on extension modules built from top level.
+ my $base_path = abs_path($FindBin::Bin);
+ delete $args{prefix} unless abs_path(cwd()) eq $base_path;
+
return $args{_self} if $args{_self};
$args{dispatch} ||= 'Admin';
$args{prefix} ||= 'inc';
$args{author} ||= '.author';
$args{bundle} ||= 'inc/BUNDLES';
+ $args{base} ||= $base_path;
$class =~ s/^\Q$args{prefix}\E:://;
$args{name} ||= $class;
@@ -86,24 +120,20 @@
$args{path} = $args{name};
$args{path} =~ s!::!/!g;
}
- $args{file} ||= "$args{prefix}/$args{path}.pm";
+ $args{file} ||= "$args{base}/$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;
+ my $obj = $self->load($method) or return;
unshift @_, $obj;
goto &{$obj->can($method)};
}
-#line 227
-
sub load {
my ($self, $method) = @_;
@@ -126,8 +156,6 @@
$obj;
}
-#line 257
-
sub load_extensions {
my ($self, $path, $top_obj) = @_;
@@ -139,14 +167,16 @@
my ($file, $pkg) = @{$rv};
next if $self->{pathnames}{$pkg};
- eval { require $file; 1 } or (warn($@), next);
+ local $@;
+ my $new = eval { require $file; $pkg->can('new') };
+ if (!$new) { warn $@ if $@; next; }
$self->{pathnames}{$pkg} = delete $INC{$file};
- push @{$self->{extensions}}, $pkg->new( _top => $top_obj );
+ push @{$self->{extensions}}, &{$new}($pkg, _top => $top_obj );
}
+
+ $self->{extensions} ||= [];
}
-#line 281
-
sub find_extensions {
my ($self, $path) = @_;
my @found;
@@ -164,8 +194,16 @@
@found;
}
-1;
+sub _caller {
+ my $depth = 0;
+ my $caller = caller($depth);
-__END__
+ while ($caller eq __PACKAGE__) {
+ $depth++;
+ $caller = caller($depth);
+ }
-#line 619
+ $caller;
+}
+
+1;
Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/AutoInstall.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/AutoInstall.pm 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/AutoInstall.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -0,0 +1,950 @@
+package Module::AutoInstall;
+$Module::AutoInstall::VERSION = '1.00';
+
+use strict;
+use Cwd ();
+use ExtUtils::MakeMaker ();
+
+=head1 NAME
+
+Module::AutoInstall - Automatic install of dependencies via CPAN
+
+=head1 VERSION
+
+This document describes version 0.01 of B<Module::AutoInstall>,
+released September 12, 2005.
+
+=head1 SYNOPSIS
+
+In F<Makefile.PL>, with L<Module::Install> available on the author's system:
+
+ use inc::Module::Install;
+
+ name ('Joe-Hacker');
+ abstract ('Perl Interface to Joe Hacker');
+ author ('Joe Hacker <joe at hacker.org>');
+ include ('Module::AutoInstall');
+
+ requires ('Module0'); # mandatory modules
+ feature ('Feature1',
+ -default => 0,
+ 'Module2' => '0.1',
+ );
+ feature ('Feature2',
+ -default => 0,
+ 'Module3' => '1.0',
+ );
+ auto_install(
+ make_args => '--hello', # option(s) for CPAN::Config
+ force => 1, # pseudo-option to force install
+ do_once => 1, # skip previously failed modules
+ );
+ &WriteAll;
+
+Invoking the resulting F<Makefile.PL>:
+
+ % perl Makefile.PL # interactive behaviour
+ % perl Makefile.PL --defaultdeps # accept default value on prompts
+ % perl Makefile.PL --checkdeps # check only, no Makefile produced
+ % perl Makefile.PL --skipdeps # ignores all dependencies
+ % perl Makefile.PL --testonly # don't write installation targets
+
+Note that the trailing 'deps' of arguments may be omitted, too.
+
+Using C<--defaultdeps> will make F<Makefile.PL> behave similarly to a regular
+Makefile.PL file with C<PREREQ_PM> dependencies.
+
+One can use environment variables (see "ENVIRONMENT") below to set a default
+behavior instead of specifying it in the command line for every invocation
+of F<Makefile.PL>.
+
+Using F<make> (or F<nmake>):
+
+ % make [all|test|install] # install dependencies first
+ % make checkdeps # same as the --checkdeps above
+ % make installdeps # install dependencies only
+
+=head1 DESCRIPTION
+
+B<Module::AutoInstall> lets module writers to specify a more
+sophisticated form of dependency information than the C<PREREQ_PM>
+option offered by B<ExtUtils::MakeMaker>.
+
+This module works best with the B<Module::Install> framework,
+a drop-in replacement for MakeMaker. However, this module also
+supports F<Makefile.PL> files based on MakeMaker; see L</EXAMPLES>
+for instructions.
+
+=head2 Prerequisites and Features
+
+Prerequisites are grouped into B<features>, and the user could choose
+yes/no on each one's dependencies; the module writer may also supply a
+boolean value via C<-default> to specify the default choice.
+
+The B<Core Features> marked by the name C<-core> will double-check with
+the user, if the user chooses not to install the mandatory modules.
+This differs from the pre-0.26 'silent install' behaviour.
+
+Starting from version 0.27, if C<-core> is set to the string C<all>
+(case-insensitive), every feature will be considered mandatory.
+
+The dependencies are expressed as pairs of C<Module> => C<version>
+inside an array reference. If the order does not matter, and there
+are no C<-default>, C<-tests> or C<-skiptests> directives for that
+feature, you may also use a hash reference.
+
+=head2 The Installation Process
+
+Once B<Module::AutoInstall> has determined which module(s) are needed,
+it checks whether it's running under the B<CPAN> shell and should
+therefore let B<CPAN> handle the dependency.
+
+Finally, the C<WriteMakefile()> is overridden to perform some additional
+checks, as well as skips tests associated with disabled features by the
+C<-tests> option.
+
+The actual installation happens at the end of the C<make config> target;
+both C<make test> and C<make install> will trigger the installation of
+required modules.
+
+If it's not running under B<CPAN>, the installer will probe for an
+active connection by trying to resolve the domain C<cpan.org>, and check
+for the user's permission to use B<CPAN>. If all went well, a separate
+ B<CPAN> instance is created to install the required modules.
+
+If you have the B<CPANPLUS> package installed in your system, it is
+preferred by default over B<CPAN>; it also accepts some extra options
+(e.g. C<-target =E<gt> 'skiptest', -skiptest =E<gt> 1> to skip testing).
+
+All modules scheduled to be installed will be deleted from C<%INC>
+first, so B<ExtUtils::MakeMaker> will check the newly installed modules.
+
+Additionally, you could use the C<make installdeps> target to install
+the modules, and the C<make checkdeps> target to check dependencies
+without actually installing them; the C<perl Makefile.PL --checkdeps>
+command has an equivalent effect.
+
+If the F<Makefile.PL> itself needs to use an independent module (e.g.
+B<Acme::KillarApp>, v1.21 or greater), then use something like below:
+
+ BEGIN {
+ require Module::AutoInstall;
+ # the first argument is an arrayref of the -config flags
+ Module::AutoInstall->install([], 'Acme::KillerApp' => 1.21);
+ }
+ use Acme::KillerApp 1.21;
+
+ Module::AutoInstall->import(
+ # ... arguments as usual ...
+ );
+
+Note the version test in the use clause; if you are so close to the
+cutting edge that B<Acme::KillerApp> 1.20 is the latest version on CPAN,
+this will prevent your module from going awry.
+
+=head2 User-Defined Hooks
+
+User-defined I<pre-installation> and I<post-installation> hooks are
+available via C<MY::preinstall> and C<MY::postinstall> subroutines,
+as shown below:
+
+ # pre-install handler; takes $module_name and $version
+ sub MY::preinstall { return 1; } # return false to skip install
+
+ # post-install handler; takes $module_name, $version, $success
+ sub MY::postinstall { return; } # the return value doesn't matter
+
+Note that since B<Module::AutoInstall> performs installation at the
+time of C<use> (i.e. before perl parses the remainder of
+F<Makefile.PL>), you have to declare those two handlers I<before> the
+C<use> statement for them to take effect.
+
+If the user did not choose to install a module or it already exists on
+the system, neither of the handlers is invoked. Both handlers are invoked
+exactly once for each module when installation is attempted.
+
+C<MY::preinstall> takes two arguments, C<$module_name> and C<$version>;
+if it returns a false value, installation for that module will be
+skipped, and C<MY::postinstall> won't be called at all.
+
+C<MY::postinstall> takes three arguments, C<$module_name>, C<$version>
+and C<$success>. The last one denotes whether the installation
+succeeded or not: C<1> means installation completed successfully, C<0>
+means failure during install, and C<undef> means that the installation
+was not attempted at all, possibly due to connection problems, or that
+module does not exist on CPAN at all.
+
+=head2 Customized C<MY::postamble>
+
+Starting from version 0.43, B<Module::AutoInstall> supports modules
+that require a C<MY::postamble> subroutine in their F<Makefile.PL>.
+The user-defined C<MY::postamble>, if present, is responsible for
+calling C<Module::AutoInstall::postamble> and include the output in
+its return value.
+
+For example, the B<DBD::*> (database driver) modules for the Perl DBI
+are required to include the postamble generated by the function
+C<dbd_postamble>, so their F<Makefile.PL> may contain lines like this:
+
+ sub MY::postamble {
+ return &Module::AutoInstall::postamble . &dbd_postamble;
+ }
+
+Note that the B<Module::AutoInstall> module does not export the
+C<postamble> function, so the name should always be fully qualified.
+
+=head1 CAVEATS
+
+B<Module::AutoInstall> will add C<UNINST=1> to your B<make install>
+flags if your effective uid is 0 (root), unless you explicitly disable
+it by setting B<CPAN>'s C<make_install_arg> configuration option (or the
+C<makeflags> option of B<CPANPLUS>) to include C<UNINST=0>. This I<may>
+cause dependency problems if you are using a fine-tuned directory
+structure for your site. Please consult L<CPAN/FAQ> for an explanation
+in detail.
+
+If either B<version> or B<Sort::Versions> is available, they will be
+used to compare the required version with the existing module's version
+and the CPAN module's. Otherwise it silently falls back to use I<cmp>.
+This may cause inconsistent behaviours in pathetic situations.
+
+=head1 ENVIRONMENT
+
+B<Module::AutoInstall> uses a single environment variable,
+C<PERL_AUTOINSTALL>. It is taken as the command line argument
+passed to F<Makefile.PL>; you could set it to either C<--defaultdeps> or
+C<--skipdeps> to avoid interactive behaviour.
+
+It also read from the C<PERL_EXTUTILS_AUTOINSTALL> environment variable if
+C<PERL_AUTOINSTALL> is not defined.
+
+=cut
+
+# 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(
+ [
+ $Config
+ ? ( 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_AUTOINSTALL} || $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($_)
+ ? ( ( ref($_) eq 'HASH' ) ? keys(%$_) : @{$_} )
+ : ''
+ }
+ 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 );
+
+ if ( $arg and $arg =~ /^\D/ ) {
+ unshift @$modules, $arg;
+ $arg = 0;
+ }
+
+ # 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->can('conf')
+ ? $conf->get_conf('base') # 0.05x+
+ : $conf->_get_build('base') # 0.04x
+ );
+
+ # 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;
+ require Config;
+
+ return
+ unless _can_write( MM->catfile( $CPAN::Config->{cpan_home}, 'sources' ) )
+ and _can_write( $Config::Config{sitelib} );
+
+ # 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 $CPAN::META;
+ };
+
+ 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;
+
+ return 1 if -w $path;
+
+ 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} and -e 'MANIFEST' ) {
+ 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 Module::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__
+
+=head1 SEE ALSO
+
+L<Module::Install>
+
+L<perlmodlib>, L<ExtUtils::MakeMaker>, L<Sort::Versions>, L<CPAN>,
+L<CPANPLUS>
+
+=head1 AUTHORS
+
+Audrey Tang E<lt>autrijus at autrijus.orgE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2001, 2002, 2003, 2004, 2005
+by Audrey 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
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Bundle.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,55 +1,70 @@
-# $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';
+$VERSION = '0.04';
+use strict;
sub bundle {
- my $self = shift;
+ 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 $cwd = Cwd::getcwd();
+
+ # This code is what we _should_ be doing, but CPANPLUS doesn't
+ # let you have multiple Backends in one program.
+ #my $cp = CPANPLUS::Backend->new;
+ #
+ # Jos Boumans tells us that this is the best way to do what we want
+ # It still scares me.
+ my $cp = CPANPLUS::Internals->_retrieve_id( CPANPLUS::Internals->_last_id )
+ || CPANPLUS::Backend->new;
+ my $conf = $cp->configure_object;
my $modtree = $cp->module_tree;
+ $conf->set_conf( verbose => 1 );
+ $conf->set_conf( signature => 0 );
+ $conf->set_conf( md5 => 0 );
+
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,
+ while ( my ( $name, $version ) = splice( @_, 0, 2 ) ) {
+ my $mod = $cp->module_tree($name);
+ next unless $mod;
+ next
+ if ( $mod->package_is_perl_core
+ or $self->{already_bundled}{$mod->package} );
+ my $where = $mod->fetch( fetchdir => $bundle_dir, );
+
+ next unless ($where);
+ my $file = Cwd::abs_path($where);
+
+ my $extract_result = $mod->extract(
+ files => [$file],
+ extractdir => $bundle_dir,
);
- unlink $file;
+ unlink $file;
+ next unless ($extract_result);
+ $bundles{$name} = $extract_result;
+ $self->{already_bundled}{ $mod->package }++;
- $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";
+ open FH, ">> $bundle_dir.yml" or die "Cannot write to $bundle_dir.yml: $!";
+ foreach my $name ( sort keys %bundles ) {
+ print FH "$name: '$bundles{$name}'\n";
}
close FH;
}
1;
+
+__END__
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Find.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Include.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Makefile.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Manifest.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
@@ -11,7 +8,7 @@
use File::Spec;
# XXX I really want this method in Module::Install::Admin::Makefile
-# But you can't call across Admin modules. Autrijus??
+# But you can't call across Admin modules. Audrey??
sub dist_preop {
my ($self, $distdir) = @_;
return if $self->check_manifest;
@@ -151,7 +148,7 @@
=head1 COPYRIGHT
Copyright 2003, 2004 by
-Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>,
+Audrey 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
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/Metadata.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,10 +1,7 @@
-# $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';
+$VERSION = '0.02';
use strict;
@@ -28,4 +25,84 @@
or die "Couldn't unlink META.yml:\n$!";
}
+sub write_meta {
+ my $self = shift;
+
+ META_NOT_OURS: {
+ local *FH;
+ if ( open FH, "META.yml" ) {
+ while (<FH>) {
+ last META_NOT_OURS if /^generated_by: Module::Install\b/;
+ }
+ return if -s FH;
+ }
+ }
+
+ print "Writing META.yml\n";
+
+ local *META;
+ open META, "> META.yml" or warn "Cannot write to META.yml: $!";
+ print META $self->dump_meta;
+ close META;
+
+ return;
+}
+
+sub dump_meta {
+ my $self = shift;
+ my $package = ref( $self->_top );
+ my $version = $self->_top->VERSION;
+ my %values = %{ $self->Meta->{'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 ($self->Meta_ScalarKeys) {
+ $dump{$key} = $values{$key} if exists $values{$key};
+ }
+ foreach my $key ($self->Meta_TupleKeys) {
+ next unless exists $values{$key};
+ $dump{$key} = { map { @$_ } @{ $values{$key} } };
+ }
+
+ if ( my $provides = $values{provides} ) {
+ $dump{provides} = $provides;
+ }
+
+ my $no_index = $values{no_index} ||= {};
+ push @{ $no_index->{'directory'} ||= [] }, 'inc', 't';
+ $dump{no_index} = $no_index;
+
+ require YAML;
+ local $YAML::UseHeader = 0;
+ $dump{generated_by} = "$package version $version";
+ return YAML::Dump(\%dump);
+}
+
1;
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/ScanDeps.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
@@ -40,16 +37,20 @@
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!/!::!g;
$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 $min_version = Module::CoreList->first_release($used_by);
+ print "skipped $used_by (needs shared library)\n"
+ unless !$min_version || $min_version <= $perl_version;
}
}
+ }
+ foreach my $key (keys %$deps) {
my $dep_pkg = $key;
- $dep_pkg =~ s!/!::!;
+ $dep_pkg =~ s!/!::!g;
$dep_pkg =~ s!\.pm\Z!!i or next;
if (my $min_version = Module::CoreList->first_release($dep_pkg)) {
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin/WriteAll.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Admin.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,8 +1,5 @@
-# $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';
+$VERSION = '0.50';
@ISA = 'Module::Install';
use strict 'vars';
@@ -131,40 +128,36 @@
chomp $to;
- local (*FROM, *TO, $/);
+ local (*FROM, *TO, $_);
open FROM, "< $from" or die "Can't open $from for input:\n$!";
- my $content = <FROM>;
- close FROM;
+ open TO, "> $to" or die "Can't open $to for output:\n$!";
+ print TO "#line 1 \"$to - $from\"\n";
- {
- 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;
+ my $content;
+ my $in_pod;
+
+ while (<FROM>) {
+ if (/^=(?:b(?:egin|ack)|head\d|(?:po|en)d|item|(?:ove|fo)r)/) {
+ $in_pod = 1;
+ }
+ elsif (/^=cut\s*\z/ and $in_pod) {
+ $in_pod = 0;
+ print TO "#line $.\n";
+ }
+ elsif (!$in_pod) {
+ print TO $_;
+ }
}
- open TO, "> $to" or die "Can't open $to for output:\n$!";
- print TO "#line 1 \"$to - $from\"\n";
- print TO $content;
+ close FROM;
close TO;
print "include $to\n";
}
-sub load {
- my ($self, $method, $copy) = @_;
-
- # scan through our target to find
+# scan through our target to find
+sub load_all_extensions {
+ my $self = shift;
unless ($self->{extensions}) {
$self->{extensions} = [];
foreach my $inc (@INC) {
@@ -172,9 +165,14 @@
$self->load_extensions("$inc/$self->{path}", $self->{_top});
}
}
+ return @{$self->{extensions}};
+}
+sub load {
+ my ($self, $method, $copy) = @_;
+
my @extobj;
- foreach my $obj (@{$self->{extensions}}) {
+ foreach my $obj ($self->load_all_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.
@@ -281,11 +279,11 @@
=head1 AUTHORS
-Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+Audrey Tang E<lt>autrijus at autrijus.orgE<gt>
=head1 COPYRIGHT
-Copyright 2003, 2004 by Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>.
+Copyright 2003, 2004 by Audrey 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.
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/AutoInstall.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
@@ -20,45 +17,35 @@
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);
- }
+ my @config = @_;
- ExtUtils::AutoInstall->import(
- (@core ? (-core => \@core) : ()), @_, $self->features
+ # We'll need Module::AutoInstall
+ $self->include('Module::AutoInstall');
+ require Module::AutoInstall;
+
+ Module::AutoInstall->import(
+ (@config ? (-config => \@config) : ()),
+ (@core ? (-core => \@core) : ()),
+ $self->features,
);
- $self->makemaker_args( ExtUtils::AutoInstall::_make_args() );
+ $self->makemaker_args( Module::AutoInstall::_make_args() );
my $class = ref($self);
$self->postamble(
"# --- $class section:\n" .
- ExtUtils::AutoInstall::postamble()
+ Module::AutoInstall::postamble()
);
}
sub auto_install_now {
my $self = shift;
- $self->auto_install;
- ExtUtils::AutoInstall::do_install();
+ $self->auto_install(@_);
+ Module::AutoInstall::do_install();
}
1;
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Base.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,8 +1,8 @@
-# $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;
+# Suspend handler for "redefined" warnings
+BEGIN { my $w = $SIG{__WARN__}; $SIG{__WARN__} = sub { $w } };
+
=head1 NAME
Module::Install::Base - Base class for Module::Install extensions
@@ -90,6 +90,9 @@
1;
+# Restore warning handler
+BEGIN { $SIG{__WARN__} = $SIG{__WARN__}->() };
+
__END__
=back
@@ -100,11 +103,11 @@
=head1 AUTHORS
-Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+Audrey Tang E<lt>autrijus at autrijus.orgE<gt>
=head1 COPYRIGHT
-Copyright 2003, 2004 by Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>.
+Copyright 2003, 2004 by Audrey 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.
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Build.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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;
@@ -18,6 +15,7 @@
$args{dist_name} = $self->name || $self->determine_NAME($self->{args});
$args{license} = $self->license;
+ $args{test_files} = $self->tests;
$args{dist_version} = $self->version || $self->determine_VERSION($self->{args});
$args{dist_abstract} = $self->abstract;
$args{dist_author} = $self->author;
@@ -159,14 +157,14 @@
=head1 AUTHORS
-Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+Audrey 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>,
+Audrey 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
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Bundle.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,9 +1,8 @@
-# $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);
+$VERSION = '0.04';
+
use strict;
use Cwd ();
use File::Find ();
@@ -29,9 +28,13 @@
$bundle_dir =~ s/\W+/\\W+/g;
while (my ($name, $version) = splice(@_, 0, 2)) {
+ $version ||= 0;
+
+ my $source = $bundles->{$name} or die "Cannot find bundle source for $name";
+ my $target = File::Basename::basename($source);
+ $self->bundles($name, $target);
+
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"?
@@ -44,8 +47,6 @@
},
no_chdir => 1,
}, $source);
-
- $self->bundles($name, $target);
}
chdir $cwd;
@@ -66,6 +67,19 @@
return \%map;
}
+
+sub auto_bundle_deps {
+ my $self = shift;
+
+ # Flatten array of arrays into a single array
+ my @core = map @$_, map @$_, grep ref, $self->requires;
+ while (my ($name, $version) = splice(@core, 0, 2)) {
+ next unless $name;
+ $self->bundle_deps($name, $version);
+ $self->add_bundle($name, $version);
+ }
+}
+
sub bundle_deps {
my ($self, $pkg, $version) = @_;
my $deps = $self->admin->scan_dependencies($pkg) or return;
@@ -89,16 +103,14 @@
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");
+ name 'Foo-Bar';
+ all_from 'lib/Foo/Bar.pm';
+ requires 'Baz' => '1.60';
# one of either:
- auto_bundle(); # OR
- bundle("Baz" => "1.60");
+ bundle 'Baz' => '1.60';
+ # OR:
+ auto_bundle;
&WriteAll;
@@ -147,6 +159,11 @@
requires( perl => 5.005 );
+=item * auto_bundle_deps
+
+Same as C<auto_bundle>, except that all dependencies of the bundled
+modules are also detected and bundled. This function has the same constraints as bundle_deps.
+
=back
=head1 BUGS
@@ -157,13 +174,13 @@
=head1 AUTHORS
-Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+Audrey 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>.
+Copyright 2003, 2004, 2005 by Audrey 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.
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Can.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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';
@@ -10,6 +7,20 @@
use File::Spec ();
use ExtUtils::MakeMaker ();
+# check if we can load some module
+sub can_use {
+ my ($self, $mod, $ver) = @_;
+ $mod =~ s{::|\\}{/}g;
+ $mod .= ".pm" unless $mod =~ /\.pm$/i;
+
+ my $pkg = $mod;
+ $pkg =~ s{/}{::}g;
+ $pkg =~ s{\.pm$}{}i;
+
+ local $@;
+ eval { require $mod; $pkg->VERSION($ver || 0); 1 };
+}
+
# check if we can run some command
sub can_run {
my ($self, $cmd) = @_;
@@ -37,4 +48,20 @@
return;
}
+# Fix Cygwin bug on maybe_command();
+if ($^O eq 'cygwin') {
+ require ExtUtils::MM_Cygwin;
+ if (!defined(&ExtUtils::MM_Cygwin::maybe_command)) {
+ *ExtUtils::MM_Cygwin::maybe_command = sub {
+ my ($self, $file) = @_;
+ if ($file =~ m{^/cygdrive/}i) {
+ ExtUtils::MM_Win32->maybe_command($file);
+ }
+ else {
+ $self->SUPER::maybe_command($file);
+ }
+ }
+ }
+}
+
1;
Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Compiler.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Compiler.pm 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Compiler.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -0,0 +1,25 @@
+package Module::Install::Compiler;
+use Module::Install::Base; @ISA = qw(Module::Install::Base);
+$VERSION = '0.01';
+
+use strict;
+use File::Basename ();
+
+sub c_files {
+ my $self = shift;
+ require Config;
+ my $_o = $Config::Config{_o};
+ $self->makemaker_args(OBJECT => join ' ', map { substr($_, 0, -2) . $_o } @_);
+}
+
+sub inc_paths {
+ my $self = shift;
+ $self->makemaker_args(INC => join ' ', map { "-I$_" } @_);
+}
+
+sub optimize_flags {
+ my $self = shift;
+ $self->makemaker_args(OPTIMIZE => join ' ', @_);
+}
+
+1;
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Fetch.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Include.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Inline.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/MakeMaker.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Name.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile/Version.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Makefile.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
@@ -25,6 +22,14 @@
$args;
}
+sub build_subdirs {
+ my $self = shift;
+ my $subdirs = $self->makemaker_args->{DIR} ||= [];
+ for my $subdir (@_) {
+ push @$subdirs, $subdir;
+ }
+}
+
sub clean_files {
my $self = shift;
my $clean = $self->makemaker_args->{clean} ||= {};
@@ -56,6 +61,8 @@
$args->{VERSION} = $self->version || $self->determine_VERSION($args);
$args->{NAME} =~ s/-/::/g;
+ $args->{test} = {TESTS => $self->tests} if $self->tests;
+
if ($] >= 5.005) {
$args->{ABSTRACT} = $self->abstract;
$args->{AUTHOR} = $self->author;
@@ -74,10 +81,13 @@
($self->build_requires, $self->requires) );
# merge both kinds of requires into prereq_pm
- my $dir = ($args->{DIR} ||= []);
+ my $subdirs = ($args->{DIR} ||= []);
if ($self->bundles) {
- push @$dir, map "$_->[1]", @{$self->bundles};
- delete $prereq->{$_->[0]} for @{$self->bundles};
+ foreach my $bundle (@{ $self->bundles }) {
+ my ($file, $dir) = @$bundle;
+ push @$subdirs, $dir if -d $dir;
+ delete $prereq->{$file};
+ }
}
if (my $perl_version = $self->perl_version) {
@@ -108,6 +118,7 @@
my $postamble = "# Postamble by $top_class $top_version\n" .
($self->postamble || '');
+ local *MAKEFILE;
open MAKEFILE, '< Makefile' or die $!;
my $makefile = do { local $/; <MAKEFILE> };
close MAKEFILE;
@@ -257,14 +268,14 @@
=head1 AUTHORS
-Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+Audrey 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>,
+Audrey 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
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Metadata.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,150 +1,174 @@
-# $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);
+use Module::Install::Base;
+ at ISA = qw(Module::Install::Base);
-$VERSION = '0.04';
+$VERSION = '0.05';
use strict 'vars';
use vars qw($VERSION);
+my @scalar_keys = qw<
+ name module_name version abstract author license
+ distribution_type perl_version tests
+>;
+my @tuple_keys = qw<
+ build_requires requires recommends bundles
+>;
+
sub Meta { shift }
+sub Meta_ScalarKeys { @scalar_keys }
+sub Meta_TupleKeys { @tuple_keys }
-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->{values}{$key} if defined wantarray and !@_;
+ $self->{values}{$key} = shift;
return $self;
};
}
+sub sign {
+ my $self = shift;
+ return $self->{values}{sign} if defined wantarray and !@_;
+ $self->{values}{sign} = ( @_ ? $_[0] : 1 );
+ return $self;
+}
+
foreach my $key (@tuple_keys) {
*$key = sub {
my $self = shift;
- return $self->{'values'}{$key} unless @_;
+ return $self->{values}{$key} unless @_;
+
my @rv;
while (@_) {
- my $module = shift or last;
+ my $module = shift or last;
my $version = shift || 0;
- if ($module eq 'perl') {
+ 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;
+ my $rv = [ $module, $version ];
push @rv, $rv;
}
- return @rv;
+ push @{ $self->{values}{$key} }, @rv;
+ @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
- ] );
+sub all_from {
+ my ( $self, $file ) = @_;
+
+ $self->version_from($file) unless $self->version;
+ $self->perl_version_from($file) unless $self->perl_version;
+
+ # The remaining probes read from POD sections; if the file
+ # has an accompanying .pod, use that instead
+ my $pod = $file;
+ if ( $pod =~ s/\.pm$/.pod/i and -e $pod ) {
+ $file = $pod;
}
- return @{$self->{'values'}{'features'}};
+
+ $self->author_from($file) unless $self->author;
+ $self->license_from($file) unless $self->license;
+ $self->abstract_from($file) unless $self->abstract;
}
-sub no_index {
- my $self = shift;
- my $type = shift;
- push @{$self->{'values'}{'no_index'}{$type}}, @_ if $type;
- return $self->{'values'}{'no_index'};
+sub provides {
+ my $self = shift;
+ my $provides = ( $self->{values}{provides} ||= {} );
+ %$provides = (%$provides, @_) if @_;
+ return $provides;
}
-sub _dump {
+sub auto_provides {
my $self = shift;
- my $package = ref($self->_top);
- my $version = $self->_top->VERSION;
- my %values = %{$self->{'values'}};
+ return $self unless $self->is_admin;
- 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}||[]},
- ];
+ unless (-e 'MANIFEST') {
+ warn "Cannot deduce auto_provides without a MANIFEST, skipping\n";
+ return $self;
}
- warn "No license specified, setting license = 'unknown'\n"
- unless $values{license};
+ # Avoid spurious warnings as we are not checking manifest here.
- $values{license} ||= 'unknown';
- $values{distribution_type} ||= 'module';
- $values{name} ||= do {
- my $name = $values{module_name};
- $name =~ s/::/-/g;
- $name;
- } if $values{module_name};
+ local $SIG{__WARN__} = sub {1};
+ require ExtUtils::Manifest;
+ local *ExtUtils::Manifest::manicheck = sub { return };
- if ($values{name} =~ /::/) {
- my $name = $values{name};
- $name =~ s/::/-/g;
- die "Error in name(): '$values{name}' should be '$name'!\n";
- }
+ require Module::Build;
+ my $build = Module::Build->new(
+ dist_name => $self->{name},
+ dist_version => $self->{version},
+ license => $self->{license},
+ );
+ $self->provides(%{ $build->find_dist_packages || {} });
+}
- 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";
- }
- }
+sub feature {
+ my $self = shift;
+ my $name = shift;
+ my $features = ( $self->{values}{features} ||= [] );
- 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});
+ my $mods;
+
+ if ( @_ == 1 and ref( $_[0] ) ) {
+ # The user used ->feature like ->features by passing in the second
+ # argument as a reference. Accomodate for that.
+ $mods = $_[0];
}
else {
- $dump .= << "META";
-no_index:
- directory:
- - inc
-META
+ $mods = \@_;
}
-
- $dump .= "generated_by: $package version $version\n";
- return $dump;
+
+ my $count = 0;
+ push @$features, (
+ $name => [
+ map {
+ ref($_) ? ( ref($_) eq 'HASH' ) ? %$_
+ : @$_
+ : $_
+ } @$mods
+ ]
+ );
+
+ return @$features;
}
+sub features {
+ my $self = shift;
+ while ( my ( $name, $mods ) = splice( @_, 0, 2 ) ) {
+ $self->feature( $name, @$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 read {
my $self = shift;
$self->include_deps( 'YAML', 0 );
+
require YAML;
- my $data = YAML::LoadFile( 'META.yml' );
+ 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 );
+ while ( my ( $key, $value ) = each %$data ) {
+ next unless $self->can($key);
+ if ( ref $value eq 'HASH' ) {
+ while ( my ( $module, $version ) = each %$value ) {
+ $self->can($key)->($self, $module => $version );
}
}
else {
- $self->$key( $value );
+ $self->can($key)->($self, $value);
}
}
return $self;
@@ -153,37 +177,110 @@
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;
+ $self->admin->write_meta;
return $self;
}
sub version_from {
- my ($self, $version_from) = @_;
+ my ( $self, $file ) = @_;
require ExtUtils::MM_Unix;
- $self->version(ExtUtils::MM_Unix->parse_version($version_from));
+ $self->version( ExtUtils::MM_Unix->parse_version($file) );
}
sub abstract_from {
- my ($self, $abstract_from) = @_;
+ my ( $self, $file ) = @_;
require ExtUtils::MM_Unix;
$self->abstract(
- bless( { DISTNAME => $self->name }, 'ExtUtils::MM_Unix')
- ->parse_abstract($abstract_from)
- );
+ bless( { DISTNAME => $self->name }, 'ExtUtils::MM_Unix' )
+ ->parse_abstract($file) );
}
+sub _slurp {
+ my ( $self, $file ) = @_;
+
+ local *FH;
+ open FH, "< $file" or die "Cannot open $file.pod: $!";
+ do { local $/; <FH> };
+}
+
+sub perl_version_from {
+ my ( $self, $file ) = @_;
+
+ if (
+ $self->_slurp($file) =~ m/
+ ^
+ use \s*
+ v?
+ ([\d\.]+)
+ \s* ;
+ /ixms
+ )
+ {
+ $self->perl_version($1);
+ }
+ else {
+ warn "Cannot determine perl version info from $file\n";
+ return;
+ }
+}
+
+sub author_from {
+ my ( $self, $file ) = @_;
+ my $content = $self->_slurp($file);
+ if ($content =~ m/
+ =head \d \s+ (?:authors?)\b \s*
+ ([^\n]*)
+ |
+ =head \d \s+ (?:licen[cs]e|licensing|copyright|legal)\b \s*
+ .*? copyright .*? \d\d\d[\d.]+ \s* (?:\bby\b)? \s*
+ ([^\n]*)
+ /ixms) {
+ my $author = $1 || $2;
+ $author =~ s{E<lt>}{<}g;
+ $author =~ s{E<gt>}{>}g;
+ $self->author($author);
+ }
+ else {
+ warn "Cannot determine author info from $file\n";
+ }
+}
+
+sub license_from {
+ my ( $self, $file ) = @_;
+
+ if (
+ $self->_slurp($file) =~ m/
+ =head \d \s+
+ (?:licen[cs]e|licensing|copyright|legal)\b
+ (.*?)
+ (=head\\d.*|=cut.*|)
+ \z
+ /ixms
+ )
+ {
+ my $license_text = $1;
+ my @phrases = (
+ 'under the same (?:terms|license) as perl itself' => 'perl',
+ 'GNU public license' => 'gpl',
+ 'GNU lesser public license' => 'gpl',
+ 'BSD license' => 'bsd',
+ 'Artistic license' => 'artistic',
+ 'GPL' => 'gpl',
+ 'LGPL' => 'lgpl',
+ 'BSD' => 'bsd',
+ 'Artistic' => 'artistic',
+ );
+ while ( my ( $pattern, $license ) = splice( @phrases, 0, 2 ) ) {
+ $pattern =~ s{\s+}{\\s+}g;
+ if ( $license_text =~ /\b$pattern\b/i ) {
+ $self->license($license);
+ return 1;
+ }
+ }
+ }
+
+ warn "Cannot determine license info from $file\n";
+ return 'unknown';
+}
+
1;
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/PAR.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Run.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Scripts.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,9 +1,6 @@
-# $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';
+$VERSION = '0.02';
use strict;
use File::Basename ();
@@ -28,10 +25,10 @@
}
sub install_script {
- my ($self, $script_file) = @_;
+ my $self = shift;
my $args = $self->makemaker_args;
my $exe_files = $args->{EXE_FILES} ||= [];
- push @$exe_files, $script_file;
+ push @$exe_files, @_;
}
sub _read_script {
Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Share.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Share.pm 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Share.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -0,0 +1,62 @@
+package Module::Install::Share;
+
+use Module::Install::Base;
+ at ISA = qw(Module::Install::Base);
+
+$VERSION = '0.01';
+
+use strict;
+
+sub install_share {
+ my $self = shift;
+ my $dir = shift;
+
+ if ( ! defined $dir ) {
+ die "Cannot find the 'share' directory" unless -d 'share';
+ $dir = 'share';
+ }
+
+ $self->postamble(<<".");
+config ::
+\t\$(NOECHO) \$(MOD_INSTALL) \\
+\t\t\"$dir\" \$(INST_ARCHAUTODIR)
+
+.
+}
+
+__END__
+
+=head1 NAME
+
+Module::Install::Share - Install non-code files for use during runtime
+
+=head1 SYNOPSIS
+
+ # Put everything inside ./share/ into the distribution 'auto' path
+ install_share 'share';
+
+ # Same thing as above using the default directory name
+ install_share;
+
+=head1 DESCRIPTION
+
+As well as Perl modules and Perl binary applications, some distributions
+need to install read-only data files to a location on the file system
+for use at run-time.
+
+XML Schemas, YAML data files, and SQLite databases are examples of the
+sort of things distributions might typically need to have available
+after installation.
+
+Module::Install::Share is a L<Module::Install> extension that provides
+commands to allow these files to be installed to the applicable location
+on disk.
+
+To locate the files after installation so they can be used inside your
+module, see this extension's companion module L<File::ShareDir>.
+
+=head1 SEE ALSO
+
+L<Module::Install>, L<File::ShareDir>
+
+=cut
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/Win32.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install/WriteAll.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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);
Deleted: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Cookbook.pod 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,125 +0,0 @@
-# $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
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install-Philosophy.pod 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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
Modified: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pm
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pm 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,9 +1,8 @@
-# $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';
+use 5.004;
+$VERSION = '0.50'; # Don't forget to update Module::Install::Admin too!
+
die << "." unless $INC{join('/', inc => split(/::/, __PACKAGE__)).'.pm'};
Please invoke ${\__PACKAGE__} with:
@@ -16,119 +15,32 @@
.
use strict 'vars';
-use Cwd ();
+use Cwd qw(cwd abs_path);
+use FindBin;
use File::Find ();
use File::Path ();
@inc::Module::Install::ISA = 'Module::Install';
+*inc::Module::Install::VERSION = *VERSION;
-=head1 NAME
+sub autoload {
+ my $self = shift;
+ my $caller = $self->_caller;
-Module::Install - Standalone, extensible Perl module installer
+ my $cwd = cwd();
+ my $sym = "$caller\::AUTOLOAD";
-=head1 VERSION
+ $sym->{$cwd} = sub {
+ my $pwd = cwd();
+ if (my $code = $sym->{$pwd}) {
+ goto &$code unless $cwd eq $pwd; # delegate back to parent dirs
+ }
+ $$sym =~ /([^:]+)$/ or die "Cannot autoload $caller - $sym";
+ unshift @_, ($self, $1);
+ goto &{$self->can('call')} unless uc($1) eq $1;
+ };
+}
-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(@_);
@@ -143,53 +55,61 @@
goto &{"$self->{name}::import"};
}
- *{caller(0) . "::AUTOLOAD"} = $self->autoload;
+ *{$self->_caller . "::AUTOLOAD"} = $self->autoload;
+ $self->preload;
# Unregister loader and worker packages so subdirs can use them again
delete $INC{"$self->{file}"};
delete $INC{"$self->{path}.pm"};
}
-=item autoload()
+sub preload {
+ my ($self) = @_;
-Returns an AUTOLOAD handler bound to the caller package.
+ $self->load_extensions(
+ "$self->{prefix}/$self->{path}", $self
+ ) unless $self->{extensions};
-=cut
+ my @exts = @{$self->{extensions}};
-sub autoload {
- my $self = shift;
- my $caller = caller;
+ unless (@exts) {
+ my $admin = $self->{admin};
+ @exts = $admin->load_all_extensions;
+ }
- 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
+ my %seen_method;
+ foreach my $obj (@exts) {
+ while (my ($method, $glob) = each %{ref($obj) . '::'}) {
+ next unless defined *{$glob}{CODE};
+ next if $method =~ /^_/;
+ next if $method eq uc($method);
+ $seen_method{$method}++;
}
- $$sym =~ /([^:]+)$/ or die "Cannot autoload $caller";
- unshift @_, ($self, $1);
- goto &{$self->can('call')} unless uc($1) eq $1;
- };
+ }
+
+ my $caller = $self->_caller;
+ foreach my $name (sort keys %seen_method) {
+ *{"${caller}::$name"} = sub {
+ ${"${caller}::AUTOLOAD"} = "${caller}::$name";
+ goto &{"${caller}::AUTOLOAD"};
+ };
+ }
}
-=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) = @_;
+ # ignore the prefix on extension modules built from top level.
+ my $base_path = abs_path($FindBin::Bin);
+ delete $args{prefix} unless abs_path(cwd()) eq $base_path;
+
return $args{_self} if $args{_self};
$args{dispatch} ||= 'Admin';
$args{prefix} ||= 'inc';
$args{author} ||= '.author';
$args{bundle} ||= 'inc/BUNDLES';
+ $args{base} ||= $base_path;
$class =~ s/^\Q$args{prefix}\E:://;
$args{name} ||= $class;
@@ -199,32 +119,20 @@
$args{path} = $args{name};
$args{path} =~ s!::!/!g;
}
- $args{file} ||= "$args{prefix}/$args{path}.pm";
+ $args{file} ||= "$args{base}/$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;
+ 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) = @_;
@@ -247,14 +155,6 @@
$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) = @_;
@@ -266,19 +166,16 @@
my ($file, $pkg) = @{$rv};
next if $self->{pathnames}{$pkg};
- eval { require $file; 1 } or (warn($@), next);
+ local $@;
+ my $new = eval { require $file; $pkg->can('new') };
+ if (!$new) { warn $@ if $@; next; }
$self->{pathnames}{$pkg} = delete $INC{$file};
- push @{$self->{extensions}}, $pkg->new( _top => $top_obj );
+ push @{$self->{extensions}}, &{$new}($pkg, _top => $top_obj );
}
+
+ $self->{extensions} ||= [];
}
-=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;
@@ -296,323 +193,16 @@
@found;
}
-1;
+sub _caller {
+ my $depth = 0;
+ my $caller = caller($depth);
-__END__
+ while ($caller eq __PACKAGE__) {
+ $depth++;
+ $caller = caller($depth);
+ }
-=back
+ $caller;
+}
-=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
+1;
Added: packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pod
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pod 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/Module/Install.pod 2005-12-30 11:12:30 UTC (rev 1803)
@@ -0,0 +1,544 @@
+=pod
+
+=head1 NAME
+
+Module::Install - Standalone, extensible Perl module installer
+
+=head1 VERSION
+
+This document describes version 0.50 of Module::Install, released
+December 26, 2005.
+
+=head1 SYNOPSIS
+
+In your F<Makefile.PL>: (Recommended Usage)
+
+ # Load the Module::Install bundled in ./inc/
+ use inc::Module::Install;
+
+ # Name of your distribution
+ name 'Your-Module';
+
+ # Get most of the details from the primary module
+ all_from 'lib/Your/Module.pm';
+
+ # Modules that this distribution depend on
+ requires 'Carp';
+ requires 'File::Spec' => '0.80';
+
+ # Modules needed for building and testing
+ build_requires 'Test::More' => '0.42';
+
+ # Optional module dependencies
+ recommends 'Your::OtherModule' => '0.01';
+
+ # Auto-installs all dependencies from CPAN.
+ # You want to use this most of the time, especially
+ # if you use the 'recommend' or 'feature' commands
+ auto_install;
+
+ # Generate the Makefile
+ WriteAll;
+
+Quickly upgrade a legacy L<ExtUtil::MakeMaker> installer:
+
+ # Drop-in replacement to ExtUtils::MakeMaker
+ use inc::Module::Install;
+ WriteMakefile( ... );
+
+A dummy F<Build.PL> so we can work with L<Module::Build> as well:
+
+ # Dear Distribution Packager. This use of require is intentional.
+ # Module::Install detects Build.PL usage and acts accordingly.
+ require 'Makefile.PL';
+
+=head1 DESCRIPTION
+
+B<Module::Install> is a package for writing installers for CPAN distributions
+that are clean, simple and minimalistic, act in a strictly correct manner
+with B<both> the L<ExtUtils::MakeMaker> and L<Module::Build> build systems,
+and run on any Perl installation version 5.004 or newer.
+
+The intent is to make it as easy as possible for CPAN authors (and
+especially for first-time CPAN authors) to have installers that follow
+all the best practices for distribution installation, but involve as much
+DWIM (Do What I Mean) as possible when writing them.
+
+=head2 Writing Module::Install Installers
+
+The quickest way to get started with Module::Install is simply to cut
+and paste the L</SYNOPSIS> from above and create your F<Makefile.PL>
+using it, when modify the file to suit your particular case using the
+list of commands documented in L</COMMANDS> below.
+
+If all you want to do is write an installer, go do that now. You don't
+really need the rest of this description unless you are interested.
+
+=head1 How it Works
+
+The motivation behind B<Module::Install> is that distributions need
+to interact with a large number of different versions of Perl module
+installers (primarily L<CPAN.pm>, L<CPANPLUS.pm>, L<ExtUtils::MakeMaker>
+and L<Module::Build>) which have B<greatly> varying feature and bug
+profiles.
+
+For example, the L<CPAN.pm> version shipped with Perl 5.005 is now 5+ years
+old and considered highly buggy, yet it still exists on quite a number of
+legacy machines. Rather than try to target one specific installer and/or
+make you add twisty workaround expressions to your code, B<Module::Install>
+will copy part of itself into each module distribution it creates.
+
+This allows new improvements to be used regardless of the age of the system a
+distribution is being installed to, at the cost of a very small increase in the
+size of your module distribution.
+
+=head2 History
+
+This module was originally written as a smart drop-in replacement for
+B<ExtUtils::MakeMaker> by Brian Ingerson.
+
+For more information, see Brian's I<Creating Module Distributions with
+Module::Install> in June 2003 issue of The Perl Journal
+(L<http://www.tpj.com/issues/>).
+
+For a B<lot> more information, and some personal opinions on the module
+and its creation, see L<Module::Install-Philosophy>.
+
+=head1 COMMANDS
+
+The following are the most common commands available for use in an
+installer.
+
+=head2 name
+
+ name 'My-Module;
+
+The B<name> command is a compulsory (and generally the first) command.
+
+It provides the name of your distribution, which for a module like
+B<Your::Module> would normally be C<Your-Module>.
+
+=head2 all_from
+
+ all_from 'lib/My/Module';
+
+For most simple or standard Perl distributions that feature one
+dominant module/class as the base, you can get the most Do What I Mean
+functionality by using the B<all_from> command, which will try to
+extract as much metadata as possible from the Perl and POD in the
+module itself.
+
+=head2 abstract
+
+ abstract 'This distribution does something';
+
+All distributions have an abstract, a short description of the entires
+distribution, usually around 30-70 characters long.
+
+The C<abstract> command is used to explicitly set the abstract for the
+distribution, at least as far as the distribution metadata file is
+concerned.
+
+=head2 abstract_from
+
+ abstract_from 'lib/My/Module';
+
+The C<abstract_from> command retrieves the abstract from a particular
+file contained in the distribution package. Most often this is done
+from the main module, where it will read the POD and use whatever
+is in the C<=head1 NAME> section (with module name removed as needed)
+
+=head2 author
+
+ author 'Adam Kennedy <cpan at ali.as>';
+
+The distribution metadata contains information on the author of the
+primary author/maintainer of the distribution, in the form of an
+email address.
+
+The C<author> command is used to explicitly set this value.
+
+=head2 author_from
+
+ author_from 'lib/My/Module';
+
+The C<author_from> command retrievs the author from a particular
+file contained in the distribution package. Most often this is done
+from the main module, where it read the POD and use whatever it
+can find in the C<=head1 AUTHOR> section.
+
+=head2 WriteAll
+
+The C<WriteAll> command is generally the last command; it writes out
+F<META.yml> and F<Makefile> so the user can type C<make install>.
+
+=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.pm> or B<CPAN.pm>, specified either by
+the C<features> metadata or by method arguments.
+
+=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 and HTTP.
+
+=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 the name of the invoked
+program.
+
+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 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.
+
+=item autoload()
+
+Returns an AUTOLOAD handler bound to the caller package.
+
+=back
+
+=item new(%args)
+
+Constructor, taking a hash of named arguments. Usually you do not want
+change any of them.
+
+=item call($method, @args)
+
+Call an extension method, passing C<@args> to it.
+
+=item load($method)
+
+Include and load an extension object implementing C<$method>.
+
+=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.
+
+=item load_extensions($path)
+
+Returns an array of C<[ $file_name, $package_name ]> for each extension
+module found under C<$path> and its subdirectories.
+
+=head1 FAQ
+
+=head2 What are the benefits of using B<Module::Install>?
+
+Here is a brief overview of the reasons:
+
+=over 4
+
+=item * Does everything ExtUtils::MakeMaker does.
+
+=item * Requires no installation for end-users.
+
+=item * Generate stock Makefile.PL for Module::Build users.
+
+=item * Guaranteed forward-compatibility.
+
+=item * Automatically updates your MANIFEST.
+
+=item * Distributing scripts is easy.
+
+=item * Include prerequisite modules (even the entire dependency tree).
+
+=item * Auto-installation of prerequisites.
+
+=item * Support for Inline-based modules.
+
+=item * Support for precompiled PAR binaries.
+
+=cut
+
+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-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>
+
+Audrey Tang E<lt>autrijus at autrijus.orgE<gt>
+
+Adam Kennedy E<lt>cpan at ali.asE<gt>
+
+=head1 COPYRIGHT
+
+Copyright 2002, 2003, 2004, 2005 by
+ Adam Kennedy E<lt>cpan at ali.asE<gt>
+ Audrey 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
Modified: 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-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/lib/inc/Module/Install.pm 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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') {
@@ -10,7 +7,6 @@
unshift @INC, 'inc';
require Module::Install;
-*VERSION = *Module::Install::VERSION;
1;
@@ -49,11 +45,11 @@
=head1 AUTHORS
-Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>
+Audrey Tang E<lt>autrijus at autrijus.orgE<gt>
=head1 COPYRIGHT
-Copyright 2003, 2004 by Autrijus Tang E<lt>autrijus at autrijus.orgE<gt>.
+Copyright 2003, 2004 by Audrey 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.
Deleted: packages/libmodule-install-perl/branches/upstream/current/t/0-signature.t
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/t/0-signature.t 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/t/0-signature.t 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,24 +0,0 @@
-#!/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";
-}
-
Modified: packages/libmodule-install-perl/branches/upstream/current/t/1-basic.t
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/t/1-basic.t 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/t/1-basic.t 2005-12-30 11:12:30 UTC (rev 1803)
@@ -1,6 +1,3 @@
-# $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;
@@ -38,6 +35,7 @@
open MAKEFILE_PL, '> Makefile.PL' or return 0;
print MAKEFILE_PL <<END;
use inc::Module::Install;
+license 'perl';
WriteMakefile;
END
close MAKEFILE_PL;
@@ -67,7 +65,7 @@
return 0 unless -d $dist_path;
my $home = cwd;
chdir $dist_path or return 0;
- system($^X, "-Mblib", "Makefile.PL") == 0 or return 0;
+ system($^X, "-Ilib", "-Iblib/lib", "Makefile.PL") == 0 or return 0;
chdir $home or return 0;
return 1;
}
Added: packages/libmodule-install-perl/branches/upstream/current/t/2-pod.t
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/t/2-pod.t 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/t/2-pod.t 2005-12-30 11:12:30 UTC (rev 1803)
@@ -0,0 +1,16 @@
+if ( !$ENV{TEST_POD} ) {
+ print "1..0 # Skip set TEST_POD to enable this test\n";
+ exit;
+}
+
+eval "
+use Test::More;
+use Test::Pod 1.14
+";
+
+if ( $@ ) {
+ print "1..0 # Skip Test::More and Test::Pod 1.14 required - $@\n";
+ exit;
+}
+
+all_pod_files_ok();
Added: packages/libmodule-install-perl/branches/upstream/current/t/3-autoinstall.t
===================================================================
--- packages/libmodule-install-perl/branches/upstream/current/t/3-autoinstall.t 2005-12-30 11:10:26 UTC (rev 1802)
+++ packages/libmodule-install-perl/branches/upstream/current/t/3-autoinstall.t 2005-12-30 11:12:30 UTC (rev 1803)
@@ -0,0 +1,106 @@
+#!/usr/bin/perl
+
+use strict;
+use Test;
+use Data::Dumper;
+
+BEGIN { plan tests => 6; $^W = 0; };
+
+# Intercepts calls to WriteMakefile and prompt.
+my $mm_args;
+my @prompts = qw/y n n y y/;
+
+use ExtUtils::MakeMaker;
+sub ExtUtils::MakeMaker::WriteMakefile { $mm_args = {@_} }
+sub ExtUtils::MakeMaker::prompt ($;$) { return 'n' }
+
+# tiehandle trick to intercept STDOUT.
+sub PRINT { my $self = shift; $$self .= join '', @_; }
+sub PRINTF { my $self = shift; $$self .= sprintf(shift, @_); }
+sub TIEHANDLE { my $self = ''; return bless \$self, shift; }
+sub READ {} sub READLINE {} sub GETC {} sub FILENO {}
+
+require Symbol;
+my $fh = Symbol::gensym;
+my $out = tie *$fh, __PACKAGE__;
+select(*$fh);
+
+# test from a clean state
+$ENV{PERL_AUTOINSTALL} = '';
+require Module::AutoInstall;
+Module::AutoInstall::_accept_default(0);
+*Module::AutoInstall::_prompt = sub {
+ ok($_[1], shift(@prompts));
+ return 'n';
+};
+
+# calls the module.
+ok(eval <<'.', $@);
+use Module::AutoInstall (
+ -version => '0.21', # Module::AutoInstall version
+ -config => {
+ make_args => '--hello' # option(s) for CPAN::Config
+ },
+ -core => [ # core modules
+ Package0 => '', # any version would do
+ ],
+ 'Feature1' => [
+ # do we want to install this feature by default?
+ -default => 0,
+ Package1 => '0.01',
+ ],
+ 'Feature2' => [
+ # associate tests to be disabled along with this
+ -tests => [ $0 ],
+ Package2 => '0.02',
+ ],
+ 'Feature3' => { # hash reference works, too
+ Package3 => '0.03',
+ },
+); '';
+.
+
+# simulates a makefile.
+WriteMakefile(
+ AUTHOR => 'Joe Hacker (joe at hacker.org)',
+ ABSTRACT => 'Perl Interface to Joe Hacker',
+ NAME => 'Joe::Hacker',
+ VERSION_FROM => 'Hacker.pm',
+ DISTNAME => 'Joe-Hacker',
+ EXE_FILES => [ qw/foo bar baz/ ],
+);
+
+# XXX - test currently disabled in anticipation of a
+# rewrite using Test::MockObject.
+
+exit;
+
+$$out =~ s/.*\n//; # strip the version-dependent line.
+
+ok($$out, qr/\Q*** Checking for dependencies...
+[Core Features]
+- Package0 ...failed! (needed)
+[Feature1]
+- Package1 ...failed! (needs 0.01)
+[Feature2]
+- Package2 ...failed! (needs 0.02)
+[Feature3]
+- Package3 ...failed! (needs 0.03)\E
+.*\Q
+*** Module::AutoInstall configuration finished.\E/s);
+
+use vars qw/@Data_Stack $DNE/;
+$mm_args->{test}{TESTS} = ''; # XXX: workaround false-positive globbing
+
+ok(
+ Data::Dumper::Dumper($mm_args),
+ Data::Dumper::Dumper({
+ ABSTRACT => 'Perl Interface to Joe Hacker',
+ test => { 'TESTS' => '' },
+ NAME => 'Joe::Hacker',
+ DISTNAME => 'Joe-Hacker',
+ AUTHOR => 'Joe Hacker (joe at hacker.org)',
+ EXE_FILES => [],
+ VERSION_FROM => 'Hacker.pm',
+ })
+);
More information about the Pkg-perl-cvs-commits
mailing list