Alien-bz2-Installer
view release on metacpan or search on metacpan
lib/Alien/bz2/Installer.pm view on Meta::CPAN
package Alien::bz2::Installer;
use strict;
use warnings;
# ABSTRACT: Installer for bz2
our $VERSION = '0.05'; # VERSION
sub _catfile {
my $path = File::Spec->catfile(@_);
$path =~ s{\\}{/}g if $^O eq 'MSWin32';
$path;
}
sub _catdir {
my $path = File::Spec->catdir(@_);
$path =~ s{\\}{/}g if $^O eq 'MSWin32';
$path;
}
sub versions_available
{
($^O eq 'MSWin32' ? '1.0.5' : '1.0.6');
}
sub fetch
{
my($class, %options) = @_;
my $dir = $options{dir} || eval { require File::Temp; File::Temp::tempdir( CLEANUP => 1 ) };
# actually we ignore the version argument.
require File::Spec;
my $url = 'http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz';
my $fn = _catfile($dir, 'bzip2-1.0.6.tar.gz');
my($version) = $class->versions_available;
if($^O eq 'MSWin32')
{
$url = 'http://gnuwin32.sourceforge.net/downlinks/bzip2-src-zip.php';
$fn = _catfile($dir, 'bzip2-1.0.5-src.zip');
}
require HTTP::Tiny;
my $response = HTTP::Tiny->new->get($url);
die sprintf("%s %s %s", $response->{status}, $response->{reason}, $url)
unless $response->{success};
open my $fh, '>', $fn;
binmode $fh;
print $fh $response->{content};
close $fh;
wantarray ? ($fn, $version) : $fn;
}
sub build_requires
{
my %prereqs = (
'HTTP::Tiny' => 0,
);
if($^O eq 'MSWin32')
{
$prereqs{'Archive::Zip'} = 0;
$prereqs{'Alien::o2dll'} = 0;
$prereqs{'Alien::MSYS'} = 0;
}
else
{
$prereqs{'Archive::Tar'} = 0;
}
\%prereqs;
}
sub system_requires
{
my %prereqs;
\%prereqs;
}
sub system_install
{
my($class, %options) = @_;
$options{alien} = 1 unless defined $options{alien};
$options{test} ||= 'compile';
die "test must be one of compile, ffi or both"
unless $options{test} =~ /^(compile|ffi|both)$/;
my $build = bless {
cflags => [],
libs => ['-lbz2'],
}, $class;
$build->test_compile_run || die $build->error if $options{test} =~ /^(compile|both)$/;
$build->test_ffi || die $build->error if $options{test} =~ /^(ffi|both)$/;
$build;
}
sub _msys
{
my($sub) = @_;
require Config;
if($^O eq 'MSWin32')
( run in 3.524 seconds using v1.01-cache-2.11-cpan-cdf2f3d4e48 )