--- /dev/null
+package Catalyst::Build;
+
+use strict;
+use Module::Build;
+use base 'Module::Build';
+use Path::Class;
+use File::Find 'find';
+
+our @ignore =
+ qw/Build Build.PL Changes MANIFEST META.yml Makefile.PL Makefile README
+ _build blib lib script t/;
+
+our $FAKE;
+our $ignore = '^(' . join( '|', @ignore ) . ')$';
+
+=head1 NAME
+
+Catalyst::Build - Module::Build extension for Catalyst
+
+=head1 SYNOPSIS
+
+See L<Catalyst>
+
+=head1 DESCRIPTION
+
+L<Module::Build> extension for Catalyst.
+
+=head1 DEPRECATION NOTICE
+
+This module is deprecated in favor of L<Module::Install::Catalyst>.
+
+=head1 METHODS
+
+=over 4
+
+=item ACTION_install
+
+=cut
+
+sub new {
+ my $class = shift;
+ my $self = $class->SUPER::new(@_);
+
+ my $app_name = $self->{properties}{module_name};
+ warn <<"EOF";
+
+ Note:
+
+ The use of Build.PL for building and distributing Catalyst
+ applications is deprecated in Catalyst 5.58.
+
+ We recommend using the new Module::Install-based Makefile
+ system. You can generate a new Makefile.PL for your application
+ by running:
+
+ catalyst.pl -force -makefile $app_name
+
+EOF
+
+ return $self;
+}
+
+sub ACTION_install {
+ my $self = shift;
+ $self->SUPER::ACTION_install;
+ $self->ACTION_install_extras;
+}
+
+=item ACTION_fakeinstall
+
+=cut
+
+sub ACTION_fakeinstall {
+ my $self = shift;
+ $self->SUPER::ACTION_fakeinstall;
+ local $FAKE = 1;
+ $self->ACTION_install_extras;
+}
+
+=item ACTION_install_extras
+
+=cut
+
+sub ACTION_install_extras {
+ my $self = shift;
+ my $prefix = $self->{properties}{destdir} || undef;
+ my $sitelib = $self->install_destination('lib');
+ my @path = defined $prefix ? ( $prefix, $sitelib ) : ($sitelib);
+ my $path = dir( @path, split( '::', $self->{properties}{module_name} ) );
+ my @files = $self->_find_extras;
+ print "Installing extras to $path\n";
+ for (@files) {
+ $FAKE
+ ? print "$_ -> $path (FAKE)\n"
+ : $self->copy_if_modified( $_, $path );
+ }
+}
+
+sub _find_extras {
+ my $self = shift;
+ my @all = glob '*';
+ my @files;
+ for my $file (@all) {
+ next if $file =~ /$ignore/;
+ if ( -d $file ) {
+ find(
+ sub {
+ return if -d;
+ push @files, $File::Find::name;
+ },
+ $file
+ );
+ }
+ else { push @files, $file }
+ }
+ return @files;
+}
+
+=back
+
+=head1 AUTHOR
+
+Sebastian Riedel, C<sri@oook.de>
+
+=head1 LICENSE
+
+This library is free software, you can redistribute it and/or modify it under
+the same terms as Perl itself.
+
+=cut
+
+1;