Imported Upstream version 0.15 upstream/0.15
authorIan Beckwith <ianb@erislabs.net>
Sun, 22 Nov 2009 00:06:14 +0000 (00:06 +0000)
committerIan Beckwith <ianb@erislabs.net>
Sun, 22 Nov 2009 00:06:14 +0000 (00:06 +0000)
24 files changed:
Changes
MANIFEST
META.yml
Makefile.PL
README
inc/Module/AutoInstall.pm [deleted file]
inc/Module/Install.pm
inc/Module/Install/AutoInstall.pm [deleted file]
inc/Module/Install/Base.pm
inc/Module/Install/Can.pm
inc/Module/Install/Fetch.pm
inc/Module/Install/Include.pm [deleted file]
inc/Module/Install/Makefile.pm
inc/Module/Install/Metadata.pm
inc/Module/Install/Win32.pm
inc/Module/Install/WriteAll.pm
lib/WWW/OpenSearch.pm
lib/WWW/OpenSearch/Agent.pm
lib/WWW/OpenSearch/Description.pm
lib/WWW/OpenSearch/Image.pm
lib/WWW/OpenSearch/Query.pm
lib/WWW/OpenSearch/Request.pm
lib/WWW/OpenSearch/Response.pm
lib/WWW/OpenSearch/Url.pm

diff --git a/Changes b/Changes
index 5244f70..a72097e 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,5 +1,8 @@
 Revision history for Perl extension WWW::OpenSearch
 
+0.15    Thu Nov 19 2009
+        - repackaged with a new version of Module::Install
+
 0.14    Thu Apr 17 2008
         - Handle broken LWP 5.810 in Makefile.PL
 
index 6104660..a9eee68 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1,11 +1,8 @@
 Changes
-inc/Module/AutoInstall.pm
 inc/Module/Install.pm
-inc/Module/Install/AutoInstall.pm
 inc/Module/Install/Base.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/Win32.pm
index f2ebbb1..5a74d5a 100644 (file)
--- a/META.yml
+++ b/META.yml
@@ -3,13 +3,16 @@ abstract: 'Search A9 OpenSearch compatible engines'
 author:
   - 'Brian Cassidy <bricas@cpan.org>'
 build_requires:
+  ExtUtils::MakeMaker: 6.42
   Test::More: 0
+configure_requires:
+  ExtUtils::MakeMaker: 6.42
 distribution_type: module
-generated_by: 'Module::Install version 0.71'
+generated_by: 'Module::Install version 0.91'
 license: perl
 meta-spec:
-  url: http://module-build.sourceforge.net/META-spec-v1.3.html
-  version: 1.3
+  url: http://module-build.sourceforge.net/META-spec-v1.4.html
+  version: 1.4
 name: WWW-OpenSearch
 no_index:
   directory:
@@ -24,4 +27,7 @@ requires:
   XML::Feed: 0.08
   XML::LibXML: 1.58
   perl: 5.8.1
-version: 0.14
+resources:
+  license: http://dev.perl.org/licenses/
+  repository: http://github.com/bricas/www-opensearch/tree/master
+version: 0.15
index f24bf8d..698e9bb 100644 (file)
@@ -1,4 +1,4 @@
-use inc::Module::Install 0.71;
+use inc::Module::Install 0.91;
 
 if ( -e 'MANIFEST.SKIP' ) {
     system( 'pod2text lib/WWW/OpenSearch.pm > README' );
@@ -22,5 +22,6 @@ requires 'URI::Template';
 
 test_requires 'Test::More';
 
-auto_install;
+repository 'http://github.com/bricas/www-opensearch/tree/master';
+
 WriteAll;
diff --git a/README b/README
index 6f15746..d261f48 100644 (file)
--- a/README
+++ b/README
@@ -42,10 +42,13 @@ METHODS
     Searches the engine for the given query using the given search
     parameters. Valid search parameters include:
 
-    * startPage
-    * totalResults
-    * startIndex
-    * itemsPerPage
+    *   startPage
+
+    *   totalResults
+
+    *   startIndex
+
+    *   itemsPerPage
 
     See http://opensearch.a9.com/spec/1.1/response/#elements for details.
 
@@ -63,7 +66,7 @@ AUTHOR
     Tatsuhiko Miyagawa <miyagawa@bulknews.net>
 
 COPYRIGHT AND LICENSE
-    Copyright 2008 by Tatsuhiko Miyagawa and Brian Cassidy
+    Copyright 2005-2009 by Tatsuhiko Miyagawa and Brian Cassidy
 
     This library is free software; you can redistribute it and/or modify it
     under the same terms as Perl itself.
diff --git a/inc/Module/AutoInstall.pm b/inc/Module/AutoInstall.pm
deleted file mode 100644 (file)
index 7efc552..0000000
+++ /dev/null
@@ -1,768 +0,0 @@
-#line 1
-package Module::AutoInstall;
-
-use strict;
-use Cwd                 ();
-use ExtUtils::MakeMaker ();
-
-use vars qw{$VERSION};
-BEGIN {
-       $VERSION = '1.03';
-}
-
-# 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 );
-
-# See if it's a testing or non-interactive session
-_accept_default( $ENV{AUTOMATED_TESTING} or ! -t STDIN ); 
-_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 Perl 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;
-        }
-    }
-
-    $UnderCPAN = _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';
-}
-
-# Check to see if we are currently running under CPAN.pm and/or CPANPLUS;
-# if we are, then we simply let it taking care of our dependencies
-sub _check_lock {
-    return unless @Missing;
-
-    if ($ENV{PERL5_CPANPLUS_IS_RUNNING}) {
-        print <<'END_MESSAGE';
-
-*** Since we're running under CPANPLUS, I'll just let it take care
-    of the dependency's installation later.
-END_MESSAGE
-        return 1;
-    }
-
-    _load_cpan();
-
-    # Find the CPAN lock-file
-    my $lock = MM->catfile( $CPAN::Config->{cpan_home}, ".lock" );
-    return unless -f $lock;
-
-    # Check the lock
-    local *LOCK;
-    return unless open(LOCK, $lock);
-
-    if (
-            ( $^O eq 'MSWin32' ? _under_cpan() : <LOCK> == getppid() )
-        and ( $CPAN::Config->{prerequisites_policy} || '' ) ne 'ignore'
-    ) {
-        print <<'END_MESSAGE';
-
-*** Since we're running under CPAN, I'll just let it take care
-    of the dependency's installation later.
-END_MESSAGE
-        return 1;
-    }
-
-    close LOCK;
-    return;
-}
-
-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
-    return @installed if _check_lock(); # defer to the CPAN shell
-
-    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    = _cpanplus_config( @{ +shift } );
-    my $installed = 0;
-
-    require CPANPLUS::Backend;
-    my $cp   = CPANPLUS::Backend->new;
-    my $conf = $cp->configure_object;
-
-    return unless $conf->can('conf') # 0.05x+ with "sudo" support
-               or _can_write($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 ) ) {
-        $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 _cpanplus_config {
-       my @config = ();
-       while ( @_ ) {
-               my ($key, $value) = (shift(), shift());
-               if ( $key eq 'prerequisites_policy' ) {
-                       if ( $value eq 'follow' ) {
-                               $value = CPANPLUS::Internals::Constants::PREREQ_INSTALL();
-                       } elsif ( $value eq 'ask' ) {
-                               $value = CPANPLUS::Internals::Constants::PREREQ_ASK();
-                       } elsif ( $value eq 'ignore' ) {
-                               $value = CPANPLUS::Internals::Constants::PREREQ_IGNORE();
-                       } else {
-                               die "*** Cannot convert option $key = '$value' to CPANPLUS version.\n";
-                       }
-               } else {
-                       die "*** Cannot convert option $key to CPANPLUS version.\n";
-               }
-       }
-       return @config;
-}
-
-sub _install_cpan {
-    my @modules   = @{ +shift };
-    my @config    = @{ +shift };
-    my $installed = 0;
-    my %args;
-
-    _load_cpan();
-    require Config;
-
-    if (CPAN->VERSION < 1.80) {
-        # no "sudo" support, probe for writableness
-        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};
-            }
-
-            my $rv = $args{force} ? CPAN::Shell->force( install => $pkg )
-                                  : CPAN::Shell->install($pkg);
-            $rv ||= 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'?),
-            ((-t STDIN) ? 'y' : 'n')
-        ) =~ /^[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 );
-}
-
-# Load CPAN.pm and it's configuration
-sub _load_cpan {
-    return if $CPAN::VERSION;
-    require CPAN;
-    if ( $CPAN::HandleConfig::VERSION ) {
-        # Newer versions of CPAN have a HandleConfig module
-        CPAN::HandleConfig->load;
-    } else {
-       # Older versions had the load method in Config directly
-        CPAN::Config->load;
-    }
-}
-
-# 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') )) and
-             version->can('new') 
-            ) {
-
-            # 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"
-        : "\$(NOECHO) \$(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\$(NOECHO) \$(NOOP)
-
-checkdeps ::
-\t\$(PERL) $0 --checkdeps
-
-installdeps ::
-\t$PostambleActions
-
-.
-
-}
-
-1;
-
-__END__
-
-#line 1003
index 760da11..51eda5d 100644 (file)
@@ -17,12 +17,10 @@ package Module::Install;
 #     3. The ./inc/ version of Module::Install loads
 # }
 
