Factor out the Makefile.PL into easily digestable snippets
Peter Rabbitson [Tue, 24 Jan 2012 11:47:44 +0000 (12:47 +0100)]
Also add explicit guard for attempts to `make dist` from within non-author mode.
The rationale is to disallow dist building on machines that do not have the optdeps
installed (this still does not giarantee `make test` will run, but is at least a
nudge in the right direction)

12 files changed:
.gitignore
MANIFEST.SKIP
Makefile.PL
maint/Makefile.PL.inc/01_adjust_INC.pl [new file with mode: 0644]
maint/Makefile.PL.inc/11_authortests.pl [new file with mode: 0644]
maint/Makefile.PL.inc/12_authordeps.pl [new file with mode: 0644]
maint/Makefile.PL.inc/21_meta_noindex.pl [new file with mode: 0644]
maint/Makefile.PL.inc/51_autogen_README.pl [new file with mode: 0644]
maint/Makefile.PL.inc/52_inject_dbicadmin_pod.pl [new file with mode: 0644]
maint/Makefile.PL.inc/53_autogen_optdeps_pod.pl [new file with mode: 0644]
maint/Makefile.PL.inc/54_autogen_inherited_pod.pl [new file with mode: 0644]
maint/Makefile.PL.inc/59_autogen_MANIFEST.pl [new file with mode: 0644]

index 3a31385..e019e8a 100644 (file)
@@ -6,11 +6,12 @@ META.*
 MYMETA.*
 Makefile
 Makefile.old
-README
 _build/
 blib/
 inc/
 lib/DBIx/Class/Optional/Dependencies.pod
+DBIx-Class-*/
+DBIx-Class-*.tar.*
 pm_to_blib
 t/var/
 .*.sw?
index 60d118c..eb45ef6 100644 (file)
@@ -1,5 +1,4 @@
-^(?!script/|examples/|lib/|inc/|t/|xt/|Makefile.PL$|README$|MANIFEST$|Changes$|META.yml$)
-
+^(?!script/|examples/|lib/|inc/|t/|xt/|Makefile\.PL$|maint/Makefile\.PL|README$|MANIFEST$|Changes$|META\.(?:yml|json)$)
 
 # Avoid version control files.
 \bRCS\b
 ^t/var
 
 # Don't ship the last dist we built :)
-\.tar\.gz$
-
-# Skip maint stuff
-^maint/
+\.tar\.(?:gz|bz2|xz)$
 
 # Avoid patch remnants
 \.orig$
 \.rej$
 
 # Dont use Module::Build anymore
-^Build.PL$
+^Build\.PL$
index b41e281..eb3c764 100644 (file)
@@ -1,49 +1,55 @@
-use inc::Module::Install 1.00;
 use strict;
 use warnings;
 
 use 5.008001;
+use inc::Module::Install 1.00;
 
-use FindBin;
-use lib "$FindBin::Bin/lib";
-use DBIx::Class::Optional::Dependencies;
-
-# get cpanX --installdeps . to behave in a checkout (most users do not need
-# the deps for a full test suite run, and if they do - there's MI::AutoInstall
-# for that)
 ##
 ## DO NOT USE THIS HACK IN YOUR DISTS!!! (it makes #toolchain sad)
 ##
-$Module::Install::AUTHOR = 0 if (grep { $ENV{"PERL5_${_}_IS_RUNNING"} } (qw/CPANM CPANPLUS CPAN/) );
-
-###
-### DO NOT ADD OPTIONAL DEPENDENCIES HERE, EVEN AS recommends()
-### All of them should go to DBIx::Class::Optional::Dependencies
-###
+# get cpanX --installdeps . to behave in a checkout (most users do not expect
+# the deps for a full test suite run, and if they do - there's MI::AutoInstall
+# for that)
+BEGIN {
+  $Module::Install::AUTHOR = 0 if (grep { $ENV{"PERL5_${_}_IS_RUNNING"} } (qw/CPANM CPANPLUS CPAN/) );
+}
 
 name     'DBIx-Class';
 perl_version '5.008001';
 all_from 'lib/DBIx/Class.pm';
 
