inc/ doesn't belong under version control.
Florian Ragwitz [Sun, 28 Mar 2010 21:45:40 +0000 (23:45 +0200)]
inc/Module/Install.pm [deleted file]
inc/Module/Install/Base.pm [deleted file]
inc/Module/Install/Metadata.pm [deleted file]

diff --git a/inc/Module/Install.pm b/inc/Module/Install.pm
deleted file mode 100644 (file)
index 51eda5d..0000000
+++ /dev/null
@@ -1,430 +0,0 @@
-#line 1
-package Module::Install;
-
-# For any maintainers:
-# The load order for Module::Install is a bit magic.
-# It goes something like this...
-#
-# IF ( host has Module::Install installed, creating author mode ) {
-#     1. Makefile.PL calls "use inc::Module::Install"
-#     2. $INC{inc/Module/Install.pm} set to installed version of inc::Module::Install
-#     3. The installed version of inc::Module::Install loads
-#     4. inc::Module::Install calls "require Module::Install"
-#     5. The ./inc/ version of Module::Install loads
-# } ELSE {
-#     1. Makefile.PL calls "use inc::Module::Install"
-#     2. $INC{inc/Module/Install.pm} set to ./inc/ version of Module::Install
-#     3. The ./inc/ version of Module::Install loads
-# }
-
-use 5.005;
-use strict 'vars';
-
-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
-       # different versions of modules.
-       # 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.91';
-
-       # Storage for the pseudo-singleton
-       $MAIN    = undef;
-
-       *inc::Module::Install::VERSION = *VERSION;
-       @inc::Module::Install::ISA     = __PACKAGE__;
-
-}
-
-
-
-
-
-# Whether or not inc::Module::Install is actually loaded, the
-# $INC{inc/Module/Install.pm} is what will still get set as long as
-# the caller loaded module this in the documented manner.
-# If not set, the caller may NOT have loaded the bundled version, and thus
-# they may not have a MI version that works with the Makefile.PL. This would
-# result in false errors or unexpected behaviour. And we don't want that.
-my $file = join( '/', 'inc', split /::/, __PACKAGE__ ) . '.pm';
-unless ( $INC{$file} ) { die <<"END_DIE" }
-
-Please invoke ${\__PACKAGE__} with:
-
-       use inc::${\__PACKAGE__};
-
-not:
-
-       use ${\__PACKAGE__};
-
-END_DIE
-
-
-
-
-
-# If the script that is loading Module::Install is from the future,
-# then make will detect this and cause it to re-run over and over
-# 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 ) {
-       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 }
-
-       # 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
-}
-
-
-
-
-
-# Build.PL was formerly supported, but no longer is due to excessive
-# difficulty in implementing every single feature twice.
-if ( $0 =~ /Build.PL$/i ) { die <<"END_DIE" }
-
-Module::Install no longer supports Build.PL.
-
-It was impossible to maintain duel backends, and has been deprecated.
-
-Please remove all Build.PL files and only use the Makefile.PL installer.
-
-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;
-
-sub autoload {
-       my $self = shift;
-       my $who  = $self->_caller;
-       my $cwd  = Cwd::cwd();
-       my $sym  = "${who}::AUTOLOAD";
-       $sym->{$cwd} = sub {
-               my $pwd = Cwd::cwd();
-               if ( my $code = $sym->{$pwd} ) {
-                       # 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')};
-       };
-}
-
-sub import {
-       my $class = shift;
-       my $self  = $class->new(@_);
-       my $who   = $self->_caller;
-
-       unless ( -f $self->{file} ) {
-               require "$self->{path}/$self->{dispatch}.pm";
-               File::Path::mkpath("$self->{prefix}/$self->{author}");
-               $self->{admin} = "$self->{name}::$self->{dispatch}"->new( _top => $self );
-               $self->{admin}->init;
-               @_ = ($class, _self => $self);
-               goto &{"$self->{name}::import"};
-       }
-
-       *{"${who}::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"};
-
-       # Save to the singleton
-       $MAIN = $self;
-
-       return 1;
-}
-
-sub preload {
-       my $self = shift;
-       unless ( $self->{extensions} ) {
-               $self->load_extensions(
-                       "$self->{prefix}/$self->{path}", $self
-               );
-       }
-
-       my @exts = @{$self->{extensions}};
-       unless ( @exts ) {
-               @exts = $self->{admin}->load_all_extensions;
-       }
-
-       my %seen;
-       foreach my $obj ( @exts ) {
-               while (my ($method, $glob) = each %{ref($obj) . '::'}) {
-                       next unless $obj->can($method);
-                       next if $method =~ /^_/;
-                       next if $method eq uc($method);
-                       $seen{$method}++;
-               }
-       }
-
-       my $who = $self->_caller;
-       foreach my $name ( sort keys %seen ) {
-               *{"${who}::$name"} = sub {
-                       ${"${who}::AUTOLOAD"} = "${who}::$name";
-                       goto &{"${who}::AUTOLOAD"};
-               };
-       }
-}
-
-sub new {
-       my ($class, %args) = @_;
-
-       # ignore the prefix on extension modules built from top level.
-       my $base_path = Cwd::abs_path($FindBin::Bin);
-       unless ( Cwd::abs_path(Cwd::cwd()) eq $base_path ) {
-               delete $args{prefix};
-       }
-
-       return $args{_self} if $args{_self};
-
-       $args{dispatch} ||= 'Admin';
-       $args{prefix}   ||= 'inc';
-       $args{author}   ||= ($^O eq 'VMS' ? '_author' : '.author');
-       $args{bundle}   ||= 'inc/BUNDLES';
-       $args{base}     ||= $base_path;
-       $class =~ s/^\Q$args{prefix}\E:://;
-       $args{name}     ||= $class;
-       $args{version}  ||= $class->VERSION;
-       unless ( $args{path} ) {
-               $args{path}  = $args{name};
-               $args{path}  =~ s!::!/!g;
-       }
-       $args{file}     ||= "$args{base}/$args{prefix}/$args{path}.pm";
-       $args{wrote}      = 0;
-
-       bless( \%args, $class );
-}
-
-sub call {
-       my ($self, $method) = @_;
-       my $obj = $self->load($method) or return;
-        splice(@_, 0, 2, $obj);
-       goto &{$obj->can($method)};
-}
-
-sub load {
-       my ($self, $method) = @_;
-
-       $self->load_extensions(
-               "$self->{prefix}/$self->{path}", $self
-       ) unless $self->{extensions};
-
-       foreach my $obj (@{$self->{extensions}}) {
-               return $obj if $obj->can($method);
-       }
-
-       my $admin = $self->{admin} or die <<"END_DIE";
-The '$method' method does not exist in the '$self->{prefix}' path!
-Please remove the '$self->{prefix}' directory and run $0 again to load it.
-END_DIE
-
-       my $obj = $admin->load($method, 1);
-       push @{$self->{extensions}}, $obj;
-
-       $obj;
-}
-
-sub load_extensions {
-       my ($self, $path, $top) = @_;
-
-       unless ( grep { ! ref $_ and lc $_ eq lc $self->{prefix} } @INC ) {
-               unshift @INC, $self->{prefix};
-       }
-
-       foreach my $rv ( $self->find_extensions($path) ) {
-               my ($file, $pkg) = @{$rv};
-               next if $self->{pathnames}{$pkg};
-
-               local $@;
-               my $new = eval { require $file; $pkg->can('new') };
-               unless ( $new ) {
-                       warn $@ if $@;
-                       next;
-               }
-               $self->{pathnames}{$pkg} = delete $INC{$file};
-               push @{$self->{extensions}}, &{$new}($pkg, _top => $top );
-       }
-
-       $self->{extensions} ||= [];
-}
-
-sub find_extensions {
-       my ($self, $path) = @_;
-
-       my @found;
-       File::Find::find( sub {
-               my $file = $File::Find::name;
-               return unless $file =~ m!^\Q$path\E/(.+)\.pm\Z!is;
-               my $subpath = $1;
-               return if lc($subpath) eq lc($self->{dispatch});
-
-               $file = "$self->{path}/$subpath.pm";
-               my $pkg = "$self->{name}::$subpath";
-               $pkg =~ s!/!::!g;
-
-               # If we have a mixed-case package name, assume case has been preserved
-               # correctly.  Otherwise, root through the file to locate the case-preserved
-               # version of the package name.
-               if ( $subpath eq lc($subpath) || $subpath eq uc($subpath) ) {
-                       my $content = Module::Install::_read($subpath . '.pm');
-                       my $in_pod  = 0;
-                       foreach ( split //, $content ) {
-                               $in_pod = 1 if /^=\w/;
-                               $in_pod = 0 if /^=cut/;
-                               next if ($in_pod || /^=cut/);  # skip pod text
-                               next if /^\s*#/;               # and comments
-                               if ( m/^\s*package\s+($pkg)\s*;/i ) {
-                                       $pkg = $1;
-                                       last;
-                               }
-                       }
-               }
-
-               push @found, [ $file, $pkg ];
-       }, $path ) if -d $path;
-
-       @found;
-}
-
-
-
-
-
-#####################################################################
-# Common Utility Functions
-
-sub _caller {
-       my $depth = 0;
-       my $call  = caller($depth);
-       while ( $call eq __PACKAGE__ ) {
-               $depth++;
-               $call = caller($depth);
-       }
-       return $call;
-}
-
-sub _read {
-       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 $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;
-       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]): $!";
-}
-
-# _version is for processing module versions (eg, 1.03_05) not
-# Perl versions (eg, 5.8.1).
-sub _version ($) {
-       my $s = shift || 0;
-       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;
-       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 - 2009 Adam Kennedy.
diff --git a/inc/Module/Install/Base.pm b/inc/Module/Install/Base.pm
deleted file mode 100644 (file)
index 60a74d2..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#line 1
-package Module::Install::Base;
-
-use strict 'vars';
-use vars qw{$VERSION};
-BEGIN {
-       $VERSION = '0.91';
-}
-
-# Suspend handler for "redefined" warnings
-BEGIN {
-       my $w = $SIG{__WARN__};
-       $SIG{__WARN__} = sub { $w };
-}
-
-#line 42
-
-sub new {
-       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 {
-       local $@;
-       my $func = eval { shift->_top->autoload } or return;
-       goto &$func;
-}
-
-#line 75
-
-sub _top {
-       $_[0]->{_top};
-}
-
-#line 90
-
-sub admin {
-       $_[0]->_top->{admin}
-       or
-       Module::Install::Base::FakeAdmin->new;
-}
-
-#line 106
-
-sub is_admin {
-       $_[0]->admin->VERSION;
-}
-
-sub DESTROY {}
-
-package Module::Install::Base::FakeAdmin;
-
-my $fake;
-
-sub new {
-       $fake ||= bless(\@_, $_[0]);
-}
-
-sub AUTOLOAD {}
-
-sub DESTROY {}
-
-# Restore warning handler
-BEGIN {
-       $SIG{__WARN__} = $SIG{__WARN__}->();
-}
-
-1;
-
-#line 154
diff --git a/inc/Module/Install/Metadata.pm b/inc/Module/Install/Metadata.pm
deleted file mode 100644 (file)
index 653193d..0000000
+++ /dev/null
@@ -1,624 +0,0 @@
-#line 1
-package Module::Install::Metadata;
-
-use strict 'vars';
-use Module::Install::Base ();
-
-use vars qw{$VERSION @ISA $ISCORE};
-BEGIN {
-       $VERSION = '0.91';
-       @ISA     = 'Module::Install::Base';
-       $ISCORE  = 1;
-}
-
-my @boolean_keys = qw{
-       sign
-};
-
-my @scalar_keys = qw{
-       name
-       module_name
-       abstract
-       author
-       version
-       distribution_type
-       tests
-       installdirs
-};
-
-my @tuple_keys = qw{
-       configure_requires
-       build_requires
-       requires
-       recommends
-       bundles
-       resources
-};
-
-my @resource_keys = qw{
-       homepage
-       bugtracker
-       repository
-};
-
-my @array_keys = qw{
-       keywords
-};
-
-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 ( @boolean_keys ) {
-       *$key = sub {
-               my $self = shift;
-               if ( defined wantarray and not @_ ) {
-                       return $self->{values}->{$key};
-               }
-               $self->{values}->{$key} = ( @_ ? $_[0] : 1 );
-               return $self;
-       };
-}
-
-foreach my $key ( @scalar_keys ) {
-       *$key = sub {
-               my $self = shift;
-               return $self->{values}->{$key} if defined wantarray and !@_;
-               $self->{values}->{$key} = shift;
-               return $self;
-       };
-}
-
-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;
-       };
-}
-
-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;
-       };
-}
-
-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;
-       };
-}
-
-# Resource handling
-my %lc_resource = map { $_ => 1 } qw{
-       homepage
-       license
-       bugtracker
-       repository
-};
-
-sub resources {
-       my $self = shift;
-       while ( @_ ) {
-               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}->{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(@_) }
-
-# 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 dynamic_config {
-       my $self = shift;
-       unless ( @_ ) {
-               warn "You MUST provide an explicit true/false value to dynamic_config\n";
-               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"
-               );
-               $file = join('/', 'lib', split(/-/, $name)) . '.pm';
-               $file =~ s{.*/}{} 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.
-       # If there is a matching .pod, use that instead
-       my $pod = $file;
-       $pod =~ s/\.pm$/.pod/i;
-       $pod = $file unless -e $pod;
-
-       # Pull the different values
-       $self->name_from($file)         unless $self->name;
-       $self->version_from($file)      unless $self->version;
-       $self->perl_version_from($file) unless $self->perl_version;
-       $self->author_from($pod)        unless $self->author;
-       $self->license_from($pod)       unless $self->license;
-       $self->abstract_from($pod)      unless $self->abstract;
-
-       return 1;
-}
-
-sub provides {
-       my $self     = shift;
-       my $provides = ( $self->{values}->{provides} ||= {} );
-       %$provides = (%$provides, @_) if @_;
-       return $provides;
-}
-
-sub auto_provides {
-       my $self = shift;
-       return $self unless $self->is_admin;
-       unless (-e 'MANIFEST') {
-               warn "Cannot deduce auto_provides without a MANIFEST, skipping\n";
-               return $self;
-       }
-       # Avoid spurious warnings as we are not checking manifest here.
-       local $SIG{__WARN__} = sub {1};
-       require ExtUtils::Manifest;
-       local *ExtUtils::Manifest::manicheck = sub { return };
-
-       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 || {} } );
-}
-
-sub feature {
-       my $self     = shift;
-       my $name     = shift;
-       my $features = ( $self->{values}->{features} ||= [] );
-       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 {
-               $mods = \@_;
-       }
-
-       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}
-               ? @{ $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::Tiny', 0 );
-
-       require YAML::Tiny;
-       my $data = YAML::Tiny::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->can($key)->($self, $module => $version );
-                       }
-               } else {
-                       $self->can($key)->($self, $value);
-               }
-       }
-       return $self;
-}
-
-sub write {
-       my $self = shift;
-       return $self unless $self->is_admin;
-       $self->admin->write_meta;
-       return $self;
-}
-
-sub version_from {
-       require ExtUtils::MM_Unix;
-       my ( $self, $file ) = @_;
-       $self->version( ExtUtils::MM_Unix->parse_version($file) );
-}
-
-sub abstract_from {
-       require ExtUtils::MM_Unix;
-       my ( $self, $file ) = @_;
-       $self->abstract(
-               bless(
-                       { DISTNAME => $self->name },
-                       'ExtUtils::MM_Unix'
-               )->parse_abstract($file)
-        );
-}
-
-# Add both distribution and module name
-sub name_from {
-       my ($self, $file) = @_;
-       if (
-               Module::Install::_read($file) =~ m/
-               ^ \s*
-               package \s*
-               ([\w:]+)
-               \s* ;
-               /ixms
-       ) {
-               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 $file\n");
-       }
-}
-
-sub perl_version_from {
-       my $self = shift;
-       if (
-               Module::Install::_read($_[0]) =~ m/
-               ^
-               (?:use|require) \s*
-               v?
-               ([\d_\.]+)
-               \s* ;
-               /ixms
-       ) {
-               my $perl_version = $1;
-               $perl_version =~ s{_}{}g;
-               $self->perl_version($perl_version);
-       } else {
-               warn "Cannot determine perl version info from $_[0]\n";
-               return;
-       }
-}
-
-sub author_from {
-       my $self    = shift;
-       my $content = Module::Install::_read($_[0]);
-       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 $_[0]\n";
-       }
-}
-
-sub license_from {
-       my $self = shift;
-       if (
-               Module::Install::_read($_[0]) =~ 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|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 ) {
-                               $self->license($license);
-                               return 1;
-                       }
-               }
-       }
-
-       warn "Cannot determine license info from $_[0]\n";
-       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;