/usr/local/CPAN/Win32-Security/Build.PL
use Module::Build '0.24';
my $class = Module::Build->subclass(
class => 'Module::Build::Win32Security',
code => q{
sub make_executable {
my $self = shift;
foreach my $script (@_) {
if ($script =~ /Perm(Chg|Dump|Fix)\.pl$/i) {
$self->Module::Build::Base::make_executable($script);
} else {
$self->SUPER::make_executable($script);
}
}
}
sub ACTION_distdir {
my ($self) = shift;
$self->SUPER::ACTION_distdir();
my $dist_dir = $self->dist_dir();
my $dist_files = $self->_read_manifest('MANIFEST');
foreach my $file (keys %$dist_files) {
$file =~ /t\/[^\/.]+\.t/ or next;
$file = "$dist_dir/$file";
unless (open(MBWS_TEMP_FILE, "<$file")) {
warn "Unable to open '$file' for reading.\n";
next;
}
my(@orig_data) = <MBWS_TEMP_FILE>;
close(MBWS_TEMP_FILE);
my $orig_data = join('', @orig_data);
my $new_data = join('', map {s/^(\s*\$enabled\s*=\s*)\d(\s*;\s*(?:\#.*)?)$/${1}0${2}/; $_} @orig_data);
if ($orig_data ne $new_data) {
print "Disabling tests in '$file'.\n";
unless (open(MBWS_TEMP_FILE, ">$file")) {
warn "Unable to open '$file' for writing.\n";
next;
}
print MBWS_TEMP_FILE $new_data;
close(MBWS_TEMP_FILE);
}
}
}
sub ppm_name {
my $self = shift;
mkdir('MSWin32-x86-multi-thread');
return 'MSWin32-x86-multi-thread/' . $self->dist_dir;
}
sub ACTION_ppmzip {
my $self = shift;
$self->depends_on('ppmdist');
my $ppmzip = $self->dist_dir().'.ppm.zip';
my $ppm_name = $self->ppm_name();
unlink($ppmzip);
system("zip -9 $ppmzip *.ppd $ppm_name.tar.gz");
}
sub ACTION_ppmdist {
my ($self) = @_;
$self->depends_on('build', 'html', 'ppd');
opendir(TEMPDIR, $self->blib().'/libdoc');
foreach my $i (grep(!/^\.\.?$/, readdir(TEMPDIR))) {
unlink($self->blib().'/libdoc/'.$i);
}
closedir(TEMPDIR);
rmdir($self->blib().'/libdoc');
$self->add_to_cleanup($self->ppm_name);
$self->make_tarball($self->blib, $self->ppm_name);
}
},
);
my $build = $class->new(
module_name => 'Win32::Security',
dist_name => 'Win32-Security',
dist_version_from => 'lib/Win32/Security/NamedObject.pm',
license => 'perl',
requires => {
'Class::Prototyped' => '0.98',
'Data::BitMask' => '0.13',
'Win32::API' => '0',
},
script_files => [
'script/PermChg.pl',
'script/PermDump.pl',
'script/PermFix.pl'
],
requires_os => 'MSWin32',
create_readme => 1,
);
$build->create_build_script;