-my $build_requires = {
-  # needed for testing only, not for operation
-  'DBD::SQLite'              => '1.29',
-};
+tests_recursive (qw|
+    t
+|);
 
-my $test_requires = {
-  'File::Temp'               => '0.22',
-  'Test::Exception'          => '0.31',
-  'Test::Warn'               => '0.21',
-  'Test::More'               => '0.94',
-  # not sure if this is necessary at all, ask schwern some day
-  'Test::Builder'            => '0.94',
+install_script (qw|
+    script/dbicadmin
+|);
 
-  # this is already a dep of n::c, but just in case - used by t/55namespaces_cleaned.t
-  # remove and do a manual glob-collection if n::c is no longer a dep
-  'Package::Stash'           => '0.28',
-};
+homepage 'http://www.dbix-class.org/';
+resources 'IRC'         => 'irc://irc.perl.org/#dbix-class';
+resources 'license'     => 'http://dev.perl.org/licenses/';
+resources 'repository'  => 'git://git.shadowcat.co.uk/dbsrgits/DBIx-Class.git';
+resources 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class';
+resources 'bugtracker'  => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=DBIx-Class';
 
+###
+### DO NOT ADD OPTIONAL DEPENDENCIES HERE, EVEN AS recommends()
+### All of them *MUST* go to DBIx::Class::Optional::Dependencies
+###
 my $runtime_requires = {
+  # FIXME - temporary, needs throwing out for something more efficient
+  'Data::Compare'            => '1.22',
+
+  # DBI itself should be capable of installation and execution in pure-perl
+  # mode. However it has never been tested yet, so consider XS for the time
+  # being
+  'DBI'                      => '1.57',
+
+  # XS (or XS-dependent) libs
+  'Sub::Name'                => '0.04',
+
+  # pure-perl (FatPack-able) libs
   'Class::Accessor::Grouped' => '0.10002',
   'Class::C3::Componentised' => '1.0009',
   'Class::Inspector'         => '1.24',
@@ -60,17 +66,28 @@ my $runtime_requires = {
   'SQL::Abstract'            => '1.72',
   'Try::Tiny'                => '0.04',
 
-  # XS (or XS-dependent) libs
-  'DBI'                      => '1.57',
-  'Sub::Name'                => '0.04',
-
   # dual-life corelibs needing a specific bugfixed version
   'File::Path'               => '2.07',
+};
 
-  # FIXME - temporary, needs throwing out for something more efficient
-  'Data::Compare'            => '1.22',
+my $build_requires = {
+  # needed for testing only, not for operation
+  # we will move away from this dep eventually, perhaps to DBD::CSV or something
+  'DBD::SQLite'              => '1.29',
 };
 
+my $test_requires = {
+  'File::Temp'               => '0.22',
+  'Test::Exception'          => '0.31',
+  'Test::Warn'               => '0.21',
+  'Test::More'               => '0.94',
+  # not sure if this is necessary at all, ask schwern some day
+  'Test::Builder'            => '0.94',
+
+  # this is already a dep of n::c, but just in case - used by t/55namespaces_cleaned.t
+  # remove and do a manual glob-collection if n::c is no longer a dep
+  'Package::Stash'           => '0.28',
+};
 
 # Bail out on parallel testing
 if (
@@ -84,7 +101,7 @@ if (
 ***                                                                        ***
 ***      PARALLEL TESTING DETECTED ( \$ENV{HARNESS_OPTIONS} = 'j$1' )        ***
 ***                                                                        ***
-*** DBIC tests will fail. It is harder to make them parallel-friendly than ***
+*** DBIC tests WILL FAIL. It is harder to make them parallel-friendly than ***
 *** it should be (though work is underway). In the meantime you will have  ***
 *** to adjust your environment and re-run the installation. Sorry!         ***
 ***                                                                        ***
@@ -93,73 +110,48 @@ if (
 
 EOP
 
-require Getopt::Long;
-my $getopt = Getopt::Long::Parser->new(
-  config => [qw/gnu_getopt bundling_override no_ignore_case pass_through/]
-);
-my $args = {
-  skip_author_deps => undef,
-};
-$getopt->getoptions($args, 'skip_author_deps');
-if (@ARGV) {
-  warn "\nIgnoring unrecognized option(s): @ARGV\n\n";
-}
-
 # this is so we can order requires alphabetically
-# copies are needed for author requires injection
+# copies are needed for potential author requires injection
 my $reqs = {
   build_requires => { %$build_requires },
   requires => { %$runtime_requires },
   test_requires => { %$test_requires },
 };
 
-my %reqs_for_group = %{DBIx::Class::Optional::Dependencies->req_group_list};
-
-# exclude the rdbms_* groups which are for DBIC users
-my $opt_testdeps = {
-  map { %{$reqs_for_group{$_}} } grep { !/^rdbms_/ } keys %reqs_for_group
-};
-
-# require extra modules for testing if we're in a checkout
-my $optdep_msg;
 if ($Module::Install::AUTHOR) {
-  if ($args->{skip_author_deps}) {
-    $optdep_msg = <<'EOW';
-
-******************************************************************************
-******************************************************************************
-***                                                                        ***
-*** IGNORING AUTHOR MODE: no optional test dependencies will be forced.    ***
-***                                                                        ***
-*** If you are using this checkout with the intention of submitting a DBIC ***
-*** patch, you are *STRONGLY ENCOURAGED* to install all dependencies, so   ***
-*** that every possible unit-test will run.                                ***
-***                                                                        ***
-******************************************************************************
-******************************************************************************
-
-EOW
+  # get options here, make $args available to all snippets
+  require Getopt::Long;
+  my $getopt = Getopt::Long::Parser->new(
+    config => [qw/gnu_getopt bundling_override no_ignore_case pass_through/]
+  );
+  my $args = {
+    skip_author_deps => undef,
+  };
+  $getopt->getoptions($args, 'skip_author_deps');
+  if (@ARGV) {
+    warn "\nIgnoring unrecognized option(s): @ARGV\n\n";
   }
-  else {
-    $optdep_msg = <<'EOW';
-
-******************************************************************************
-******************************************************************************
-***                                                                        ***
-*** AUTHOR MODE: all optional test dependencies converted to hard requires ***
-***       ( to disable re-run Makefile.PL with --skip_author_deps )        ***
-***                                                                        ***
-******************************************************************************
-******************************************************************************
-
-EOW
 
-    $reqs->{test_requires} = {
-      %{$reqs->{test_requires}},
-      %$opt_testdeps
-    };
+  require File::Spec;
+  # string-eval, not do(), because we need to provide the
+  # $reqs and $*_requires lexicals to the included file
+  # (some includes *do* modify $reqs above)
+  for (sort glob ( File::Spec->catfile('maint', 'Makefile.PL.inc', '*') ) ) {
+    eval scalar do { local (@ARGV, $/) = $_; <> }
+      or die ($@ || $!);
   }
 }
+else {
+  # make sure this Makefile can not be used to make a dist
+  # (without the author includes there are no sanity checks)
+  postamble <<EOP;
+.PHONY: nonauthor_stop_distdir_creation
+create_distdir: nonauthor_stop_distdir_creation
+nonauthor_stop_distdir_creation:
+\t\$(NOECHO) \$(ECHO) Creation of dists in non-author mode is not allowed
+\t\$(NOECHO) \$(FALSE)
+EOP
+}
 
 # compose final req list, for alphabetical ordering
 my %final_req;
@@ -182,154 +174,8 @@ for my $mod (sort keys %final_req) {
   $rtype->($mod, $ver);
 }
 
-# output twice since the deplist is > 70 lines
-warn $optdep_msg if $Module::Install::AUTHOR;
+# author-mode or not - this is where we show a list of missing deps
+# IFF we are running interactively
 auto_install();
-warn $optdep_msg if $Module::Install::AUTHOR;
-
-
-# re-create various autogenerated documentation bits
-if ($Module::Install::AUTHOR) {
-
-  # adjust ENV for $AUTHOR system() calls
-  require Config;
-  $ENV{PERL5LIB} = join ($Config::Config{path_sep}, @INC);
-
-  print "Regenerating README\n";
-  system('pod2text lib/DBIx/Class.pm > README');
-
-  if (-f 'MANIFEST') {
-    print "Removing MANIFEST\n";
-    unlink 'MANIFEST';
-  }
-
-  print "Regenerating Optional/Dependencies.pod\n";
-  require DBIx::Class::Optional::Dependencies;
-  DBIx::Class::Optional::Dependencies->_gen_pod (Meta->version);
-
-  # FIXME Disabled due to unsolved issues, ask theorbtwo
-  #  require Module::Install::Pod::Inherit;
-  #  PodInherit();
-}
-
-
-tests_recursive (qw|
-    t
-|);
-
-# temporary(?) until I get around to fix M::I wrt xt/
-# needs Module::Install::AuthorTests
-eval {
-  # this should not be necessary since the autoloader is supposed
-  # to work, but there were reports of it failing
-  require Module::Install::AuthorTests;
-  recursive_author_tests (qw/xt/);
-  1;
-} || do {
-  if ($Module::Install::AUTHOR && ! $args->{skip_author_deps}) {
-    my $err = $@;
-
-    # better error message in case of missing dep
-    eval { require Module::Install::AuthorTests }
-      || die "\nYou need Module::Install::AuthorTests installed to run this Makefile.PL in author mode (or supply --skip_author_deps):\n\n$@\n";
-
-    die $err;
-  }
-};
-
-
-install_script (qw|
-    script/dbicadmin
-|);
-
-
-### Mangle makefile - read the comments for more info
-#
-postamble <<"EOP";
-
-# This will add an extra dep-spec for the distdir target,
-# which `make` will fold together in a first-come first-serve
-# fashion. What we do here is essentially adding extra
-# commands to execute once the distdir is assembled (via
-# create_distdir), but before control is returned to a higher
-# calling rule.
-distdir : dbicadmin_pod_inject
-
-# The pod self-injection code is in fact a hidden option in
-# dbicadmin itself
-dbicadmin_pod_inject :
-\tcd \$(DISTVNAME) && \$(ABSPERL) -Ilib script/dbicadmin --selfinject-pod
-
-# Regenerate manifest before running create_distdir.
-create_distdir : manifest
-
-EOP
-
-homepage 'http://www.dbix-class.org/';
-resources 'IRC'         => 'irc://irc.perl.org/#dbix-class';
-resources 'license'     => 'http://dev.perl.org/licenses/';
-resources 'repository'  => 'git://git.shadowcat.co.uk/dbsrgits/DBIx-Class.git';
-resources 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class';
-resources 'bugtracker'  => 'http://rt.cpan.org/NoAuth/Bugs.html?Dist=DBIx-Class';
-
-# Deprecated/internal modules need no exposure
-no_index directory => $_ for (qw|
-  lib/DBIx/Class/Admin
-  lib/DBIx/Class/PK/Auto
-  lib/DBIx/Class/CDBICompat
-|);
-no_index package => $_ for (qw/
-  DBIx::Class::Storage::DBIHacks
-  DBIx::Class::Carp
-  DBIx::Class::ResultSet::Pager
-/);
 
 WriteAll();
-
-# Re-write META.yml to _exclude_ all forced build-requires (we do not want to ship
-# this) We are also not using M::I::AuthorRequires as this will be an extra dep,
-# and deps in Makefile.PL still suck
-# Also always test the result so we stop shipping borked dependency lists to CPAN
-
-# FIXME test_requires is not yet part of META
-my %original_build_requires = ( %$build_requires, %$test_requires );
-my @all_build_requires = @{delete Meta->{values}{build_requires}};
-my %removed_build_requires;
-
-for (@all_build_requires) {
-  if ($original_build_requires{$_->[0]}) {
-    push @{Meta->{values}{build_requires}}, $_;
-  }
-  else {
-    $removed_build_requires{$_->[0]} = $_->[1]
-      unless $_->[0] eq 'ExtUtils::MakeMaker';
-  }
-}
-
-# Rewrite only in author mode, the original META should not contain anything anyway
-# if we executed as non-author
-if ($Module::Install::AUTHOR && keys %removed_build_requires) {
-  print "Regenerating META with author requires excluded\n";
-  Meta->write;
-}
-
-# test that we really took things away (just in case, happened twice somehow)
-if (! -f 'META.yml') {
-  warn "No META.yml generated?! aborting...\n";
-  exit 1;
-}
-my $meta = do { local @ARGV = 'META.yml'; local $/; <> };
-
-# this is safe as there is a fatal check earlier to make sure $opt_testdeps does
-# not contain any real dependencies
-my @illegal_leftovers = grep
-  { $meta =~ /^ \s+ \Q$_\E \: \s+ /mx }
-  ( sort keys %$opt_testdeps )
-;
-
-if (@illegal_leftovers) {
-  die join ("\n",
-    "\n\nFATAL FAIL! It looks like some author dependencies made it to the META.yml:\n",
-    map { "\t$_" } @illegal_leftovers
-  ) . "\n\n";
-}
diff --git a/maint/Makefile.PL.inc/01_adjust_INC.pl b/maint/Makefile.PL.inc/01_adjust_INC.pl
new file mode 100644 (file)
index 0000000..d69693a
--- /dev/null
@@ -0,0 +1,13 @@
+die "Makefile.PL does not seem to have been executed from the root distdir\n"
+  unless -d 'lib';
+
+# $FindBin::Bin is the location of the inluding Makefile.PL, not this file
+require FindBin;
+unshift @INC, "$FindBin::Bin/lib";
+
+# adjust ENV for $AUTHOR system() calls
+require Config;
+$ENV{PERL5LIB} = join ($Config::Config{path_sep}, @INC);
+
+# keep the Makefile.PL eval happy
+1;
diff --git a/maint/Makefile.PL.inc/11_authortests.pl b/maint/Makefile.PL.inc/11_authortests.pl
new file mode 100644 (file)
index 0000000..ebcda2d
--- /dev/null
@@ -0,0 +1,22 @@
+# temporary(?) until I get around to fix M::I wrt xt/
+# needs Module::Install::AuthorTests
+eval {
+  # this should not be necessary since the autoloader is supposed
+  # to work, but there were reports of it failing
+  require Module::Install::AuthorTests;
+  recursive_author_tests (qw/xt/);
+  1;
+} || do {
+  if (! $args->{skip_author_deps}) {
+    my $err = $@;
+
+    # better error message in case of missing dep
+    eval { require Module::Install::AuthorTests }
+      || die "\nYou need Module::Install::AuthorTests installed to run this Makefile.PL in author mode (or supply --skip_author_deps):\n\n$@\n";
+
+    die $err;
+  }
+};
+
+# keep the Makefile.PL eval happy
+1;
diff --git a/maint/Makefile.PL.inc/12_authordeps.pl b/maint/Makefile.PL.inc/12_authordeps.pl
new file mode 100644 (file)
index 0000000..1b2df2c
--- /dev/null
@@ -0,0 +1,121 @@
+my ($optdep_msg, $opt_testdeps);
+
+if ($args->{skip_author_deps}) {
+  $optdep_msg = <<'EOW';
+
+******************************************************************************
+******************************************************************************
+***                                                                        ***
+*** IGNORING AUTHOR MODE: no optional test dependencies will be forced.    ***
+***                                                                        ***
+*** If you are using this checkout with the intention of submitting a DBIC ***
+*** patch, you are *STRONGLY ENCOURAGED* to install all dependencies, so   ***
+*** that every possible unit-test will run.                                ***
+***                                                                        ***
+******************************************************************************
+******************************************************************************
+
+EOW
+}
+else {
+  $optdep_msg = <<'EOW';
+
+******************************************************************************
+******************************************************************************
+***                                                                        ***
+*** AUTHOR MODE: all optional test dependencies converted to hard requires ***
+***       ( to disable re-run Makefile.PL with --skip_author_deps )        ***
+***                                                                        ***
+******************************************************************************
+******************************************************************************
+
+EOW
+
+  require DBIx::Class::Optional::Dependencies;
+  my %reqs_for_group = %{DBIx::Class::Optional::Dependencies->req_group_list};
+
+  # exclude the rdbms_* groups which are for DBIC users
+  $opt_testdeps = {
+    map { %{$reqs_for_group{$_}} } grep { !/^rdbms_/ } keys %reqs_for_group
+  };
+
+  print "Including all optional deps\n";
+  $reqs->{test_requires} = {
+    %{$reqs->{test_requires}},
+    %$opt_testdeps
+  };
+}
+
+# nasty hook into both M::AI init and the prompter, so that the optdep message
+# comes at the right places (on top and then right above the prompt)
+{
+  require Module::AutoInstall;
+  no warnings 'redefine';
+  no strict 'refs';
+
+  for (qw/_prompt import/) {
+    my $meth = "Module::AutoInstall::$_";
+    my $orig = \&{$meth};
+    *{$meth} = sub {
+      print $optdep_msg;
+      goto $orig;
+    };
+  }
+}
+
+# this will run after the Makefile is written and the main Makefile.PL terminates
+#
+END {
+  # Re-write META.yml at the end to _exclude_ all forced build-requires (we do not
+  # want to ship this) We are also not using M::I::AuthorRequires as this will be
+  # an extra dep, and deps in Makefile.PL still suck
+  # Also always test the result so we stop shipping borked dependency lists to CPAN
+
+  # FIXME test_requires is not yet part of META
+  my %original_build_requires = ( %$build_requires, %$test_requires );
+  my @all_build_requires = @{delete Meta->{values}{build_requires}||[]};
+  my %removed_build_requires;
+
+  for (@all_build_requires) {
+    if ($original_build_requires{$_->[0]}) {
+      push @{Meta->{values}{build_requires}}, $_;
+    }
+    else {
+      $removed_build_requires{$_->[0]} = $_->[1]
+        unless $_->[0] eq 'ExtUtils::MakeMaker';
+    }
+  }
+
+  if (keys %removed_build_requires) {
+    print "Regenerating META with author requires excluded\n";
+    Meta->write;
+  }
+
+  # test that we really took things away (just in case, happened twice somehow)
+  if (! -f 'META.yml') {
+    warn "No META.yml generated?! aborting...\n";
+    unlink 'Makefile';
+    exit 1;
+  }
+  my $meta = do { local @ARGV = 'META.yml'; local $/; <> };
+
+  # this is safe as there is a fatal check earlier in the main Makefile.PL
+  # to make sure there are no duplicates (i.e. $opt_testdeps does not contain 
+  # any real dependencies)
+  my @illegal_leftovers = grep
+    { $meta =~ /^ \s+ \Q$_\E \: \s+ /mx }
+    ( sort keys %$opt_testdeps )
+  ;
+
+  if (@illegal_leftovers) {
+    warn join ("\n",
+      "\n\nFATAL FAIL! It looks like some author dependencies made it to the META.yml:\n",
+      map { "\t$_" } @illegal_leftovers
+    ) . "\n\n";
+    unlink 'Makefile';
+    exit 1;
+  }
+}
+
+# keep the Makefile.PL eval happy
+1;
diff --git a/maint/Makefile.PL.inc/21_meta_noindex.pl b/maint/Makefile.PL.inc/21_meta_noindex.pl
new file mode 100644 (file)
index 0000000..9913b85
--- /dev/null
@@ -0,0 +1,16 @@
+print "Appending to the no_index META list\n";
+
+# Deprecated/internal modules need no exposure when building the meta
+no_index directory => $_ for (qw|
+  lib/DBIx/Class/Admin
+  lib/DBIx/Class/PK/Auto
+  lib/DBIx/Class/CDBICompat
+|);
+no_index package => $_ for (qw/
+  DBIx::Class::Storage::DBIHacks
+  DBIx::Class::Carp
+  DBIx::Class::ResultSet::Pager
+/);
+
+# keep the Makefile.PL eval happy
+1;
diff --git a/maint/Makefile.PL.inc/51_autogen_README.pl b/maint/Makefile.PL.inc/51_autogen_README.pl
new file mode 100644 (file)
index 0000000..28646c5
--- /dev/null
@@ -0,0 +1,22 @@
+# Makefile syntax allows adding extra dep-specs for already-existing targets,
+# and simply appends them on *LAST*-come *FIRST*-serve basis.
+# This allows us to inject extra depenencies for standard EUMM targets
+
+postamble <<"EOP";
+
+.PHONY: dbic_clonedir_cleanup_readme dbic_clonedir_gen_readme
+
+distdir : dbic_clonedir_cleanup_readme
+
+create_distdir : dbic_clonedir_gen_readme
+
+dbic_clonedir_gen_readme :
+\tpod2text lib/DBIx/Class.pm > README
+
+dbic_clonedir_cleanup_readme :
+\t\$(RM_F) README
+
+EOP
+
+# keep the Makefile.PL eval happy
+1;
diff --git a/maint/Makefile.PL.inc/52_inject_dbicadmin_pod.pl b/maint/Makefile.PL.inc/52_inject_dbicadmin_pod.pl
new file mode 100644 (file)
index 0000000..e9f0980
--- /dev/null
@@ -0,0 +1,19 @@
+# Makefile syntax allows adding extra dep-specs for already-existing targets,
+# and simply appends them on *LAST*-come *FIRST*-serve basis.
+# This allows us to inject extra depenencies for standard EUMM targets
+
+postamble <<"EOP";
+
+.PHONY: dbic_distdir_dbicadmin_pod_inject
+
+distdir : dbic_distdir_dbicadmin_pod_inject
+
+# The pod self-injection code is in fact a hidden option in
+# dbicadmin itself, we execute the one in the distdir
+dbic_distdir_dbicadmin_pod_inject :
+\t\$(ABSPERL) -I\$(DISTVNAME)/lib \$(DISTVNAME)/script/dbicadmin --selfinject-pod
+
+EOP
+
+# keep the Makefile.PL eval happy
+1;
diff --git a/maint/Makefile.PL.inc/53_autogen_optdeps_pod.pl b/maint/Makefile.PL.inc/53_autogen_optdeps_pod.pl
new file mode 100644 (file)
index 0000000..7c33931
--- /dev/null
@@ -0,0 +1,21 @@
+# generate the pod as both a clone-dir step, and a makefile distdir step
+my $ver = Meta->version;
+
+print "Regenerating Optional/Dependencies.pod\n";
+require DBIx::Class::Optional::Dependencies;
+DBIx::Class::Optional::Dependencies->_gen_pod ($ver);
+
+postamble <<"EOP";
+
+.PHONY: dbic_clonedir_gen_optdeps_pod
+
+create_distdir : dbic_clonedir_gen_optdeps_pod
+
+dbic_clonedir_gen_optdeps_pod :
+\t\$(ABSPERL) -Ilib -MDBIx::Class::Optional::Dependencies -e 'DBIx::Class::Optional::Dependencies->_gen_pod($ver)'
+
+EOP
+
+
+# keep the Makefile.PL eval happy
+1;
diff --git a/maint/Makefile.PL.inc/54_autogen_inherited_pod.pl b/maint/Makefile.PL.inc/54_autogen_inherited_pod.pl
new file mode 100644 (file)
index 0000000..6b0e3c8
--- /dev/null
@@ -0,0 +1,6 @@
+# FIXME Disabled due to unsolved issues, ask theorbtwo
+#require Module::Install::Pod::Inherit;
+#PodInherit();
+
+# keep the Makefile.PL eval happy
+1;
diff --git a/maint/Makefile.PL.inc/59_autogen_MANIFEST.pl b/maint/Makefile.PL.inc/59_autogen_MANIFEST.pl
new file mode 100644 (file)
index 0000000..0572531
--- /dev/null
@@ -0,0 +1,15 @@
+# Makefile syntax allows adding extra dep-specs for already-existing targets,
+# and simply appends them on *LAST*-come *FIRST*-serve basis.
+# This allows us to inject extra depenencies for standard EUMM targets
+
+unlink 'MANIFEST';
+
+# preamble. so that the manifest target is first, hence executes last
+preamble <<"EOP";
+
+create_distdir : manifest
+
+EOP
+
+# keep the Makefile.PL eval happy
+1;