Alien-proj
view release on metacpan or search on metacpan
lib/Alien/proj.pm view on Meta::CPAN
package Alien::proj;
use strict;
use warnings;
use parent qw( Alien::Base );
use Env qw ( @PATH @LD_LIBRARY_PATH @DYLD_LIBRARY_PATH );
use Capture::Tiny qw /:all/;
use File::Which qw /which/;
use List::Util qw /uniq/;
our $VERSION = '1.31';
# adding to global {DY}LD_LIBRARY_PATH vars is icky but seems
# to be needed for utilities and downstream FFI
my %also;
my @alien_bins = (__PACKAGE__->bin_dir);
my @ld_lib_dirs;
foreach my $alien_lib (qw /Alien::libtiff Alien::sqlite/) {
if (eval "require $alien_lib" && $alien_lib->install_type eq 'share') {
$also{$alien_lib}++;
if ($alien_lib->install_type eq 'share') {
push @alien_bins, $alien_lib->bin_dir;
}
push @ld_lib_dirs, $alien_lib->dist_dir . q{/lib};
}
}
if (eval 'require Alien::curl' && 'Alien::curl'->install_type eq 'share') {
# we only compile in libcurl when there is a dynamic curl-config
if (-e 'Alien::curl'->dist_dir . '/dynamic/curl-config') {
$also{'Alien::curl'}++;
if (Alien::curl->install_type eq 'share') {
push @alien_bins, Alien::curl->dist_dir . '/dynamic';
push @ld_lib_dirs, Alien::curl->dist_dir . '/dynamic'
}
}
}
#if ($^O =~ /darwin/i) {
# @DYLD_LIBRARY_PATH = grep {defined} uniq (@DYLD_LIBRARY_PATH, @ld_lib_dirs);
#}
#elsif (not $^O =~ /mswin/i) {
# @LD_LIBRARY_PATH = grep {defined} uniq (@LD_LIBRARY_PATH, @ld_lib_dirs)
#}
if ($^O =~ /MSWin32/) {
unshift @PATH, __PACKAGE__->bin_dirs;
}
sub bin_dirs {
my $self = shift;
return @alien_bins;
}
sub dynamic_libs {
my ($self) = @_;
my @libs = $self->SUPER::dynamic_libs;
foreach my $lib (sort keys %also) {
push @libs, $lib->dynamic_libs;
}
return @libs;
}
sub run_utility {
my ($self, $utility, @args) = @_;
if (__PACKAGE__->install_type eq 'system' && !which 'projinfo') {
warn __PACKAGE__ . " is a system install but lacks the utilities\n"
. "Perhaps try a share install.";
}
local $ENV{PATH} = $ENV{PATH};
( run in 0.354 second using v1.01-cache-2.11-cpan-6b5c3043376 )