Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

75 lines (62 sloc) 2.049 kb
package Module::Build::Sqitch;
use strict;
use warnings;
use Module::Build 0.35;
use parent 'Module::Build';
sub new {
my ( $class, %p ) = @_;
if ($^O eq 'MSWin32') {
my $recs = $p{recommends} ||= {};
$recs->{$_} = 0 for qw(
Win32
Win32::Console::ANSI
Win32API::Net
);
$p{requires}{'Win32::Locale'} = 0;
$p{requires}{'Win32::ShellQuote'} = 0;
}
my $self = $class->SUPER::new(%p);
$self->add_build_element('etc');
$self->add_build_element('mo');
$self->add_build_element('sql');
return $self;
}
sub _path_to {
my $self = shift;
if ( my $dir = $self->prefix || $self->install_base ) {
return File::Spec->catdir( $dir, @_ );
}
return File::Spec->catdir( $Config::Config{prefix}, @_, 'sqitch' );
}
sub process_etc_files {
my $self = shift;
my $etc = $self->_path_to('etc');
$self->install_path( etc => $etc );
for my $file ( @{ $self->rscan_dir( 'etc', sub { -f && !/\.\#/ } ) } ) {
$file = $self->localize_file_path($file);
# Remove leading `etc/` to get path relative to $etc.
my ($vol, $dirs, $fn) = File::Spec->splitpath($file);
my (undef, @segs) = File::Spec->splitdir($dirs);
my $rel = File::Spec->catpath($vol, File::Spec->catdir(@segs), $fn);
# Append .default if file already exists at its ultimate destination.
my $dest = -e File::Spec->catfile($etc, $rel) ? "$file.default" : $file;
$self->copy_if_modified(
from => $file,
to => File::Spec->catfile( $self->blib, $dest )
);
}
}
sub process_pm_files {
my $self = shift;
my $ret = $self->SUPER::process_pm_files(@_);
my $pm = File::Spec->catfile(qw(blib lib App Sqitch Config.pm));
my $etc = $self->_path_to('etc');
$self->do_system(
$self->perl, '-i.bak', '-pe',
qq{s{my \\\$SYSTEM_DIR = undef}{my \\\$SYSTEM_DIR = q{$etc}}},
$pm,
);
unlink "$pm.bak";
return $ret;
}
1;
Jump to Line
Something went wrong with that request. Please try again.