Alien-FluentBit
view release on metacpan or search on metacpan
use alienfile;
use Path::Tiny 'path';
use Alien::Build::Util qw( _destdir_prefix );
my $minimal_header= path(__FILE__)->parent->child('include/fluent-bit-minimal.h');
probe sub {
if (-f '/lib/fluent-bit/libfluent-bit.so'
&& -x '/opt/fluent-bit/bin/fluent-bit'
&& `/opt/fluent-bit/bin/fluent-bit --version` =~ /v([0-9.]+)/
) {
return 'system';
}
};
sys {
gather sub {
my $build= shift;
my $prefix= $build->runtime_prop->{prefix};
my $bin_dir= $build->runtime_prop->{bin_dir}= '/opt/fluent-bit/bin';
`"$bin_dir/fluent-bit" --version` =~ /v([0-9.]+)/ or die; # tested above
$build->runtime_prop->{version}= $1;
# Headers installed by fluent-bit cmake are broken, missing many referenced
# sub-projects, but also all of it it is unnecessary because the public API
# is only 10 functions.
# See https://github.com/fluent/fluent-bit/issues/7165
my $custom_inc_dir= path("$prefix/include");
$custom_inc_dir->mkpath;
$minimal_header->copy("$custom_inc_dir/fluent-bit-minimal.h");
$minimal_header->copy("$custom_inc_dir/fluent-bit.h");
$build->runtime_prop->{cflags}= "-I$custom_inc_dir";
$build->runtime_prop->{libs}= "-L/lib/fluent-bit -Wl,-rpath,/lib/fluent-bit -lfluent-bit";
};
};
share {
requires 'Alien::cmake3';
requires 'Alien::flex';
requires 'Alien::bison';
start_url 'https://github.com/fluent/fluent-bit/archive/refs/tags/v2.1.0.tar.gz';
plugin Download => ();
plugin Extract => 'tar.gz';
plugin 'Build::CMake';
build [
[ '%{cmake}',
@{ meta->prop->{plugin_build_cmake}->{args} },
# ... put extra cmake args here ...
'%{.install.extract}'
],
'%{make} -j 10',
'%{make} install',
];
plugin 'Gather::IsolateDynamic';
after gather => sub {
my $build = shift;
my $prefix = path($build->install_prop->{prefix})->absolute;
$build->runtime_prop->{cflags}= "-I$prefix/include";
$build->runtime_prop->{libs} = "-L$prefix/lib/fluent-bit -Wl,-rpath,$prefix/lib/fluent-bit -lfluent-bit";
# Use a minimal fluent-bit.h because the headers installed by cmake
# are broken, missing many deps.
# See https://github.com/fluent/fluent-bit/issues/7165
my $install_root;
if ($build->meta_prop->{destdir}) {
my $destdir = $ENV{DESTDIR};
$install_root = path(_destdir_prefix($ENV{DESTDIR}, $build->install_prop->{prefix}));
} else {
$install_root = path($build->install_prop->{stage});
}
my $inc_dir= path($install_root."/include");
-f $inc_dir->child('fluent-bit.h') or die "No fluent-bit.h yet";
$inc_dir->child('fluent-bit.h')->move('fluent-bit-full.h');
$minimal_header->copy("$inc_dir/fluent-bit-minimal.h");
$minimal_header->copy("$inc_dir/fluent-bit.h");
};
};
( run in 1.982 second using v1.01-cache-2.11-cpan-adec679a428 )