Alien-V8
view release on metacpan or search on metacpan
inc/Alien/V8/Build.pm view on Meta::CPAN
($2 < 4);
} else {
warn "Failed to check Python version, assuming it is correct\n";
}
print "Using $version from $pythonpath\n";
}
##############################################################################
#
# Module::Build actions
#
##############################################################################
sub ACTION_build {
my $self = shift;
check_python_version();
my $curdir = getcwd;
chdir($SrcDir) or
die "Failed to chdir to $SrcDir: $!\n";
my $tar = Archive::Tar->new();
# Extract SCons
if (!-d $SConsDir) {
print "Extracting $SConsDist\n";
$tar->read($SConsDist);
$tar->extract();
}
# Ensure SCons is executable
if ($^O ne "MSWin32") {
chmod(0755, $SConsBin) or
die "Failed to set permissions on $SConsBin: $!\n";
}
# Extract V8
if (!-d $V8SrcDir) {
print "Extracting $V8Dist\n";
$tar->read($V8Dist);
$tar->extract();
}
# Remove -Werror from SConstruct
do {
my $in;
my $out;
open($in, '<', 'v8-3.1.5/SConstruct') || die "unable to read src/v8-3.1.5/SConstruct $!";
open($out, '>', 'v8-3.1.5/SConstruct.tmp') || die "unable to write src/v8-3.1.5/SConstruct.tmp $!";
while(!eof($in))
{
my $line = <$in>;
$line =~ s/'-Werror',//g;
print $out $line;
}
close $in;
close $out;
unlink('v8-3.1.5/SConstruct') || die "unaable to unlink src/v8-3.1.5/SConstruct $!";
rename('v8-3.1.5/SConstruct.tmp', 'v8-3.1.5/SConstruct') || die "unable to rename src/v8-3.1.5/SConstruct.tmp src/v8-3.1.5/SConstruct $!";
};
# Build V8
if (exists($Config{ptrsize}) && $Config{ptrsize} == 8) {
push(@SConsArgs, "arch=x64");
}
chdir($V8SrcDir) or
die "Failed to chdir to $V8SrcDir: $!\n";
$ENV{SCONS_LIB_DIR} = $SConsLibDir;
print "Building V8 library\n";
system("$SConsBin " . join(" ", @SConsArgs)) == 0 or
die "Failed to build V8\n";
# Stage V8 into share dir
print "Staging V8 library\n";
make_shared_directories();
foreach my $tch (@ToCopy) {
copy($tch->{source}, $tch->{dest}) or
die "Failed to copy " . $tch->{source} . " to " . $tch->{dest} . "\n";
}
if ($^O ne "MSWin32") {
chmod(0755, $V8DstLibName) or
die "Failed to set permissions on $V8DstLibName: $!\n";
}
print "V8 library successfully built\n";
chdir($curdir) or
die "Failed to chdir to $curdir: $!\n";
$self->SUPER::ACTION_build();
}
1;
__END__
( run in 0.498 second using v1.01-cache-2.11-cpan-e1769b4cff6 )