-BEGIN {
-       require 5.004;
-}
+use 5.005;
 use strict 'vars';
 
-use vars qw{$VERSION};
+use vars qw{$VERSION $MAIN};
 BEGIN {
        # All Module::Install core packages now require synchronised versions.
        # This will be used to ensure we don't accidentally load old or
@@ -30,7 +28,14 @@ BEGIN {
        # This is not enforced yet, but will be some time in the next few
        # releases once we can make sure it won't clash with custom
        # Module::Install extensions.
-       $VERSION = '0.71';
+       $VERSION = '0.91';
+
+       # Storage for the pseudo-singleton
+       $MAIN    = undef;
+
+       *inc::Module::Install::VERSION = *VERSION;
+       @inc::Module::Install::ISA     = __PACKAGE__;
+
 }
 
 
@@ -65,15 +70,26 @@ END_DIE
 # again. This is bad. Rather than taking action to touch it (which
 # is unreliable on some platforms and requires write permissions)
 # for now we should catch this and refuse to run.
-if ( -f $0 and (stat($0))[9] > time ) { die <<"END_DIE" }
+if ( -f $0 ) {
+       my $s = (stat($0))[9];
+
+       # If the modification time is only slightly in the future,
+       # sleep briefly to remove the problem.
+       my $a = $s - time;
+       if ( $a > 0 and $a < 5 ) { sleep 5 }
 
-Your installer $0 has a modification time in the future.
+       # Too far in the future, throw an error.
+       my $t = time;
+       if ( $s > $t ) { die <<"END_DIE" }
+
+Your installer $0 has a modification time in the future ($s > $t).
 
 This is known to create infinite loops in make.
 
 Please correct this, then run $0 again.
 
 END_DIE
+}
 
 
 
@@ -81,7 +97,7 @@ END_DIE
 
 # Build.PL was formerly supported, but no longer is due to excessive
 # difficulty in implementing every single feature twice.
-if ( $0 =~ /Build.PL$/i or -f 'Build.PL' ) { die <<"END_DIE" }
+if ( $0 =~ /Build.PL$/i ) { die <<"END_DIE" }
 
 Module::Install no longer supports Build.PL.
 
@@ -95,14 +111,20 @@ END_DIE
 
 
 
+# To save some more typing in Module::Install installers, every...
+# use inc::Module::Install
+# ...also acts as an implicit use strict.
+$^H |= strict::bits(qw(refs subs vars));
+
+
+
+
+
 use Cwd        ();
 use File::Find ();
 use File::Path ();
 use FindBin;
 
-*inc::Module::Install::VERSION = *VERSION;
-@inc::Module::Install::ISA     = __PACKAGE__;
-
 sub autoload {
        my $self = shift;
        my $who  = $self->_caller;
@@ -111,12 +133,22 @@ sub autoload {
        $sym->{$cwd} = sub {
                my $pwd = Cwd::cwd();
                if ( my $code = $sym->{$pwd} ) {
-                       # delegate back to parent dirs
+                       # Delegate back to parent dirs
                        goto &$code unless $cwd eq $pwd;
                }
                $$sym =~ /([^:]+)$/ or die "Cannot autoload $who - $sym";
+               my $method = $1;
+               if ( uc($method) eq $method ) {
+                       # Do nothing
+                       return;
+               } elsif ( $method =~ /^_/ and $self->can($method) ) {
+                       # Dispatch to the root M:I class
+                       return $self->$method(@_);
+               }
+
+               # Dispatch to the appropriate plugin
                unshift @_, ( $self, $1 );
-               goto &{$self->can('call')} unless uc($1) eq $1;
+               goto &{$self->can('call')};
        };
 }
 
@@ -141,6 +173,9 @@ sub import {
        delete $INC{"$self->{file}"};
        delete $INC{"$self->{path}.pm"};
 
+       # Save to the singleton
+       $MAIN = $self;
+
        return 1;
 }
 
@@ -154,8 +189,7 @@ sub preload {
 
        my @exts = @{$self->{extensions}};
        unless ( @exts ) {
-               my $admin = $self->{admin};
-               @exts = $admin->load_all_extensions;
+               @exts = $self->{admin}->load_all_extensions;
        }
 
        my %seen;
@@ -238,7 +272,7 @@ END_DIE
 sub load_extensions {
        my ($self, $path, $top) = @_;
 
-       unless ( grep { lc $_ eq lc $self->{prefix} } @INC ) {
+       unless ( grep { ! ref $_ and lc $_ eq lc $self->{prefix} } @INC ) {
                unshift @INC, $self->{prefix};
        }
 
@@ -302,7 +336,7 @@ sub find_extensions {
 
 
 #####################################################################
-# Utility Functions
+# Common Utility Functions
 
 sub _caller {
        my $depth = 0;
@@ -316,28 +350,81 @@ sub _caller {
 
 sub _read {
        local *FH;
-       open FH, "< $_[0]" or die "open($_[0]): $!";
-       my $str = do { local $/; <FH> };
+       if ( $] >= 5.006 ) {
+               open( FH, '<', $_[0] ) or die "open($_[0]): $!";
+       } else {
+               open( FH, "< $_[0]"  ) or die "open($_[0]): $!";
+       }
+       my $string = do { local $/; <FH> };
        close FH or die "close($_[0]): $!";
-       return $str;
+       return $string;
+}
+
+sub _readperl {
+       my $string = Module::Install::_read($_[0]);
+       $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg;
+       $string =~ s/(\n)\n*__(?:DATA|END)__\b.*\z/$1/s;
+       $string =~ s/\n\n=\w+.+?\n\n=cut\b.+?\n+/\n\n/sg;
+       return $string;
+}
+
+sub _readpod {
+       my $string = Module::Install::_read($_[0]);
+       $string =~ s/(?:\015{1,2}\012|\015|\012)/\n/sg;
+       return $string if $_[0] =~ /\.pod\z/;
+       $string =~ s/(^|\n=cut\b.+?\n+)[^=\s].+?\n(\n=\w+|\z)/$1$2/sg;
+       $string =~ s/\n*=pod\b[^\n]*\n+/\n\n/sg;
+       $string =~ s/\n*=cut\b[^\n]*\n+/\n\n/sg;
+       $string =~ s/^\n+//s;
+       return $string;
 }
 
 sub _write {
        local *FH;
-       open FH, "> $_[0]" or die "open($_[0]): $!";
-       foreach ( 1 .. $#_ ) { print FH $_[$_] or die "print($_[0]): $!" }
+       if ( $] >= 5.006 ) {
+               open( FH, '>', $_[0] ) or die "open($_[0]): $!";
+       } else {
+               open( FH, "> $_[0]"  ) or die "open($_[0]): $!";
+       }
+       foreach ( 1 .. $#_ ) {
+               print FH $_[$_] or die "print($_[0]): $!";
+       }
        close FH or die "close($_[0]): $!";
 }
 
-sub _version {
+# _version is for processing module versions (eg, 1.03_05) not
+# Perl versions (eg, 5.8.1).
+sub _version ($) {
        my $s = shift || 0;
-          $s =~ s/^(\d+)\.?//;
+       my $d =()= $s =~ /(\.)/g;
+       if ( $d >= 2 ) {
+               # Normalise multipart versions
+               $s =~ s/(\.)(\d{1,3})/sprintf("$1%03d",$2)/eg;
+       }
+       $s =~ s/^(\d+)\.?//;
        my $l = $1 || 0;
-       my @v = map { $_ . '0' x (3 - length $_) } $s =~ /(\d{1,3})\D?/g;
-          $l = $l . '.' . join '', @v if @v;
+       my @v = map {
+               $_ . '0' x (3 - length $_)
+       } $s =~ /(\d{1,3})\D?/g;
+       $l = $l . '.' . join '', @v if @v;
        return $l + 0;
 }
 
+sub _cmp ($$) {
+       _version($_[0]) <=> _version($_[1]);
+}
+
+# Cloned from Params::Util::_CLASS
+sub _CLASS ($) {
+       (
+               defined $_[0]
+               and
+               ! ref $_[0]
+               and
+               $_[0] =~ m/^[^\W\d]\w*(?:::\w+)*\z/s
+       ) ? $_[0] : undef;
+}
+
 1;
 
-# Copyright 2008 Adam Kennedy.
+# Copyright 2008 - 2009 Adam Kennedy.
diff --git a/inc/Module/Install/AutoInstall.pm b/inc/Module/Install/AutoInstall.pm
deleted file mode 100644 (file)
index 36a3ccf..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-#line 1
-package Module::Install::AutoInstall;
-
-use strict;
-use Module::Install::Base;
-
-use vars qw{$VERSION $ISCORE @ISA};
-BEGIN {
-       $VERSION = '0.71';
-       $ISCORE  = 1;
-       @ISA     = qw{Module::Install::Base};
-}
-
-sub AutoInstall { $_[0] }
-
-sub run {
-    my $self = shift;
-    $self->auto_install_now(@_);
-}
-
-sub write {
-    my $self = shift;
-    $self->auto_install(@_);
-}
-
-sub auto_install {
-    my $self = shift;
-    return if $self->{done}++;
-
-    # Flatten array of arrays into a single array
-    my @core = map @$_, map @$_, grep ref,
-               $self->build_requires, $self->requires;
-
-    my @config = @_;
-
-    # 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( Module::AutoInstall::_make_args() );
-
-    my $class = ref($self);
-    $self->postamble(
-        "# --- $class section:\n" .
-        Module::AutoInstall::postamble()
-    );
-}
-
-sub auto_install_now {
-    my $self = shift;
-    $self->auto_install(@_);
-    Module::AutoInstall::do_install();
-}
-
-1;
index f07878d..60a74d2 100644 (file)
@@ -1,7 +1,11 @@
 #line 1
 package Module::Install::Base;
 
-$VERSION = '0.71';
+use strict 'vars';
+use vars qw{$VERSION};
+BEGIN {
+       $VERSION = '0.91';
+}
 
 # Suspend handler for "redefined" warnings
 BEGIN {
@@ -9,52 +13,56 @@ BEGIN {
        $SIG{__WARN__} = sub { $w };
 }
 
-### This is the ONLY module that shouldn't have strict on
-# use strict;
-
-#line 41
+#line 42
 
 sub new {
-    my ($class, %args) = @_;
-
-    foreach my $method ( qw(call load) ) {
-        *{"$class\::$method"} = sub {
-            shift()->_top->$method(@_);
-        } unless defined &{"$class\::$method"};
-    }
-
-    bless( \%args, $class );
+       my $class = shift;
+       unless ( defined &{"${class}::call"} ) {
+               *{"${class}::call"} = sub { shift->_top->call(@_) };
+       }
+       unless ( defined &{"${class}::load"} ) {
+               *{"${class}::load"} = sub { shift->_top->load(@_) };
+       }
+       bless { @_ }, $class;
 }
 
 #line 61
 
 sub AUTOLOAD {
-    my $self = shift;
-    local $@;
-    my $autoload = eval { $self->_top->autoload } or return;
-    goto &$autoload;
+       local $@;
+       my $func = eval { shift->_top->autoload } or return;
+       goto &$func;
 }
 
-#line 76
+#line 75
 
-sub _top { $_[0]->{_top} }
+sub _top {
+       $_[0]->{_top};
+}
 
-#line 89
+#line 90
 
 sub admin {
-    $_[0]->_top->{admin} or Module::Install::Base::FakeAdmin->new;
+       $_[0]->_top->{admin}
+       or
+       Module::Install::Base::FakeAdmin->new;
 }
 
+#line 106
+
 sub is_admin {
-    $_[0]->admin->VERSION;
+       $_[0]->admin->VERSION;
 }
 
 sub DESTROY {}
 
 package Module::Install::Base::FakeAdmin;
 
-my $Fake;
-sub new { $Fake ||= bless(\@_, $_[0]) }
+my $fake;
+
+sub new {
+       $fake ||= bless(\@_, $_[0]);
+}
 
 sub AUTOLOAD {}
 
@@ -67,4 +75,4 @@ BEGIN {
 
 1;
 
-#line 138
+#line 154
index 410a0fc..e65e4f6 100644 (file)
@@ -2,18 +2,16 @@
 package Module::Install::Can;
 
 use strict;
-use Module::Install::Base;
-use Config ();
-### This adds a 5.005 Perl version dependency.
-### This is a bug and will be fixed.
-use File::Spec ();
-use ExtUtils::MakeMaker ();
-
-use vars qw{$VERSION $ISCORE @ISA};
+use Config                ();
+use File::Spec            ();
+use ExtUtils::MakeMaker   ();
+use Module::Install::Base ();
+
+use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '0.71';
+       $VERSION = '0.91';
+       @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
-       @ISA     = qw{Module::Install::Base};
 }
 
 # check if we can load some module
@@ -39,6 +37,7 @@ sub can_run {
        return $_cmd if (-x $_cmd or $_cmd = MM->maybe_command($_cmd));
 
        for my $dir ((split /$Config::Config{path_sep}/, $ENV{PATH}), '.') {
+               next if $dir eq '';
                my $abs = File::Spec->catfile($dir, $_[1]);
                return $abs if (-x $abs or $abs = MM->maybe_command($abs));
        }
@@ -79,4 +78,4 @@ if ( $^O eq 'cygwin' ) {
 
 __END__
 
-#line 157
+#line 156
index f7cd58e..05f2079 100644 (file)
@@ -2,24 +2,24 @@
 package Module::Install::Fetch;
 
 use strict;
-use Module::Install::Base;
+use Module::Install::Base ();
 
-use vars qw{$VERSION $ISCORE @ISA};
+use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '0.71';
+       $VERSION = '0.91';
+       @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
-       @ISA     = qw{Module::Install::Base};
 }
 
 sub get_file {
     my ($self, %args) = @_;
-    my ($scheme, $host, $path, $file) = 
+    my ($scheme, $host, $path, $file) =
         $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
 
     if ( $scheme eq 'http' and ! eval { require LWP::Simple; 1 } ) {
         $args{url} = $args{ftp_url}
             or (warn("LWP support unavailable!\n"), return);
-        ($scheme, $host, $path, $file) = 
+        ($scheme, $host, $path, $file) =
             $args{url} =~ m|^(\w+)://([^/]+)(.+)/(.+)| or return;
     }
 
diff --git a/inc/Module/Install/Include.pm b/inc/Module/Install/Include.pm
deleted file mode 100644 (file)
index 85bc75b..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-#line 1
-package Module::Install::Include;
-
-use strict;
-use Module::Install::Base;
-
-use vars qw{$VERSION $ISCORE @ISA};
-BEGIN {
-       $VERSION = '0.71';
-       $ISCORE  = 1;
-       @ISA     = qw{Module::Install::Base};
-}
-
-sub include {
-       shift()->admin->include(@_);
-}
-
-sub include_deps {
-       shift()->admin->include_deps(@_);
-}
-
-sub auto_include {
-       shift()->admin->auto_include(@_);
-}
-
-sub auto_include_deps {
-       shift()->admin->auto_include_deps(@_);
-}
-
-sub auto_include_dependent_dists {
-       shift()->admin->auto_include_dependent_dists(@_);
-}
-
-1;
index 3bfaf4c..98779db 100644 (file)
@@ -2,14 +2,14 @@
 package Module::Install::Makefile;
 
 use strict 'vars';
-use Module::Install::Base;
-use ExtUtils::MakeMaker ();
+use ExtUtils::MakeMaker   ();
+use Module::Install::Base ();
 
-use vars qw{$VERSION $ISCORE @ISA};
+use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '0.71';
+       $VERSION = '0.91';
+       @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
-       @ISA     = qw{Module::Install::Base};
 }
 
 sub Makefile { $_[0] }
@@ -36,9 +36,9 @@ sub prompt {
 
 sub makemaker_args {
        my $self = shift;
-       my $args = ($self->{makemaker_args} ||= {});
-         %$args = ( %$args, @_ ) if @_;
-       $args;
+       my $args = ( $self->{makemaker_args} ||= {} );
+       %$args = ( %$args, @_ );
+       return $args;
 }
 
 # For mm args that take multiple space-seperated args,
@@ -64,7 +64,7 @@ sub clean_files {
        my $self  = shift;
        my $clean = $self->makemaker_args->{clean} ||= {};
          %$clean = (
-               %$clean, 
+               %$clean,
                FILES => join ' ', grep { length $_ } ($clean->{FILES} || (), @_),
        );
 }
@@ -73,7 +73,7 @@ sub realclean_files {
        my $self      = shift;
        my $realclean = $self->makemaker_args->{realclean} ||= {};
          %$realclean = (
-               %$realclean, 
+               %$realclean,
                FILES => join ' ', grep { length $_ } ($realclean->{FILES} || (), @_),
        );
 }
@@ -114,11 +114,32 @@ sub write {
        my $self = shift;
        die "&Makefile->write() takes no arguments\n" if @_;
 
-       # Make sure we have a new enough
+       # Check the current Perl version
+       my $perl_version = $self->perl_version;
+       if ( $perl_version ) {
+               eval "use $perl_version; 1"
+                       or die "ERROR: perl: Version $] is installed, "
+                       . "but we need version >= $perl_version";
+       }
+
+       # Make sure we have a new enough MakeMaker
        require ExtUtils::MakeMaker;
-       $self->configure_requires( 'ExtUtils::MakeMaker' => $ExtUtils::MakeMaker::VERSION );
 
-       # Generate the 
+       if ( $perl_version and $self->_cmp($perl_version, '5.006') >= 0 ) {
+               # MakeMaker can complain about module versions that include
+               # an underscore, even though its own version may contain one!
+               # Hence the funny regexp to get rid of it.  See RT #35800
+               # for details.
+               $self->build_requires( 'ExtUtils::MakeMaker' => $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/ );
+               $self->configure_requires( 'ExtUtils::MakeMaker' => $ExtUtils::MakeMaker::VERSION =~ /^(\d+\.\d+)/ );
+       } else {
+               # Allow legacy-compatibility with 5.005 by depending on the
+               # most recent EU:MM that supported 5.005.
+               $self->build_requires( 'ExtUtils::MakeMaker' => 6.42 );
+               $self->configure_requires( 'ExtUtils::MakeMaker' => 6.42 );
+       }
+
+       # Generate the MakeMaker params
        my $args = $self->makemaker_args;
        $args->{DISTNAME} = $self->name;
        $args->{NAME}     = $self->module_name || $self->name;
@@ -127,7 +148,7 @@ sub write {
        if ( $self->tests ) {
                $args->{test} = { TESTS => $self->tests };
        }
-       if ($] >= 5.005) {
+       if ( $] >= 5.005 ) {
                $args->{ABSTRACT} = $self->abstract;
                $args->{AUTHOR}   = $self->author;
        }
@@ -141,7 +162,7 @@ sub write {
                delete $args->{SIGN};
        }
 
-       # merge both kinds of requires into prereq_pm
+       # Merge both kinds of requires into prereq_pm
        my $prereq = ($args->{PREREQ_PM} ||= {});
        %$prereq = ( %$prereq,
                map { @$_ }
@@ -175,7 +196,9 @@ sub write {
 
        my $user_preop = delete $args{dist}->{PREOP};
        if (my $preop = $self->admin->preop($user_preop)) {
-               $args{dist} = $preop;
+               foreach my $key ( keys %$preop ) {
+                       $args{dist}->{$key} = $preop->{$key};
+               }
        }
 
        my $mm = ExtUtils::MakeMaker::WriteMakefile(%args);
@@ -188,7 +211,7 @@ sub fix_up_makefile {
        my $top_class     = ref($self->_top) || '';
        my $top_version   = $self->_top->VERSION || '';
 
-       my $preamble = $self->preamble 
+       my $preamble = $self->preamble
                ? "# Preamble by $top_class $top_version\n"
                        . $self->preamble
                : '';
@@ -242,4 +265,4 @@ sub postamble {
 
 __END__
 
-#line 371
+#line 394
index 3552f86..653193d 100644 (file)
@@ -2,24 +2,26 @@
 package Module::Install::Metadata;
 
 use strict 'vars';
-use Module::Install::Base;
+use Module::Install::Base ();
 
-use vars qw{$VERSION $ISCORE @ISA};
+use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '0.71';
+       $VERSION = '0.91';
+       @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
-       @ISA     = qw{Module::Install::Base};
 }
 
+my @boolean_keys = qw{
+       sign
+};
+
 my @scalar_keys = qw{
        name
        module_name
        abstract
        author
        version
-       license
        distribution_type
-       perl_version
        tests
        installdirs
 };
@@ -30,108 +32,202 @@ my @tuple_keys = qw{
        requires
        recommends
        bundles
+       resources
+};
+
+my @resource_keys = qw{
+       homepage
+       bugtracker
+       repository
+};
+
+my @array_keys = qw{
+       keywords
 };
 
-sub Meta            { shift        }
-sub Meta_ScalarKeys { @scalar_keys }
-sub Meta_TupleKeys  { @tuple_keys  }
+sub Meta              { shift          }
+sub Meta_BooleanKeys  { @boolean_keys  }
+sub Meta_ScalarKeys   { @scalar_keys   }
+sub Meta_TupleKeys    { @tuple_keys    }
+sub Meta_ResourceKeys { @resource_keys }
+sub Meta_ArrayKeys    { @array_keys    }
 
-foreach my $key (@scalar_keys) {
+foreach my $key ( @boolean_keys ) {
        *$key = sub {
                my $self = shift;
-               return $self->{values}{$key} if defined wantarray and !@_;
-               $self->{values}{$key} = shift;
+               if ( defined wantarray and not @_ ) {
+                       return $self->{values}->{$key};
+               }
+               $self->{values}->{$key} = ( @_ ? $_[0] : 1 );
                return $self;
        };
 }
 
-sub requires {
-       my $self = shift;
-       while ( @_ ) {
-               my $module  = shift or last;
-               my $version = shift || 0;
-               push @{ $self->{values}->{requires} }, [ $module, $version ];
-       }
-       $self->{values}{requires};
+foreach my $key ( @scalar_keys ) {
+       *$key = sub {
+               my $self = shift;
+               return $self->{values}->{$key} if defined wantarray and !@_;
+               $self->{values}->{$key} = shift;
+               return $self;
+       };
 }
 
-sub build_requires {
-       my $self = shift;
-       while ( @_ ) {
-               my $module  = shift or last;
-               my $version = shift || 0;
-               push @{ $self->{values}->{build_requires} }, [ $module, $version ];
-       }
-       $self->{values}{build_requires};
+foreach my $key ( @array_keys ) {
+       *$key = sub {
+               my $self = shift;
+               return $self->{values}->{$key} if defined wantarray and !@_;
+               $self->{values}->{$key} ||= [];
+               push @{$self->{values}->{$key}}, @_;
+               return $self;
+       };
 }
 
-sub configure_requires {
-       my $self = shift;
-       while ( @_ ) {
-               my $module  = shift or last;
-               my $version = shift || 0;
-               push @{ $self->{values}->{configure_requires} }, [ $module, $version ];
-       }
-       $self->{values}{configure_requires};
+foreach my $key ( @resource_keys ) {
+       *$key = sub {
+               my $self = shift;
+               unless ( @_ ) {
+                       return () unless $self->{values}->{resources};
+                       return map  { $_->[1] }
+                              grep { $_->[0] eq $key }
+                              @{ $self->{values}->{resources} };
+               }
+               return $self->{values}->{resources}->{$key} unless @_;
+               my $uri = shift or die(
+                       "Did not provide a value to $key()"
+               );
+               $self->resources( $key => $uri );
+               return 1;
+       };
 }
 
-sub recommends {
-       my $self = shift;
-       while ( @_ ) {
-               my $module  = shift or last;
-               my $version = shift || 0;
-               push @{ $self->{values}->{recommends} }, [ $module, $version ];
-       }
-       $self->{values}{recommends};
+foreach my $key ( grep { $_ ne "resources" } @tuple_keys) {
+       *$key = sub {
+               my $self = shift;
+               return $self->{values}->{$key} unless @_;
+               my @added;
+               while ( @_ ) {
+                       my $module  = shift or last;
+                       my $version = shift || 0;
+                       push @added, [ $module, $version ];
+               }
+               push @{ $self->{values}->{$key} }, @added;
+               return map {@$_} @added;
+       };
 }
 
-sub bundles {
+# Resource handling
+my %lc_resource = map { $_ => 1 } qw{
+       homepage
+       license
+       bugtracker
+       repository
+};
+
+sub resources {
        my $self = shift;
        while ( @_ ) {
-               my $module  = shift or last;
-               my $version = shift || 0;
-               push @{ $self->{values}->{bundles} }, [ $module, $version ];
+               my $name  = shift or last;
+               my $value = shift or next;
+               if ( $name eq lc $name and ! $lc_resource{$name} ) {
+                       die("Unsupported reserved lowercase resource '$name'");
+               }
+               $self->{values}->{resources} ||= [];
+               push @{ $self->{values}->{resources} }, [ $name, $value ];
        }
-       $self->{values}{bundles};
+       $self->{values}->{resources};
 }
 
 # Aliases for build_requires that will have alternative
 # meanings in some future version of META.yml.
-sub test_requires      { shift->build_requires(@_) }
-sub install_requires   { shift->build_requires(@_) }
+sub test_requires     { shift->build_requires(@_) }
+sub install_requires  { shift->build_requires(@_) }
 
 # Aliases for installdirs options
-sub install_as_core    { $_[0]->installdirs('perl')   }
-sub install_as_cpan    { $_[0]->installdirs('site')   }
-sub install_as_site    { $_[0]->installdirs('site')   }
-sub install_as_vendor  { $_[0]->installdirs('vendor') }
-
-sub sign {
-       my $self = shift;
-       return $self->{'values'}{'sign'} if defined wantarray and ! @_;
-       $self->{'values'}{'sign'} = ( @_ ? $_[0] : 1 );
-       return $self;
-}
+sub install_as_core   { $_[0]->installdirs('perl')   }
+sub install_as_cpan   { $_[0]->installdirs('site')   }
+sub install_as_site   { $_[0]->installdirs('site')   }
+sub install_as_vendor { $_[0]->installdirs('vendor') }
 
 sub dynamic_config {
        my $self = shift;
        unless ( @_ ) {
-               warn "You MUST provide an explicit true/false value to dynamic_config, skipping\n";
+               warn "You MUST provide an explicit true/false value to dynamic_config\n";
                return $self;
        }
-       $self->{values}{dynamic_config} = $_[0] ? 1 : 0;
-       return $self;
+       $self->{values}->{dynamic_config} = $_[0] ? 1 : 0;
+       return 1;
+}
+
+sub perl_version {
+       my $self = shift;
+       return $self->{values}->{perl_version} unless @_;
+       my $version = shift or die(
+               "Did not provide a value to perl_version()"
+       );
+
+       # Normalize the version
+       $version = $self->_perl_version($version);
+
+       # We don't support the reall old versions
+       unless ( $version >= 5.005 ) {
+               die "Module::Install only supports 5.005 or newer (use ExtUtils::MakeMaker)\n";
+       }
+
+       $self->{values}->{perl_version} = $version;
+}
+
+#Stolen from M::B
+my %license_urls = (
+    perl         => 'http://dev.perl.org/licenses/',
+    apache       => 'http://apache.org/licenses/LICENSE-2.0',
+    artistic     => 'http://opensource.org/licenses/artistic-license.php',
+    artistic_2   => 'http://opensource.org/licenses/artistic-license-2.0.php',
+    lgpl         => 'http://opensource.org/licenses/lgpl-license.php',
+    lgpl2        => 'http://opensource.org/licenses/lgpl-2.1.php',
+    lgpl3        => 'http://opensource.org/licenses/lgpl-3.0.html',
+    bsd          => 'http://opensource.org/licenses/bsd-license.php',
+    gpl          => 'http://opensource.org/licenses/gpl-license.php',
+    gpl2         => 'http://opensource.org/licenses/gpl-2.0.php',
+    gpl3         => 'http://opensource.org/licenses/gpl-3.0.html',
+    mit          => 'http://opensource.org/licenses/mit-license.php',
+    mozilla      => 'http://opensource.org/licenses/mozilla1.1.php',
+    open_source  => undef,
+    unrestricted => undef,
+    restrictive  => undef,
+    unknown      => undef,
+);
+
+sub license {
+       my $self = shift;
+       return $self->{values}->{license} unless @_;
+       my $license = shift or die(
+               'Did not provide a value to license()'
+       );
+       $self->{values}->{license} = $license;
+
+       # Automatically fill in license URLs
+       if ( $license_urls{$license} ) {
+               $self->resources( license => $license_urls{$license} );
+       }
+
+       return 1;
 }
 
 sub all_from {
        my ( $self, $file ) = @_;
 
        unless ( defined($file) ) {
-               my $name = $self->name
-                       or die "all_from called with no args without setting name() first";
+               my $name = $self->name or die(
+                       "all_from called with no args without setting name() first"
+               );
                $file = join('/', 'lib', split(/-/, $name)) . '.pm';
                $file =~ s{.*/}{} unless -e $file;
-               die "all_from: cannot find $file from $name" unless -e $file;
+               unless ( -e $file ) {
+                       die("all_from cannot find $file from $name");
+               }
+       }
+       unless ( -f $file ) {
+               die("The path '$file' does not exist, or is not a file");
        }
 
        # Some methods pull from POD instead of code.
@@ -153,7 +249,7 @@ sub all_from {
 
 sub provides {
        my $self     = shift;
-       my $provides = ( $self->{values}{provides} ||= {} );
+       my $provides = ( $self->{values}->{provides} ||= {} );
        %$provides = (%$provides, @_) if @_;
        return $provides;
 }
@@ -182,7 +278,7 @@ sub auto_provides {
 sub feature {
        my $self     = shift;
        my $name     = shift;
-       my $features = ( $self->{values}{features} ||= [] );
+       my $features = ( $self->{values}->{features} ||= [] );
        my $mods;
 
        if ( @_ == 1 and ref( $_[0] ) ) {
@@ -218,8 +314,8 @@ sub features {
 sub no_index {
        my $self = shift;
        my $type = shift;
-       push @{ $self->{values}{no_index}{$type} }, @_ if $type;
-       return $self->{values}{no_index};
+       push @{ $self->{values}->{no_index}->{$type} }, @_ if $type;
+       return $self->{values}->{no_index};
 }
 
 sub read {
@@ -267,22 +363,25 @@ sub abstract_from {
         );
 }
 
+# Add both distribution and module name
 sub name_from {
-       my $self = shift;
+       my ($self, $file) = @_;
        if (
-               Module::Install::_read($_[0]) =~ m/
-               ^ \s
+               Module::Install::_read($file) =~ m/
+               ^ \s*
                package \s*
                ([\w:]+)
                \s* ;
                /ixms
        ) {
-               my $name = $1;
+               my ($name, $module_name) = ($1, $1);
                $name =~ s{::}{-}g;
                $self->name($name);
+               unless ( $self->module_name ) {
+                       $self->module_name($module_name);
+               }
        } else {
-               die "Cannot determine name from $_[0]\n";
-               return;
+               die("Cannot determine name from $file\n");
        }
 }
 
@@ -291,7 +390,7 @@ sub perl_version_from {
        if (
                Module::Install::_read($_[0]) =~ m/
                ^
-               use \s*
+               (?:use|require) \s*
                v?
                ([\d_\.]+)
                \s* ;
@@ -340,24 +439,25 @@ sub license_from {
        /ixms ) {
                my $license_text = $1;
                my @phrases      = (
-                       'under the same (?:terms|license) as perl itself' => 'perl',        1,
-                       'GNU public license'                              => 'gpl',         1,
-                       'GNU lesser public license'                       => 'lgpl',        1,
-                       'BSD license'                                     => 'bsd',         1,
-                       'Artistic license'                                => 'artistic',    1,
-                       'GPL'                                             => 'gpl',         1,
-                       'LGPL'                                            => 'lgpl',        1,
-                       'BSD'                                             => 'bsd',         1,
-                       'Artistic'                                        => 'artistic',    1,
-                       'MIT'                                             => 'mit',         1,
-                       'proprietary'                                     => 'proprietary', 0,
+                       'under the same (?:terms|license) as (?:perl|the perl programming language) itself' => 'perl', 1,
+                       'GNU general public license'         => 'gpl',         1,
+                       'GNU public license'                 => 'gpl',         1,
+                       'GNU lesser general public license'  => 'lgpl',        1,
+                       'GNU lesser public license'          => 'lgpl',        1,
+                       'GNU library general public license' => 'lgpl',        1,
+                       'GNU library public license'         => 'lgpl',        1,
+                       'BSD license'                        => 'bsd',         1,
+                       'Artistic license'                   => 'artistic',    1,
+                       'GPL'                                => 'gpl',         1,
+                       'LGPL'                               => 'lgpl',        1,
+                       'BSD'                                => 'bsd',         1,
+                       'Artistic'                           => 'artistic',    1,
+                       'MIT'                                => 'mit',         1,
+                       'proprietary'                        => 'proprietary', 0,
                );
                while ( my ($pattern, $license, $osi) = splice(@phrases, 0, 3) ) {
                        $pattern =~ s{\s+}{\\s+}g;
                        if ( $license_text =~ /\b$pattern\b/i ) {
-                               if ( $osi and $license_text =~ /All rights reserved/i ) {
-                                       warn "LEGAL WARNING: 'All rights reserved' may invalidate Open Source licenses. Consider removing it.";
-                               }
                                $self->license($license);
                                return 1;
                        }
@@ -368,4 +468,157 @@ sub license_from {
        return 'unknown';
 }
 
+sub _extract_bugtracker {
+       my @links   = $_[0] =~ m#L<(\Qhttp://rt.cpan.org/\E[^>]+)>#g;
+       my %links;
+       @links{@links}=();
+       @links=keys %links;
+       return @links;
+}
+
+sub bugtracker_from {
+       my $self    = shift;
+       my $content = Module::Install::_read($_[0]);
+       my @links   = _extract_bugtracker($content);
+       unless ( @links ) {
+               warn "Cannot determine bugtracker info from $_[0]\n";
+               return 0;
+       }
+       if ( @links > 1 ) {
+               warn "Found more than on rt.cpan.org link in $_[0]\n";
+               return 0;
+       }
+
+       # Set the bugtracker
+       bugtracker( $links[0] );
+       return 1;
+}
+
+sub requires_from {
+       my $self     = shift;
+       my $content  = Module::Install::_readperl($_[0]);
+       my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg;
+       while ( @requires ) {
+               my $module  = shift @requires;
+               my $version = shift @requires;
+               $self->requires( $module => $version );
+       }
+}
+
+sub test_requires_from {
+       my $self     = shift;
+       my $content  = Module::Install::_readperl($_[0]);
+       my @requires = $content =~ m/^use\s+([^\W\d]\w*(?:::\w+)*)\s+([\d\.]+)/mg;
+       while ( @requires ) {
+               my $module  = shift @requires;
+               my $version = shift @requires;
+               $self->test_requires( $module => $version );
+       }
+}
+
+# Convert triple-part versions (eg, 5.6.1 or 5.8.9) to
+# numbers (eg, 5.006001 or 5.008009).
+# Also, convert double-part versions (eg, 5.8)
+sub _perl_version {
+       my $v = $_[-1];
+       $v =~ s/^([1-9])\.([1-9]\d?\d?)$/sprintf("%d.%03d",$1,$2)/e;
+       $v =~ s/^([1-9])\.([1-9]\d?\d?)\.(0|[1-9]\d?\d?)$/sprintf("%d.%03d%03d",$1,$2,$3 || 0)/e;
+       $v =~ s/(\.\d\d\d)000$/$1/;
+       $v =~ s/_.+$//;
+       if ( ref($v) ) {
+               # Numify
+               $v = $v + 0;
+       }
+       return $v;
+}
+
+
+
+
+
+######################################################################
+# MYMETA Support
+
+sub WriteMyMeta {
+       die "WriteMyMeta has been deprecated";
+}
+
+sub write_mymeta_yaml {
+       my $self = shift;
+
+       # We need YAML::Tiny to write the MYMETA.yml file
+       unless ( eval { require YAML::Tiny; 1; } ) {
+               return 1;
+       }
+
+       # Generate the data
+       my $meta = $self->_write_mymeta_data or return 1;
+
+       # Save as the MYMETA.yml file
+       print "Writing MYMETA.yml\n";
+       YAML::Tiny::DumpFile('MYMETA.yml', $meta);
+}
+
+sub write_mymeta_json {
+       my $self = shift;
+
+       # We need JSON to write the MYMETA.json file
+       unless ( eval { require JSON; 1; } ) {
+               return 1;
+       }
+
+       # Generate the data
+       my $meta = $self->_write_mymeta_data or return 1;
+
+       # Save as the MYMETA.yml file
+       print "Writing MYMETA.json\n";
+       Module::Install::_write(
+               'MYMETA.json',
+               JSON->new->pretty(1)->canonical->encode($meta),
+       );
+}
+
+sub _write_mymeta_data {
+       my $self = shift;
+
+       # If there's no existing META.yml there is nothing we can do
+       return undef unless -f 'META.yml';
+
+       # We need Parse::CPAN::Meta to load the file
+       unless ( eval { require Parse::CPAN::Meta; 1; } ) {
+               return undef;
+       }
+
+       # Merge the perl version into the dependencies
+       my $val  = $self->Meta->{values};
+       my $perl = delete $val->{perl_version};
+       if ( $perl ) {
+               $val->{requires} ||= [];
+               my $requires = $val->{requires};
+
+               # Canonize to three-dot version after Perl 5.6
+               if ( $perl >= 5.006 ) {
+                       $perl =~ s{^(\d+)\.(\d\d\d)(\d*)}{join('.', $1, int($2||0), int($3||0))}e
+               }
+               unshift @$requires, [ perl => $perl ];
+       }
+
+       # Load the advisory META.yml file
+       my @yaml = Parse::CPAN::Meta::LoadFile('META.yml');
+       my $meta = $yaml[0];
+
+       # Overwrite the non-configure dependency hashs
+       delete $meta->{requires};
+       delete $meta->{build_requires};
+       delete $meta->{recommends};
+       if ( exists $val->{requires} ) {
+               $meta->{requires} = { map { @$_ } @{ $val->{requires} } };
+       }
+       if ( exists $val->{build_requires} ) {
+               $meta->{build_requires} = { map { @$_ } @{ $val->{build_requires} } };
+       }
+
+       return $meta;
+}
+
 1;
index dcc6f57..f2f99df 100644 (file)
@@ -2,12 +2,12 @@
 package Module::Install::Win32;
 
 use strict;
-use Module::Install::Base;
+use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '0.71';
-       @ISA     = qw{Module::Install::Base};
+       $VERSION = '0.91';
+       @ISA     = 'Module::Install::Base';
        $ISCORE  = 1;
 }
 
index 13437e6..12471e5 100644 (file)
@@ -2,11 +2,11 @@
 package Module::Install::WriteAll;
 
 use strict;
-use Module::Install::Base;
+use Module::Install::Base ();
 
 use vars qw{$VERSION @ISA $ISCORE};
 BEGIN {
-       $VERSION = '0.71';
+       $VERSION = '0.91';;
        @ISA     = qw{Module::Install::Base};
        $ISCORE  = 1;
 }
@@ -22,7 +22,6 @@ sub WriteAll {
        );
 
        $self->sign(1)                if $args{sign};
-       $self->Meta->write            if $args{meta};
        $self->admin->WriteAll(%args) if $self->is_admin;
 
        $self->check_nmake if $args{check_nmake};
@@ -30,11 +29,32 @@ sub WriteAll {
                $self->makemaker_args( PL_FILES => {} );
        }
 
+       # Until ExtUtils::MakeMaker support MYMETA.yml, make sure
+       # we clean it up properly ourself.
+       $self->realclean_files('MYMETA.yml');
+
        if ( $args{inline} ) {
                $self->Inline->write;
        } else {
                $self->Makefile->write;
        }
+
+       # The Makefile write process adds a couple of dependencies,
+       # so write the META.yml files after the Makefile.
+       if ( $args{meta} ) {
+               $self->Meta->write;
+       }
+
+       # Experimental support for MYMETA
+       if ( $ENV{X_MYMETA} ) {
+               if ( $ENV{X_MYMETA} eq 'JSON' ) {
+                       $self->Meta->write_mymeta_json;
+               } else {
+                       $self->Meta->write_mymeta_yaml;
+               }
+       }
+
+       return 1;
 }
 
 1;
index c87071d..6766fa2 100644 (file)
@@ -14,7 +14,7 @@ use Encode ();
 
 __PACKAGE__->mk_accessors( qw( description_url agent description ) );
 
-our $VERSION = '0.14';
+our $VERSION = '0.15';
 
 =head1 NAME
 
@@ -103,7 +103,7 @@ Tatsuhiko Miyagawa E<lt>miyagawa@bulknews.netE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2008 by Tatsuhiko Miyagawa and Brian Cassidy
+Copyright 2005-2009 by Tatsuhiko Miyagawa and Brian Cassidy
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself. 
index 19fa3d9..03b8931 100644 (file)
@@ -38,7 +38,7 @@ An alias for request()
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2008 by Tatsuhiko Miyagawa and Brian Cassidy
+Copyright 2005-2009 by Tatsuhiko Miyagawa and Brian Cassidy
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself. 
index 41d7212..a29fc0a 100644 (file)
@@ -133,7 +133,7 @@ whose type is equal to $type.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2008 by Tatsuhiko Miyagawa and Brian Cassidy
+Copyright 2005-2009 by Tatsuhiko Miyagawa and Brian Cassidy
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself. 
index 6690f42..504c2d9 100644 (file)
@@ -45,7 +45,7 @@ WWW::OpenSearch::Image - Object to represent an image
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2008 by Tatsuhiko Miyagawa and Brian Cassidy
+Copyright 2005-2009 by Tatsuhiko Miyagawa and Brian Cassidy
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself. 
index e177bb4..62dca6f 100644 (file)
@@ -41,7 +41,7 @@ WWW::OpenSearch::Query - Object to represent a sample query
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2008 by Tatsuhiko Miyagawa and Brian Cassidy
+Copyright 2005-2009 by Tatsuhiko Miyagawa and Brian Cassidy
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself. 
index 9a4ffaf..b62b235 100644 (file)
@@ -45,7 +45,7 @@ WWW::OpenSearch::Request - Encapsulate an opensearch request
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2008 by Tatsuhiko Miyagawa and Brian Cassidy
+Copyright 2005-2009 by Tatsuhiko Miyagawa and Brian Cassidy
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself. 
index d7eafb0..df515e8 100644 (file)
@@ -94,7 +94,7 @@ is equal to $type.
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2008 by Tatsuhiko Miyagawa and Brian Cassidy
+Copyright 2005-2009 by Tatsuhiko Miyagawa and Brian Cassidy
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself. 
index e08c4f4..a69e02a 100644 (file)
@@ -53,7 +53,7 @@ WWW::OpenSearch::Url - Object to represent a target URL
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright 2008 by Tatsuhiko Miyagawa and Brian Cassidy
+Copyright 2005-2009 by Tatsuhiko Miyagawa and Brian Cassidy
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself.