Alien-pkgconf

 view release on metacpan or  search on metacpan

Makefile.PL  view on Meta::CPAN

    'File::ShareDir' => '1.102',
  },

  META_MERGE => {
    'meta-spec' => { version => 2 },
    resources => {
      repository => {
        type => 'git',
        url  => "http://github.com/PerlAlien/Alien-pkgconf.git",
        web  => "http://github.com/PerlAlien/Alien-pkgconf",
      },
      bugtracker => {
        web  => 'https://github.com/PerlAlien/Alien-pkgconf/issues',
      },
      x_IRC => "irc://irc.perl.org/#native",
    },
    dynamic_config => 1,
  },

);

if($^O eq 'cygwin' || $^O eq 'solaris')
{
  $args{BUILD_REQUIRES}->{'Alien::patch'} = '0.09';
}

my($dll) = eval {
  require FFI::CheckLib;
  FFI::CheckLib::find_lib_or_die(
    lib => 'pkgconf',
  );
};

my $install_type = 'share';

rmtree '_alien', 0, 0 if -d '_alien';

eval {

  die "ALIEN_FORCE" if $ENV{ALIEN_FORCE};
  die "ALIEN_INSTALL_TYPE" if defined $ENV{ALIEN_INSTALL_TYPE}
                           && $ENV{ALIEN_INSTALL_TYPE} eq 'share';

  system 'pkgconf', '--atleast-version=1.5.2', '--max-version=1.8.0', 'libpkgconf';
  die "no pkgconf" if $?;
  my $cflags = `pkgconf --cflags libpkgconf`;
  die "getting cflags" if $?;
  chomp $cflags;
  my $libs   = `pkgconf --libs libpkgconf`;
  die "getting libs" if $?;
  chomp $libs;
  my $version = `pkgconf --modversion libpkgconf`;
  die "getting version" if $?;
  chomp $version;

  require File::Spec;
  require JSON::PP;
  my $status_filename = File::Spec->catfile('_alien', '05stage.json');
  mkdir '_alien' unless -d '_alien';
  open my $fh, '>', $status_filename;
  print $fh JSON::PP->new->utf8->canonical->encode({
    cflags       => $cflags,
    libs         => $libs,
    install_type => 'system',
    version      => $version,
    ($dll ? (dll => $dll ) : ()),
  });
  close $fh;

  $install_type = 'system';

};

my $error = $@;

if(defined $ENV{ALIEN_INSTALL_TYPE})
{
  if($ENV{ALIEN_INSTALL_TYPE} ne $install_type)
  {
    warn $error if $error;
    die "requested install type $ENV{ALIEN_INSTALL_TYPE}, but could not be accomidated";
  }
}

print "install type: $install_type\n";

if($install_type eq 'system')
{
  delete $args{BUILD_REQUIRES}->{$_} for qw( HTTP::Tiny Archive::Tar Alien::xz );
}
elsif($install_type eq 'share')
{
  $args{BUILD_REQUIRES}->{'IO::Socket::SSL'} = 1.56;
  $args{BUILD_REQUIRES}->{'Net::SSLeay'}     = 1.49;
}

if($^O eq 'MSWin32' && $install_type eq 'share')
{
  $args{BUILD_REQUIRES}->{'Alien::MSYS'} = '0.07';
}

my %fallback = (
  %{ $args{TEST_REQUIRES} },
  %{ $args{BUILD_REQUIRES} },
  %{ $args{PREREQ_PM} },
);

unless ( eval { ExtUtils::MakeMaker->VERSION(6.63_03) } ) {
  $args{PREREQ_PM} = \%fallback;
  delete $args{TEST_REQUIRES};
  delete $args{BUILD_REQUIRES};
}

delete $args{CONFIGURE_REQUIRES}
  unless eval { ExtUtils::MakeMaker->VERSION(6.52) };

WriteMakefile(%args);

sub MY::postamble {

$install_type eq 'share'



( run in 1.034 second using v1.01-cache-2.11-cpan-119454b85a5 )