Alien-Build
view release on metacpan or search on metacpan
1.60 2019-03-01 03:16:23 -0500
- Documentation improvemens. (gh#50, gh#84).
1.59_01 2019-02-27 21:40:24 -0500
- Fix test fail for download negotiation plugin introduced in 1.58_01
which was expressed on systems without curl installed.
1.58_01 2019-02-27 12:50:20 -0500
- Prefer Fetch::CurlCommand over Fetch::HTTPTiny for https when:
* Net::SSLeay and IO::Socket::SSL are not installed
* AND curl is installed
* AND curl supports https
This makes AB more reliable on platforms like OS X when openssl
is broken without a third party package system like homebrew,
and on older Perls like 5.8.x where Net::SSLeay frequently does
not install or pass tests.
The existing behavior of prefer Fetch::HTTPTiny when:
* Net::SSLeay and IO::Socket::SSL are already installed
* OR the URL is http
* OR curl is not already installed
is still in effect. (gh#93, gh#94)
1.57_01 2019-02-26 08:52:34 -0500
- Test unzip command before blindly using it (tests were already
being made for tarballs) (gh#90)
1.56_01 2019-02-24 14:09:23 -0500
- Prefer Alien::unzip over Archive::Zip. The latter turns out to be broken
diag = +LWP
diag = +File::Listing
diag = +File::Listing::Ftpcopy
diag = +Alien::Base::ModuleBuild
diag = +IO::Zlib
diag = +IO::Uncompress::Bunzip2
diag = +IO::Compress::Bzip2
diag = +Alien::xz
diag = +Alien::Libbz2
diag = +Alien::gzip
diag = +IO::Socket::SSL
diag = +Net::SSLeay
diag = +LWP::Protocol::https
diag = +Alien::cmake3
diag = +Readonly
diag = +Env::ShellWords
diag = +Mojo::DOM58
diag = +Mojolicious
diag = +Archive::Zip
[GatherFile]
remove = Plack
remove = URI::Escape
; other optional / dynamic thingies
remove = Archive::Tar
remove = Archive::Zip
remove = Alien::gmake
remove = Alien::cmake3
remove = Devel::Hide
remove = Net::SSLeay
remove = IO::Socket::SSL
remove = Env::ShellWords
remove = Readonly
[Prereqs]
Capture::Tiny = 0.17
Path::Tiny = 0.077
FFI::CheckLib = 0.11
Text::ParseWords = 3.26
ExtUtils::ParseXS = 3.30
ExtUtils::MakeMaker = 6.64
lib/Alien/Build/Manual/FAQ.pod view on Meta::CPAN
This is usually because your XS or Alien tries to use dynamic libraries instead of static ones.
Please consult the section about dynamic vs. static libraries in L<Alien::Build::Manual::AlienAuthor>.
The TL;DR is that L<Alien::Build::Plugin::Gather::IsolateDynamic> might help.
If you are the Alien author and the package you are alienizing doesn't have a static option you can
use L<Alien::Role::Dino>, but please note the extended set of caveats!
=head2 599 Internal Exception errors downloading packages from the internet
Alien::Build::Plugin::Fetch::HTTPTiny> 599 Internal Exception fetching http://dist.libuv.org/dist/v1.15.0
Alien::Build::Plugin::Fetch::HTTPTiny> exception: IO::Socket::SSL 1.42 must be installed for https support
Alien::Build::Plugin::Fetch::HTTPTiny> exception: Net::SSLeay 1.49 must be installed for https support
Alien::Build::Plugin::Fetch::HTTPTiny> An attempt at a SSL URL https was made, but your HTTP::Tiny does not appear to be able to use https.
Alien::Build::Plugin::Fetch::HTTPTiny> Please see: https://metacpan.org/pod/Alien::Build::Manual::FAQ#599-Internal-Exception-errors-downloading-packages-from-the-internet
error fetching http://dist.libuv.org/dist/v1.15.0: 599 Internal Exception at /Users/ollisg/.perlbrew/libs/perl-5.26.0@test1/lib/perl5/Alien/Build/Plugin/Fetch/HTTPTiny.pm line 68.
(Older versions of L<Alien::Build> produced a less verbose more confusing version of this diagnostic).
TL;DR, instead of this:
share {
lib/Alien/Build/Manual/FAQ.pod view on Meta::CPAN
share {
start_url => 'https://example.org/dist';
};
If the website is going to redirect to a secure URL anyway.
The "599 Internal Exception" indicates an "internal" exception from L<HTTP::Tiny> and is not a real
HTTP status code or error. This could mean a number of different problems, but most frequently
indicates that a SSL request was made without the required modules (L<Net::SSLeay> and
L<IO::Socket::SSL>). Normally the L<Alien::Build::Plugin::Download::Negotiate>
and L<Alien::Build::Plugin::Fetch::HTTPTiny> will make sure that the appropriate modules are added
to your prerequisites for you if you specify a C<https> URL. Some websites allow an initial request
from C<http> but then redirect to C<https>. If you can it is better to specify C<https>, if you
cannot, then you can instead use the C<ssl> property on either of those two plugins.
=head2 Does not detect system package even though it is installed
This could just be because the alien requires a more recent package that what is provided by your
operating system.
lib/Alien/Build/Util.pm view on Meta::CPAN
sub _perl_config
{
my($key) = @_;
$Config{$key};
}
sub _ssl_reqs
{
return {
'Net::SSLeay' => '1.49',
'IO::Socket::SSL' => '1.56',
};
}
sub _has_ssl
{
my %reqs = %{ _ssl_reqs() };
eval {
require Net::SSLeay;
die "need Net::SSLeay $reqs{'Net::SSLeay'}" unless Net::SSLeay->VERSION($reqs{'Net::SSLeay'});
require IO::Socket::SSL;
die "need IO::Socket::SSL $reqs{'IO::Socket::SSL'}" unless IO::Socket::SSL->VERSION($reqs{'IO::Socket::SSL'});
};
$@ eq '';
}
1;
__END__
=pod
t/00_diag.t view on Meta::CPAN
ExtUtils::ParseXS
FFI::CheckLib
FFI::Platypus
File::Listing
File::Listing::Ftpcopy
File::Which
File::chdir
HTML::Parser
HTTP::Tiny
IO::Compress::Bzip2
IO::Socket::SSL
IO::Uncompress::Bunzip2
IO::Zlib
JSON::PP
LWP
LWP::Protocol::https
List::Util
Mojo::DOM58
Mojolicious
Net::FTP
Net::SSLeay
t/alien_build_plugin_fetch_httptiny.t view on Meta::CPAN
my $meta = $build->meta;
$plugin->init($meta);
is(
$build->requires('share'),
hash {
field 'HTTP::Tiny' => '0.044';
field 'URI' => '0';
field 'Net::SSLeay' => DNE();
field 'IO::Socket::SSL' => DNE();
etc;
},
);
note _dump($build->requires('share'));
};
subtest 'updates requires ssl' => sub {
t/alien_build_plugin_fetch_httptiny.t view on Meta::CPAN
my $meta = $build->meta;
$plugin->init($meta);
is(
$build->requires('share'),
hash {
field 'HTTP::Tiny' => '0.044';
field 'URI' => '0';
field 'Net::SSLeay' => T();
field 'IO::Socket::SSL' => T();
etc;
},
);
note _dump($build->requires('share'));
};
subtest 'use start_url' => sub {
t/alien_build_util.t view on Meta::CPAN
is $@, '';
};
subtest '_ssl_reqs' => sub {
is(
_ssl_reqs,
hash {
field 'Net::SSLeay' => D();
field 'IO::Socket::SSL' => D();
etc;
},
);
note _dump(_ssl_reqs);
};
subtest '_has_ssl' => sub {
( run in 0.597 second using v1.01-cache-2.11-cpan-fd5d4e115d8 )