Alien-Libtensorflow
view release on metacpan or search on metacpan
#
# When set to 1, always builds from source.
#
# - ALIEN_LIBTENSORFLOW_FROM_SOURCE_BUILD_TYPE
#
# Which type of build to create.
#
# Values:
# - "release": release build (default)
#
# This has no debugging symbols.
#
# - "debug": debug build
#
# - ALIEN_LIBTENSORFLOW_DEVICE_TYPE
#
# Which device type to use for binary release.
#
# Values:
# - "auto": automatically detect type (default)
# - "cpu": CPU
# - "gpu": GPU (Currently only Nvidia)
use Env qw(
requires 'IO::Socket::SSL' => 0;
requires 'URI' => 0;
requires 'File::Which';
requires 'Alien::Build::Plugin::Download::GitHub' => 0.10;
$ENV{ALIEN_LIBTENSORFLOW_FROM_BINARY_ALLOW_RELEASE_CANDIDATES} ||= 0;
# 0|1 (default: 0)
$ENV{ALIEN_LIBTENSORFLOW_FROM_SOURCE} ||= 0;
# release|debug (default: release)
$ENV{ALIEN_LIBTENSORFLOW_FROM_SOURCE_BUILD_TYPE} ||= 'release';
die "Unknown value for ALIEN_LIBTENSORFLOW_FROM_SOURCE_BUILD_TYPE = $ALIEN_LIBTENSORFLOW_FROM_SOURCE_BUILD_TYPE"
unless $ALIEN_LIBTENSORFLOW_FROM_SOURCE_BUILD_TYPE =~ /^(release|debug)$/;
# auto|cpu|gpu (default: auto)
$ENV{ALIEN_LIBTENSORFLOW_DEVICE_TYPE} ||= 'auto';
die "Unknown value for ALIEN_LIBTENSORFLOW_DEVICE_TYPE = $ALIEN_LIBTENSORFLOW_DEVICE_TYPE"
unless $ALIEN_LIBTENSORFLOW_DEVICE_TYPE =~ /^(auto|cpu|gpu)$/;
my $os_arch = join ":", ( $^O, meta->prop->{platform}{cpu}{arch}{name} );
if(exists $os_arch_data{$os_arch} && !$ENV{ALIEN_LIBTENSORFLOW_FROM_SOURCE}) {
my $device_type = $ALIEN_LIBTENSORFLOW_DEVICE_TYPE eq 'auto'
? device_type()
);
build [
sub {
my ($build) = @_;
$build->install_prop->{libtensorflow_dynlib} = $os_dynamic_lib{$^O};
},
[
qw(bazel build),
'--verbose_failures',
( $ALIEN_LIBTENSORFLOW_FROM_SOURCE_BUILD_TYPE eq 'debug' ? q(--config=dbg) : () ),
'//tensorflow:%{.install.libtensorflow_dynlib}'
],
'%{make_path} %{.install.stage}/lib',
"%{cp} bazel-bin/tensorflow/%{.install.libtensorflow_dynlib} %{.install.stage}/lib",
];
meta->after_hook( build => sub {
my($build) = @_;
$build->runtime_prop->{'style'} = 'source';
$build->runtime_prop->{'build_type'} = $ALIEN_LIBTENSORFLOW_FROM_SOURCE_BUILD_TYPE;
});
( run in 1.193 second using v1.01-cache-2.11-cpan-49f99fa48dc )