Alien-ZMQ
view release on metacpan or search on metacpan
inc/My/Build.pm view on Meta::CPAN
last;
}
my $obj = eval {
$cb->compile(source => $src, include_dirs => [@inc_search], extra_compiler_flags => $cflags);
};
unlink $src;
return unless $obj;
my $exe = eval {
$cb->link_executable(objects => $obj, extra_linker_flags => $libs);
};
unlink $obj;
return unless $exe;
my $out = `./$exe`;
unlink $exe;
my ($inc_version, $lib_version) = $out =~ /(\d\.\d\.\d) (\d\.\d\.\d)/;
# query the compiler for include and library search paths
push @lib_search, map {
my $path = $_;
$path =~ s/^.+ =?//;
$path =~ s/\n.*$//;
-d $path ? realpath($path) : ();
} split /:/, `$config{cc} -print-search-dirs`;
push @inc_search, map {
my $path = $_;
$path =~ s/lib(32|64)?$/include/;
$path;
} @lib_search;
# search for the header and library files
my ($inc_dir) = grep { -f catfile($_, "zmq.h") } @inc_search;
my ($lib_dir) = grep { -f catfile($_, $cb->lib_file("libzmq")) } @lib_search;
(
inc_version => $inc_version,
lib_version => $lib_version,
pkg_version => $pkg_version,
inc_dir => $inc_dir,
lib_dir => $lib_dir,
);
}
sub install_zeromq {
my $self = shift;
my $cb = $self->cbuilder;
my $version = $self->notes('zmq-version');
my $sha1 = $self->notes('zmq-sha1');
my $archive = "zeromq-$version.tar.gz";
print "Downloading libzmq $version source archive from download.zeromq.org...\n";
getstore("http://download.zeromq.org/$archive", $archive) == RC_OK
or die "Failed to download libzmq source archive";
print "Verifying...\n";
my $sha1sum = Digest::SHA->new;
open my $ARCHIVE, '<', $archive or die "Can't open source archive";
binmode $ARCHIVE;
$sha1sum->addfile($ARCHIVE);
close $ARCHIVE;
$sha1sum->hexdigest eq $sha1 or die "Source archive checksum mismatch";
print "Extracting...\n";
Archive::Tar->new($archive)->extract;
unlink $archive;
my $prefix = catdir($self->install_destination("lib"), qw/auto share dist Alien-ZMQ/);
my $basedir = $self->base_dir;
my $datadir = catdir($basedir, "share");
my $srcdir = catdir($basedir, "zeromq-$version");
chdir $srcdir;
print "Patching...\n";
for my $patch (glob("$basedir/files/zeromq-$version-*.patch")) {
run [qw/patch -p1/], '<', $patch or die "Failed to patch libzmq";
}
print "Configuring...\n";
my @config = $cb->split_like_shell($self->args('zmq-config') || "");
$cb->do_system(qw/sh configure CPPFLAGS=-Wno-error/, "--prefix=$prefix", @config)
or die "Failed to configure libzmq";
print "Compiling...\n";
$cb->do_system("make") or die "Failed to make libzmq";
print "Installing...\n";
$cb->do_system(qw|make install prefix=/|, "DESTDIR=$datadir")
or die "Failed to install libzmq";
chdir $basedir;
remove_tree($srcdir);
(
inc_version => $version,
lib_version => $version,
inc_dir => catdir($prefix, "include"),
lib_dir => catdir($prefix, "lib"),
);
}
1;
( run in 3.793 seconds using v1.01-cache-2.11-cpan-cdf2f3d4e48 )