/home/.cpanm/work/1759492321.34808/Alien-Build-2.84/example
use alienfile; use Path::Tiny qw( path ); # Because bzip2 does not come with a pkg-config compatible .pc file # we use the CBuilder plugin to guess the appropriate flags # (usually just libs=-lbz2): plugin 'Probe::CBuilder' => ( libs => '-lbz2', # The version regex here will attempt to parse out the # bzip2 version number from the output of the test program below. version => qr/version = '(.*?)[,']/, # Both the test program and the version regex are optional, but # if you do not provide them, then you should provide a # sys { gather } declaration for how to obtain the version number. # assuming the version number matters. program => q{ #include <stdio.h> #include <bzlib.h> int main(int argc, char *argv[]) { printf("version = '%s'\n", BZ2_bzlibVersion()); return 0; } }, ); # in addition to the library, we require that the bzip2 command # is also available. plugin 'Probe::CommandLine' => ( command => 'bzip2', secondary => 1, ); share { # items in the share block relate to building the package # from source. It is called share because it will be # installed into a dist level share directory in your # perl lib. # The Build::MSYS plugin just makes sure that Alien::MSYS # is used to provide the necessary tools on Windows. It # doesn't do anything on other platforms. plugin 'Build::MSYS'; # The Download negotiator picks the best method for # downloading the package. plugin 'Download' => ( url => 'https://sourceforge.net/projects/bzip2/files/latest/download', ); # The Extract negotiator picks the best method for # extracting from the tarball. We give it a hint # here that we expect the tarball to be .gz compressed # in case it needs to load extra modules to # decompress. plugin Extract => 'tar.gz'; # The build stage here is specified as a series of commands. # bzip2 uses make to build and install. It is vital that we # include cccdlflags in the compiler flags, because this will # include any flags necessary for making the library relocatable # which we need to link into a Perl XS .so file. # We also use CC=$Config{cc} to make sure that we use the # same compiler as was used to build Perl. build [ [ '%{make}', 'all', "CC=%{perl.config.cc}", "CFLAGS=%{perl.config.cccdlflags} %{perl.config.optimize}", ], [ '%{make}', 'install', 'PREFIX=%{.install.prefix}', ], # we can use a code ref here to determine the version number of # bzip2 from the directory that is extracted from the tarball. # Usually this is something like bzip2-1.0.6 and we just parse # off the bit that looks like a version number. sub { my($build) = @_; my($version) = path(".")->absolute->basename =~ /([0-9\.]+)$/; $build->runtime_prop->{version} = $version; }, ]; # This package doesn't build a dynamic library by default, but if # it did this would make sure that it wasn't used with XS. # (See Alien::Build::Manual::AlienAuthor for details). plugin 'Gather::IsolateDynamic'; # The gather stage determines the appropriate cflags and libs for # using the library that we just built. gather sub { my($build) =@_; my $prefix = $build->runtime_prop->{prefix}; $build->runtime_prop->{cflags} = "-I$prefix/include"; $build->runtime_prop->{cflags_static} = "-I$prefix/include"; $build->runtime_prop->{libs} = "-L$prefix/lib -lbz2"; $build->runtime_prop->{libs_static} = "-L$prefix/lib -lbz2"; }; };
.
Edit
..
Edit
README
Edit
bzip2.alienfile
Edit
curl.alienfile
Edit
dontpanic.alienfile
Edit
gmake.alienfile
Edit
openssl.alienfile
Edit
user
Edit
wrapper.pl
Edit
xz-manual.alienfile
Edit
xz.alienfile
Edit