Class-Accessor-Grouped

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

        'Test::Exception' => '0.31',
      },
    },
    develop => {
      requires => {
        'Sub::Name'           => '0.05',
        'Class::XSAccessor'   => '1.19',
        'Pod::Coverage'       => '0.14',
        'Test::CheckManifest' => '0.09',
        'Test::NoTabs'        => '0.03',
        'Test::Pod'           => '1.00',
        'Test::Pod::Coverage' => '1.04',
        'Test::Spelling'      => '0.11',
        'Test::Strict'        => '0.05',
      },
    },
  },
  resources => {
    homepage => 'https://metacpan.org/release/Class-Accessor-Grouped',
    repository => {
      url => 'git://git.shadowcat.co.uk/p5sagit/Class-Accessor-Grouped.git',
      web => 'https://github.com/p5sagit/Class-Accessor-Grouped',
      type => 'git',
    },
    bugtracker => {
      web => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Class-Accessor-Grouped',
      mailto => 'bug-Class-Accessor-Grouped@rt.cpan.org',
    },
    license => [ 'http://dev.perl.org/licenses/' ],
  },
  no_index => {
    directory => [ 't', 'xt' ]
  },
);

my %MM_ARGS = (
  PREREQ_PM => {
    (
      (
        parse_args()->{PUREPERL_ONLY} 
        or !can_compile_loadable_object(quiet => 1)
      ) ? ()
      : (
        'Sub::Name' => $META{prereqs}{runtime}{recommends}{'Sub::Name'},
        # CXSA does not work on 5.6
        ( "$]" > 5.008 ? (
          'Class::XSAccessor' => $META{prereqs}{runtime}{recommends}{'Class::XSAccessor'}
        ) : ()),
      )
    ),
    ("$]" < 5.009_005 ? ( 'MRO::Compat' => 0 ) : ()),
  },
  realclean => { FILES => 'README' },
  (-e 'META.yml' ? () : ( test => { TESTS => 't/*.t xt/*.t xt/*/*.t' } ) ),
);

{
  package MY;
  sub distdir {
    my ($self, @arg) = @_;
    my $frag = $self->SUPER::distdir(@arg);
    $frag =~ s/^(distdir\s*:.*)/$1 create_readme/m;
    $frag .= <<'END_MAKE';
create_readme: create_distdir
	pod2text lib/Class/Accessor/Grouped.pm > $(DISTVNAME)/README
	cd $(DISTVNAME) && $(PERLRUN) "-MExtUtils::Manifest=maniadd" -e "maniadd({ README => 'Generated README' })"
END_MAKE
    $frag;
  }
}

use Text::ParseWords;

sub parse_args {
  # copied from EUMM
  ExtUtils::MakeMaker::parse_args(
    my $tmp = {},
    Text::ParseWords::shellwords($ENV{PERL_MM_OPT} || ''),
    @ARGV,
  );
  return $tmp->{ARGS} || {};
}

## BOILERPLATE ###############################################################
require ExtUtils::MakeMaker;

# have to do this since old EUMM dev releases miss the eval $VERSION line
my $eumm_version  = eval $ExtUtils::MakeMaker::VERSION;
my $mymeta        = $eumm_version >= 6.57_02;
my $mymeta_broken = $mymeta && $eumm_version < 6.57_07;

($MM_ARGS{NAME} = $META{name}) =~ s/-/::/g;
($MM_ARGS{VERSION_FROM} = "lib/$MM_ARGS{NAME}.pm") =~ s{::}{/}g;
$MM_ARGS{ABSTRACT_FROM} = $MM_ARGS{VERSION_FROM};
$META{license} = [ $META{license} ]
  if $META{license} && !ref $META{license};
$MM_ARGS{LICENSE} = $META{license}[0]
  if $META{license} && $eumm_version >= 6.30;
$MM_ARGS{NO_MYMETA} = 1
  if $mymeta_broken;
$MM_ARGS{META_ADD} = { 'meta-spec' => { version => 2 }, %META }
  unless -f 'META.yml';

for (qw(configure build test runtime)) {
  my $key = $_ eq 'runtime' ? 'PREREQ_PM' : uc $_.'_REQUIRES';
  my $r = $MM_ARGS{$key} = {
    %{$META{prereqs}{$_}{requires} || {}},
    %{delete $MM_ARGS{$key} || {}},
  };
  defined $r->{$_} or delete $r->{$_} for keys %$r;
}

$MM_ARGS{MIN_PERL_VERSION} = delete $MM_ARGS{PREREQ_PM}{perl} || 0;

delete $MM_ARGS{MIN_PERL_VERSION}
  if $eumm_version < 6.47_01;
$MM_ARGS{BUILD_REQUIRES} = {%{$MM_ARGS{BUILD_REQUIRES}}, %{delete $MM_ARGS{TEST_REQUIRES}}}
  if $eumm_version < 6.63_03;
$MM_ARGS{PREREQ_PM} = {%{$MM_ARGS{PREREQ_PM}}, %{delete $MM_ARGS{BUILD_REQUIRES}}}
  if $eumm_version < 6.55_01;
delete $MM_ARGS{CONFIGURE_REQUIRES}
  if $eumm_version < 6.51_03;

ExtUtils::MakeMaker::WriteMakefile(%MM_ARGS);
## END BOILERPLATE ###########################################################



( run in 0.748 second using v1.01-cache-2.11-cpan-364913b4093 )