Initial Commit
This commit is contained in:
474
database/perl/vendor/lib/Alien/Build/Interpolate/Default.pm
vendored
Normal file
474
database/perl/vendor/lib/Alien/Build/Interpolate/Default.pm
vendored
Normal file
@@ -0,0 +1,474 @@
|
||||
package Alien::Build::Interpolate::Default;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use 5.008004;
|
||||
use base qw( Alien::Build::Interpolate );
|
||||
use File::chdir;
|
||||
use File::Which qw( which );
|
||||
use Capture::Tiny qw( capture );
|
||||
|
||||
# ABSTRACT: Default interpolator for Alien::Build
|
||||
our $VERSION = '2.38'; # VERSION
|
||||
|
||||
sub _config
|
||||
{
|
||||
$Config::Config{$_[0]};
|
||||
}
|
||||
|
||||
|
||||
sub new
|
||||
{
|
||||
my($class) = @_;
|
||||
my $self = $class->SUPER::new(@_);
|
||||
|
||||
|
||||
$self->add_helper( ar => sub { _config 'ar' }, 'Config' );
|
||||
|
||||
|
||||
$self->add_helper( bison => undef, sub {
|
||||
my $helper = shift;
|
||||
if(which 'bison')
|
||||
{
|
||||
$helper->code(sub { 'bison' });
|
||||
return ();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'Alien::bison' => '0.17';
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$self->add_helper( bzip2 => undef, sub {
|
||||
my $helper = shift;
|
||||
if(which 'bzip2')
|
||||
{
|
||||
$helper->code( sub { 'bzip2' });
|
||||
return ();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'Alien::Libbz2' => '0.04';
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$self->add_helper( cc => sub { _config 'cc' }, 'Config' );
|
||||
|
||||
|
||||
$self->add_helper( cmake => sub { 'cmake' }, sub {
|
||||
if(which 'cmake')
|
||||
{
|
||||
return ();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'Alien::CMake' => '0.07';
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$self->add_helper( cp => sub { _config 'cp' }, 'Config' );
|
||||
|
||||
|
||||
$self->add_helper( devnull => sub { $^O eq 'MSWin32' ? 'NUL' : '/dev/null' });
|
||||
|
||||
|
||||
$self->add_helper( flex => undef, sub {
|
||||
my $helper = shift;
|
||||
if(which 'flex')
|
||||
{
|
||||
$helper->code(sub { 'flex' });
|
||||
return ();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'Alien::flex' => '0.08';
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$self->add_helper( gmake => undef, 'Alien::gmake' => '0.11' );
|
||||
|
||||
|
||||
$self->add_helper( install => sub { 'install' });
|
||||
|
||||
|
||||
$self->add_helper( ld => sub { _config 'ld' }, 'Config' );
|
||||
|
||||
|
||||
$self->add_helper( m4 => undef, 'Alien::m4' => '0.08' );
|
||||
|
||||
|
||||
if($^O eq 'MSWin32')
|
||||
{
|
||||
# TL;DR: dmake is bad, and shouldn't be used to build anything but older
|
||||
# versions of Windows Perl that don't support gmake.
|
||||
my $perl_make = _config 'make';
|
||||
my $my_make;
|
||||
$self->add_helper( make => sub {
|
||||
return $my_make if defined $my_make;
|
||||
|
||||
if( $perl_make ne 'dmake' && which $perl_make )
|
||||
{
|
||||
# assume if it is called nmake or gmake that it really is what it
|
||||
# says it is.
|
||||
if( $perl_make eq 'nmake' || $perl_make eq 'gmake' )
|
||||
{
|
||||
return $my_make = $perl_make;
|
||||
}
|
||||
|
||||
my $out = capture { system $perl_make, '--version' };
|
||||
if( $out =~ /GNU make/i || $out =~ /Microsoft \(R\) Program Maintenance/ )
|
||||
{
|
||||
return $my_make = $perl_make;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
# if we see something that looks like it might be gmake, use that.
|
||||
foreach my $try (qw( gmake mingw32-make ))
|
||||
{
|
||||
return $my_make = $try if which $try;
|
||||
}
|
||||
|
||||
if( which 'make' )
|
||||
{
|
||||
my $out = capture { system 'make', '--version' };
|
||||
if( $out =~ /GNU make/i || $out =~ /Microsoft \(R\) Program Maintenance/ )
|
||||
{
|
||||
return $my_make = 'make';
|
||||
}
|
||||
}
|
||||
|
||||
# if we see something that looks like it might be nmake, use that.
|
||||
foreach my $try (qw( nmake ))
|
||||
{
|
||||
return $my_make = $try if which $try;
|
||||
}
|
||||
|
||||
$my_make = $perl_make;
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
$self->add_helper( make => sub { _config 'make' }, 'Config' );
|
||||
}
|
||||
|
||||
|
||||
$self->add_helper( mkdir_deep => sub { $^O eq 'MSWin32' ? 'md' : 'mkdir -p'}, 'Alien::Build' => '1.04' );
|
||||
$self->add_helper( make_path => sub { $^O eq 'MSWin32' ? 'md' : 'mkdir -p'}, 'Alien::Build' => '1.05' );
|
||||
|
||||
|
||||
$self->add_helper( nasm => undef, sub {
|
||||
my $helper = shift;
|
||||
if(which 'nasm')
|
||||
{
|
||||
$helper->code(sub { 'nasm' });
|
||||
return ();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'Alien::nasm' => '0.11';
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$self->add_helper( patch => undef, sub {
|
||||
my $helper = shift;
|
||||
if(which 'patch')
|
||||
{
|
||||
if($^O eq 'MSWin32')
|
||||
{
|
||||
$helper->code(sub { 'patch --binary' });
|
||||
}
|
||||
else
|
||||
{
|
||||
$helper->code(sub { 'patch' });
|
||||
}
|
||||
return ();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'Alien::patch' => '0.09';
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$self->add_helper( perl => sub {
|
||||
my $perl = Devel::FindPerl::find_perl_interpreter();
|
||||
$perl =~ s{\\}{/}g if $^O eq 'MSWin32';
|
||||
$perl;
|
||||
}, 'Devel::FindPerl' );
|
||||
|
||||
|
||||
$self->add_helper( pkgconf => undef, 'Alien::pkgconf' => 0.06 );
|
||||
|
||||
|
||||
$self->add_helper( cwd => sub {
|
||||
my $cwd = "$CWD";
|
||||
$cwd =~ s{\\}{/}g if $^O eq 'MSWin32';
|
||||
$cwd;
|
||||
} );
|
||||
|
||||
|
||||
$self->add_helper( sh => sub { 'sh' }, 'Alien::MSYS' => '0.07' );
|
||||
|
||||
|
||||
$self->add_helper( rm => sub { _config 'rm' }, 'Config' );
|
||||
|
||||
|
||||
|
||||
$self->add_helper( xz => undef, sub {
|
||||
my $helper = shift;
|
||||
if(which 'xz')
|
||||
{
|
||||
$helper->code(sub { 'xz' });
|
||||
return ();
|
||||
}
|
||||
else
|
||||
{
|
||||
return 'Alien::xz' => '0.02';
|
||||
}
|
||||
});
|
||||
|
||||
$self;
|
||||
}
|
||||
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
|
||||
=encoding UTF-8
|
||||
|
||||
=head1 NAME
|
||||
|
||||
Alien::Build::Interpolate::Default - Default interpolator for Alien::Build
|
||||
|
||||
=head1 VERSION
|
||||
|
||||
version 2.38
|
||||
|
||||
=head1 CONSTRUCTOR
|
||||
|
||||
=head2 new
|
||||
|
||||
my $intr = Alien::Build::Interpolate::Default->new;
|
||||
|
||||
=head1 HELPERS
|
||||
|
||||
=head2 ar
|
||||
|
||||
%{ar}
|
||||
|
||||
The ar command.
|
||||
|
||||
=head2 bison
|
||||
|
||||
%{bison}
|
||||
|
||||
Requires: L<Alien::bison> 0.17 if not already in C<PATH>.
|
||||
|
||||
=head2 bzip2
|
||||
|
||||
%{bzip2}
|
||||
|
||||
Requires: L<Alien::Libbz2> 0.04 if not already in C<PATH>.
|
||||
|
||||
=head2 cc
|
||||
|
||||
%{cc}
|
||||
|
||||
The C Compiler used to build Perl
|
||||
|
||||
=head2 cmake
|
||||
|
||||
%{cmake}
|
||||
|
||||
Requires: L<Alien::CMake> 0.07 if cmake is not already in C<PATH>.
|
||||
|
||||
Deprecated: Use the L<Alien::Build::Plugin::Build::CMake> plugin instead (which will replace
|
||||
this helper with one that works with L<Alien::cmake3> that works better).
|
||||
|
||||
=head2 cp
|
||||
|
||||
%{cp}
|
||||
|
||||
The copy command.
|
||||
|
||||
=head2 devnull
|
||||
|
||||
%{devnull}
|
||||
|
||||
The null device, if available. On Unix style operating systems this will be C</dev/null> on Windows it is C<NUL>.
|
||||
|
||||
=head2 flex
|
||||
|
||||
%{flex}
|
||||
|
||||
Requires: L<Alien::flex> 0.08 if not already in C<PATH>.
|
||||
|
||||
=head2 gmake
|
||||
|
||||
%{gmake}
|
||||
|
||||
Requires: L<Alien::gmake> 0.11
|
||||
|
||||
Deprecated: use L<Alien::Build::Plugin::Build::Make> instead.
|
||||
|
||||
=head2 install
|
||||
|
||||
%{install}
|
||||
|
||||
The Unix C<install> command. Not normally available on Windows.
|
||||
|
||||
=head2 ld
|
||||
|
||||
%{ld}
|
||||
|
||||
The linker used to build Perl
|
||||
|
||||
=head2 m4
|
||||
|
||||
%{m4}
|
||||
|
||||
Requires: L<Alien::m4> 0.08
|
||||
|
||||
L<Alien::m4> should pull in a version of C<m4> that will work with Autotools.
|
||||
|
||||
=head2 make
|
||||
|
||||
%{make}
|
||||
|
||||
Make. On Unix this will be the same make used by Perl. On Windows this will be
|
||||
C<gmake> or C<nmake> if those are available, and only C<dmake> if the first two
|
||||
are not available.
|
||||
|
||||
=head2 make_path
|
||||
|
||||
%{make_path}
|
||||
|
||||
Make directory, including all parent directories as needed. This is usually C<mkdir -p>
|
||||
on Unix and simply C<md> on windows.
|
||||
|
||||
=head2 nasm
|
||||
|
||||
%{nasm}
|
||||
|
||||
Requires: L<Alien::nasm> 0.11 if not already in the C<PATH>.
|
||||
|
||||
=head2 patch
|
||||
|
||||
%{patch}
|
||||
|
||||
Requires: L<Alien::patch> 0.09 if not already in the C<PATH>.
|
||||
|
||||
On Windows this will normally render C<patch --binary>, which makes patch work like it does on Unix.
|
||||
|
||||
=head2 perl
|
||||
|
||||
%{perl}
|
||||
|
||||
Requires: L<Devel::FindPerl>
|
||||
|
||||
=head2 pkgconf
|
||||
|
||||
%{pkgconf}
|
||||
|
||||
Requires: L<Alien::pkgconf> 0.06.
|
||||
|
||||
=head2 cwd
|
||||
|
||||
%{cwd}
|
||||
|
||||
=head2 sh
|
||||
|
||||
%{sh}
|
||||
|
||||
Unix style command interpreter (/bin/sh).
|
||||
|
||||
Deprecated: use the L<Alien::Build::Plugin::Build::MSYS> plugin instead.
|
||||
|
||||
=head2 rm
|
||||
|
||||
%{rm}
|
||||
|
||||
The remove command
|
||||
|
||||
=head2 xz
|
||||
|
||||
%{xz}
|
||||
|
||||
Requires: L<Alien::xz> 0.02 if not already in the C<PATH>.
|
||||
|
||||
=head1 AUTHOR
|
||||
|
||||
Author: Graham Ollis E<lt>plicease@cpan.orgE<gt>
|
||||
|
||||
Contributors:
|
||||
|
||||
Diab Jerius (DJERIUS)
|
||||
|
||||
Roy Storey (KIWIROY)
|
||||
|
||||
Ilya Pavlov
|
||||
|
||||
David Mertens (run4flat)
|
||||
|
||||
Mark Nunberg (mordy, mnunberg)
|
||||
|
||||
Christian Walde (Mithaldu)
|
||||
|
||||
Brian Wightman (MidLifeXis)
|
||||
|
||||
Zaki Mughal (zmughal)
|
||||
|
||||
mohawk (mohawk2, ETJ)
|
||||
|
||||
Vikas N Kumar (vikasnkumar)
|
||||
|
||||
Flavio Poletti (polettix)
|
||||
|
||||
Salvador Fandiño (salva)
|
||||
|
||||
Gianni Ceccarelli (dakkar)
|
||||
|
||||
Pavel Shaydo (zwon, trinitum)
|
||||
|
||||
Kang-min Liu (劉康民, gugod)
|
||||
|
||||
Nicholas Shipp (nshp)
|
||||
|
||||
Juan Julián Merelo Guervós (JJ)
|
||||
|
||||
Joel Berger (JBERGER)
|
||||
|
||||
Petr Pisar (ppisar)
|
||||
|
||||
Lance Wicks (LANCEW)
|
||||
|
||||
Ahmad Fatoum (a3f, ATHREEF)
|
||||
|
||||
José Joaquín Atria (JJATRIA)
|
||||
|
||||
Duke Leto (LETO)
|
||||
|
||||
Shoichi Kaji (SKAJI)
|
||||
|
||||
Shawn Laffan (SLAFFAN)
|
||||
|
||||
Paul Evans (leonerd, PEVANS)
|
||||
|
||||
Håkon Hægland (hakonhagland, HAKONH)
|
||||
|
||||
=head1 COPYRIGHT AND LICENSE
|
||||
|
||||
This software is copyright (c) 2011-2020 by Graham Ollis.
|
||||
|
||||
This is free software; you can redistribute it and/or modify it under
|
||||
the same terms as the Perl 5 programming language system itself.
|
||||
|
||||
=cut
|
||||
Reference in New Issue
Block a user