Alien-bz2-Installer

 view release on metacpan or  search on metacpan

README  view on Meta::CPAN

     my %build_args;
     
     my $installer = eval { Alien::bz2::Installer->system_install };
     if($installer)
     {
       $build_args{extra_compiler_flags} = $installer->cflags,
       $build_args{extra_linker_flags}   = $installer->libs,
     }
     
     my $build = Module::Build->new(%build_args);
     $build->create_build_script;

    Build.PL

     # require 3.0
     use Alien::bz2::Installer;
     use Module::Build;
     
     my $installer = eval {
       my $system_installer = Alien::bz2::Installer->system_install;
       die "we require 1.0.6 or better"
         if $system->version !~ /^([0-9]+)\.([0-9]+)\.([0-9]+)/ && $1 >= 1 && ($3 >= 6 || $1 > 1);
       $system_installer;
          # reasonably assumes that build_install will never download
          # a version older that 1.0.6
     } || Alien::bz2::Installer->build_install("dir");
     
     my $build = Module::Build->new(
       extra_compiler_flags => $installer->cflags,
       extra_linker_flags   => $installer->libs,
     );
     $build->create_build_script;

    FFI::Raw

     # as an optional dep
     use Alien::bz2::Installer;
     use FFI::Raw;
     
     eval {
       my($dll) = Alien::bz2::Installer->system_install->dlls;
       FFI::Raw->new($dll, 'BZ2_bzlibVersion', FFI::Raw::str);
     };
     if($@)
     {
       # handle it if bz2 is not available
     }

DESCRIPTION

    If you just want to compress or decompress bzip2 data in Perl you
    probably want one of Compress::Bzip2, Compress::Raw::Bzip2 or
    IO::Compress::Bzip2.

    This distribution contains the logic for finding existing bz2 installs,
    and building new ones. If you do not care much about the version of bz2
    that you use, and bz2 is not an optional requirement, then you are
    probably more interested in using Alien::bz2.

    Where Alien::bz2::Installer is useful is when you have specific version
    requirements (say you require 3.0.x but 2.7.x will not do), but would
    still like to use the system bz2 if it is available.

CLASS METHODS

    Class methods can be executed without creating an instance of
    Alien::bz2::Installer, and generally used to query status of bz2
    availability (either via the system or the internet). Methods that
    discover a system bz2 or build a one from source code on the Internet
    will generally return an instance of Alien::bz2::Installer which can be
    queried to retrieve the settings needed to interact with bz2 via XS or
    FFI::Raw.

 versions_available

     my @versions = Alien::bz2::Installer->versions_available;
     my $latest_version = $version[-1];

    Returns the list of versions of bzip2 available on the Internet. Will
    throw an exception if available versions cannot be determined.

 fetch

     my($location, $version) = Alien::bz2::Installer->fetch(%options);
     my $location = Alien::bz2::Installer->fetch(%options);

    NOTE: using this method may (and probably does) require modules
    returned by the build_requires method.

    Download the bz2 source from the internet. By default it will download
    the latest version t a temporary directory, which will be removed when
    Perl exits. Will throw an exception on failure. Options include:

    dir

      Directory to download to

    version

      Version to download

 build_requires

     my $prereqs = Alien::bz2::Installer->build_requires;
     while(my($module, $version) = each %$prereqs)
     {
       ...
     }

    Returns a hash reference of the build requirements. The keys are the
    module names and the values are the versions.

    The requirements may be different depending on your platform.

 system_requires

    This is like build_requires, except it is used when using the bz2 that
    comes with the operating system.

 system_install



( run in 0.516 second using v1.01-cache-2.11-cpan-483215c6ad5 )