Fix fix reference cycle in test col_accessor_map callback
[dbsrgits/DBIx-Class-Schema-Loader.git] / Makefile.PL
1 use warnings;
2 use strict;
3
4 use 5.008001;
5 BEGIN { unshift @INC, '.' unless $INC[-1] eq '.'; }
6 use inc::Module::Install 1.00;
7
8 use Getopt::Long();
9
10 my $getopt = Getopt::Long::Parser->new(
11     config => [qw/gnu_getopt bundling_override no_ignore_case pass_through/]
12 );
13 my $args = {
14     skip_author_deps => undef,
15 };
16 $getopt->getoptions($args, 'skip_author_deps');
17 if (@ARGV) {
18     warn "\nIgnoring unrecognized option(s): @ARGV\n\n";
19 }
20
21 use FindBin;
22 use lib "$FindBin::Bin/lib";
23
24 perl_version '5.008001';
25 name           'DBIx-Class-Schema-Loader';
26 all_from       'lib/DBIx/Class/Schema/Loader.pm';
27
28 # temporary, needs to be thrown out
29 test_requires 'DBIx::Class::IntrospectableM2M' => 0;
30
31 # core, but specific versions not available on older perls
32 test_requires 'File::Temp'      => '0.16';
33 test_requires 'File::Path'      => '2.07';
34
35 test_requires 'DBD::SQLite'     => '1.29';
36 test_requires 'Test::Exception' => '0.31';
37 test_requires 'Test::More'      => '0.94';
38 test_requires 'Test::Warn'      => '0.21';
39 test_requires 'Test::Deep'      => '0.107';
40 test_requires 'Test::Differences' => '0.60';
41
42 requires 'Carp::Clan'                  => 0;
43 requires 'Class::Accessor::Grouped'    => '0.10008';
44 requires 'Class::C3::Componentised'    => '1.0008';
45 requires 'Class::Inspector'            => '1.27';
46 requires 'Class::Unload'               => '0.07';
47 requires 'curry'                       => '1.000000',
48 requires 'Data::Dump'                  => '1.06';
49 requires 'DBIx::Class'                 => '0.08127';
50 requires 'Hash::Merge'                 => '0.12';
51 requires 'Lingua::EN::Inflect::Number' => '1.1';
52 requires 'Lingua::EN::Tagger'          => '0.23';
53 requires 'Lingua::EN::Inflect::Phrase' => '0.15';
54 requires 'List::Util'                  => '1.33';
55 requires 'MRO::Compat'                 => '0.09';
56 requires 'namespace::clean'            => '0.23';
57 requires 'Scope::Guard'                => '0.20';
58 requires 'String::ToIdentifier::EN'    => '0.05';
59 requires 'String::CamelCase'           => '0.02';
60 requires 'Sub::Util'                   => '1.40';
61 requires 'Try::Tiny'                   => 0;
62
63 # core, but specific versions not available on older perls
64 requires 'Digest::MD5'                 => '2.36';
65 requires 'Exporter'                    => '5.63';
66
67 print <<"EOF";
68 ******************* DBIx::Class::Schema::Loader WARNING ***********************
69 The default attributes for belongs_to relationships for foreign keys with no
70 rules has been changed for most databases, and is soon changing for the rest,
71 as ON DELETE/UPDATE and DEFERRABLE clauses for foreign keys are now being
72 introspected.
73
74 THIS MAY AFFECT YOUR DDL DIFFS WHEN DEPLOYING
75
76 YOUR GENERATED CODE WILL ALMOST CERTAINLY CHANGE
77
78 Read more about the changes in "relationship_attrs" in:
79
80 perldoc DBIx::Class::Schema::Loader::Base
81
82 https://metacpan.org/module/DBIx::Class::Schema::Loader::Base#relationship_attrs
83
84 See also the "Changes" file for the last few revisions.
85 *******************************************************************************
86 EOF
87
88 if ($Module::Install::AUTHOR && ! $args->{skip_author_deps}) {
89     my @missing_plugins;
90     for my $plugin (qw(ReadmeFromPod AuthorTests)) {
91         eval "require Module::Install::$plugin" and next;
92         push @missing_plugins, "Module::Install::$plugin";
93         chomp(my $err = $@);
94         $missing_plugins[-1] .= " ($err)"
95             unless $err =~ m{^Can't locate Module/Install/$plugin.pm in \@INC};
96     }
97     die "\nYou need to install the following modules to run this Makefile.PL in author mode:\n\n", join("\n", @missing_plugins), "\n\n"
98         if @missing_plugins;
99
100     warn "\n*** AUTHOR MODE: some optional dependencies converted to hard requires.\n\n";
101
102     require DBIx::Class::Schema::Loader::Optional::Dependencies;
103
104     test_requires %{DBIx::Class::Schema::Loader::Optional::Dependencies
105         ->modreq_list_for([
106             grep { !/rdbms/ }
107             keys %{ DBIx::Class::Schema::Loader::Optional::Dependencies
108                 ->req_group_list
109             }
110         ])};
111
112     DBIx::Class::Schema::Loader::Optional::Dependencies->_gen_pod(undef, 'lib');
113
114     author_tests( 'xt' );
115     readme_from( 'lib/DBIx/Class/Schema/Loader.pm' );
116     realclean_files( qw[README MANIFEST lib/DBIx/Class/Schema/Loader/Optional/Dependencies.pod] );
117     postamble <<EOP;
118 create_distdir: author_stop_distdir_creation
119 author_stop_distdir_creation:
120 \t\$(NOECHO) \$(ECHO) Creation of dist with author mode deps not allowed
121 \t\$(NOECHO) \$(ECHO) Please re-run Makefile.PL with --skip_author_deps
122 \t\$(NOECHO) \$(FALSE)
123 EOP
124
125 }
126
127 tests_recursive;
128
129 install_script 'script/dbicdump';
130
131 resources 'IRC'         => 'irc://irc.perl.org/#dbix-class';
132 resources 'license'     => 'http://dev.perl.org/licenses/';
133 resources 'repository'  => 'https://github.com/dbsrgits/dbix-class-schema-loader';
134 resources 'MailingList' => 'http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class';
135
136 auto_install;
137 WriteAll;
138
139 # vim:et sts=4 sw=4 tw=0: