Alien-Libtensorflow

 view release on metacpan or  search on metacpan

alienfile  view on Meta::CPAN

#
#   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(

alienfile  view on Meta::CPAN

	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()

alienfile  view on Meta::CPAN

		);

		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 )