Crypt-PBC
view release on metacpan or search on metacpan
Makefile.PL view on Meta::CPAN
# we don't literally build it, we add things to the makefile
*MY::postamble = \&postamble;
}
sub postamble {
my @CFLAGS = map {"-I$_"} @incpath;
my @LFLAGS = map {"-L$_"} @libpath;
"
PBC\$(OBJ_EXT) : \$(MYEXTLIB)
\$(MYEXTLIB): pbc-$ver/.libs/libpbc.so
\$(AR) \$(AR_STATIC_ARGS) \$@ pbc-$ver/.libs/*.o
pbc-$ver/.libs/libpbc.so:
cd pbc-$ver && CFLAGS='@CFLAGS' CPPFLAGS='@CFLAGS' LDFLAGS='@LFLAGS' ./configure && \$(MAKE) \$(PASTHRU)
";
}
sub unpack_libpbc {
my $ver = shift;
return 1 if -d "pbc-$ver" or $ENV{SKIP_DOWNLOAD};
warn "unpacking libpbc from pbc-$ver.tar.gz...\n";
my $worked = 0;
eval {
eval "require Archive::Tar;"; die $@ if $@;
my $tar = Archive::Tar->new;
$tar->read("pbc-$ver.tar.gz", 1);
$tar->extract;
$worked = 1 if -x "pbc-$ver/configure";
};
warn "Archive::Tar unpack problem: $@\n" if $@;
unless( $worked ) {
if( system("gzip -dc pbc-$ver.tar.gz | tar -xvf -") == 0 ) {
$worked = 1 if -x "pbc-$ver/configure";
}
}
warn "failed to unpack pbc\n" unless $worked;
$worked;
}
sub grab_libpbc {
my $ver = shift;
return 1 if -f "pbc-$ver.tar.gz" or $ENV{SKIP_DOWNLOAD};
warn "downloading libpbc from http://voltar.org/pbcfiles/pbc-$ver.tar.gz...\n";
my $worked = 0;
eval {
eval "require LWP::UserAgent"; die $@ if $@;
my $ua = LWP::UserAgent->new;
$ua->agent("crypt-pbc-fetcher/1.0");
my $req = HTTP::Request->new(GET => "http://voltar.org/pbcfiles/pbc-$ver.tar.gz");
my $res = $ua->request($req, "pbc-$ver.tar.gz");
$worked = 1 if $res->is_success;
};
warn "LWP fetch problem: $@\n" if $@;
unless( $worked ) {
if( 0 != system(wget => '-O', "pbc-$ver.tar.gz", "http://voltar.org/pbcfiles/pbc-$ver.tar.gz") ) {
warn "couldn't fetch with wget...\n";
if( 0 != system(curl => '-o', "pbc-$ver.tar.gz", "http://voltar.org/pbcfiles/pbc-$ver.tar.gz") ) {
warn "couldn't fetch with curl ...\n";
}
}
$worked = 1 if -f "pbc-$ver.tar.gz";
}
warn "failed to download pbc\n" unless $worked;
$worked;
}
( run in 0.969 second using v1.01-cache-2.11-cpan-acf6aa7dc9e )