From 343c582db332d07f831420372ef8eab1eead0718 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= Date: Fri, 8 Sep 2017 11:31:02 +0200 Subject: [PATCH] Remove redundant pkgconfig implementations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Only one implementation is required, we selected Alien::Build::Plugin::PkgConfig::LibPkgConf. This patch removes other ones to decrease number of dependencies. Signed-off-by: Petr Písař --- MANIFEST | 4 - Makefile.PL | 4 +- lib/Alien/Build/Plugin/PkgConfig/Negotiate.pm | 25 +-- t/01_use.t | 4 - t/alien_build_plugin_pkgconfig_negotiate.t | 2 +- ...n_build_plugin_pkgconfig_negotiate__pick.t | 176 +----------------- 6 files changed, 11 insertions(+), 204 deletions(-) diff --git a/MANIFEST b/MANIFEST index 6f507b0..b9335ad 100644 --- a/MANIFEST +++ b/MANIFEST @@ -243,11 +243,9 @@ lib/Alien/Build/Plugin/Fetch/Wget.pm lib/Alien/Build/Plugin/Gather.pod lib/Alien/Build/Plugin/Gather/IsolateDynamic.pm lib/Alien/Build/Plugin/PkgConfig.pod -lib/Alien/Build/Plugin/PkgConfig/CommandLine.pm lib/Alien/Build/Plugin/PkgConfig/LibPkgConf.pm lib/Alien/Build/Plugin/PkgConfig/MakeStatic.pm lib/Alien/Build/Plugin/PkgConfig/Negotiate.pm -lib/Alien/Build/Plugin/PkgConfig/PP.pm lib/Alien/Build/Plugin/Prefer.pod lib/Alien/Build/Plugin/Prefer/BadVersion.pm lib/Alien/Build/Plugin/Prefer/GoodVersion.pm @@ -336,12 +334,10 @@ t/alien_build_plugin_fetch_netftp.t t/alien_build_plugin_fetch_wget.t t/alien_build_plugin_gather_isolatedynamic.t t/alien_build_plugin_meta.t -t/alien_build_plugin_pkgconfig_commandline.t t/alien_build_plugin_pkgconfig_libpkgconf.t t/alien_build_plugin_pkgconfig_makestatic.t t/alien_build_plugin_pkgconfig_negotiate.t t/alien_build_plugin_pkgconfig_negotiate__pick.t -t/alien_build_plugin_pkgconfig_pp.t t/alien_build_plugin_prefer_badversion.t t/alien_build_plugin_prefer_goodversion.t t/alien_build_plugin_prefer_sortversions.t diff --git a/Makefile.PL b/Makefile.PL index 27b442e..4c4c147 100644 --- a/Makefile.PL +++ b/Makefile.PL @@ -95,11 +95,9 @@ my %WriteMakefileArgs = ( "lib/Alien/Build/Plugin/Gather.pod" => "\$(INST_LIB)/Alien/Build/Plugin/Gather.pod", "lib/Alien/Build/Plugin/Gather/IsolateDynamic.pm" => "\$(INST_LIB)/Alien/Build/Plugin/Gather/IsolateDynamic.pm", "lib/Alien/Build/Plugin/PkgConfig.pod" => "\$(INST_LIB)/Alien/Build/Plugin/PkgConfig.pod", - "lib/Alien/Build/Plugin/PkgConfig/CommandLine.pm" => "\$(INST_LIB)/Alien/Build/Plugin/PkgConfig/CommandLine.pm", "lib/Alien/Build/Plugin/PkgConfig/LibPkgConf.pm" => "\$(INST_LIB)/Alien/Build/Plugin/PkgConfig/LibPkgConf.pm", "lib/Alien/Build/Plugin/PkgConfig/MakeStatic.pm" => "\$(INST_LIB)/Alien/Build/Plugin/PkgConfig/MakeStatic.pm", "lib/Alien/Build/Plugin/PkgConfig/Negotiate.pm" => "\$(INST_LIB)/Alien/Build/Plugin/PkgConfig/Negotiate.pm", - "lib/Alien/Build/Plugin/PkgConfig/PP.pm" => "\$(INST_LIB)/Alien/Build/Plugin/PkgConfig/PP.pm", "lib/Alien/Build/Plugin/Prefer.pod" => "\$(INST_LIB)/Alien/Build/Plugin/Prefer.pod", "lib/Alien/Build/Plugin/Prefer/BadVersion.pm" => "\$(INST_LIB)/Alien/Build/Plugin/Prefer/BadVersion.pm", "lib/Alien/Build/Plugin/Prefer/GoodVersion.pm" => "\$(INST_LIB)/Alien/Build/Plugin/Prefer/GoodVersion.pm", @@ -218,4 +216,4 @@ sub requires { goto &runtime_requires } sub runtime_requires { my ( $module, $version_or_range ) = @_; _add_prereq( PREREQ_PM => $module, $version_or_range ); -} \ No newline at end of file +} diff --git a/lib/Alien/Build/Plugin/PkgConfig/Negotiate.pm b/lib/Alien/Build/Plugin/PkgConfig/Negotiate.pm index fd4cb62..de10c7c 100644 --- a/lib/Alien/Build/Plugin/PkgConfig/Negotiate.pm +++ b/lib/Alien/Build/Plugin/PkgConfig/Negotiate.pm @@ -4,9 +4,7 @@ use strict; use warnings; use 5.008004; use Alien::Build::Plugin; -use Alien::Build::Plugin::PkgConfig::PP; use Alien::Build::Plugin::PkgConfig::LibPkgConf; -use Alien::Build::Plugin::PkgConfig::CommandLine; use Alien::Build::Util qw( _perl_config ); use Carp (); @@ -42,27 +40,6 @@ sub pick return 'PkgConfig::LibPkgConf'; } - if(Alien::Build::Plugin::PkgConfig::CommandLine->available) - { - # TODO: determine environment or flags necessary for using pkg-config - # on solaris 64 bit. - # Some advice on pkg-config and 64 bit Solaris - # https://docs.oracle.com/cd/E53394_01/html/E61689/gplhi.html - my $is_solaris64 = (_perl_config('osname') eq 'solaris' && _perl_config('ptrsize') == 8); - - # PkgConfig.pm is more reliable on windows - my $is_windows = _perl_config('osname') eq 'MSWin32'; - - if(!$is_solaris64 && !$is_windows) - { - return 'PkgConfig::CommandLine'; - } - } - - if(Alien::Build::Plugin::PkgConfig::PP->available) - { - return 'PkgConfig::PP'; - } else { # this is a fata error. because we check for a pkg-config implementation @@ -70,7 +47,7 @@ sub pick # fallback on installing PkgConfig.pm as a prereq if nothing else is avail). # we therefore expect at least one of these to work, if not, then the configuration # of the system has shifted from underneath us. - Carp::croak("Could not find an appropriate pkg-config or pkgconf implementation, please install PkgConfig.pm, PkgConfig::LibPkgConf, pkg-config or pkgconf"); + Carp::croak("Could not find an appropriate pkg-config or pkgconf implementation, please install PkgConfig::LibPkgConf"); } } diff --git a/t/01_use.t b/t/01_use.t index 0275da2..46875d0 100644 --- a/t/01_use.t +++ b/t/01_use.t @@ -46,11 +46,9 @@ require_ok 'Alien::Build::Plugin::Fetch::LocalDir'; require_ok 'Alien::Build::Plugin::Fetch::NetFTP'; require_ok 'Alien::Build::Plugin::Fetch::Wget'; require_ok 'Alien::Build::Plugin::Gather::IsolateDynamic'; -require_ok 'Alien::Build::Plugin::PkgConfig::CommandLine'; require_ok 'Alien::Build::Plugin::PkgConfig::LibPkgConf'; require_ok 'Alien::Build::Plugin::PkgConfig::MakeStatic'; require_ok 'Alien::Build::Plugin::PkgConfig::Negotiate'; -require_ok 'Alien::Build::Plugin::PkgConfig::PP'; require_ok 'Alien::Build::Plugin::Prefer::BadVersion'; require_ok 'Alien::Build::Plugin::Prefer::GoodVersion'; require_ok 'Alien::Build::Plugin::Prefer::SortVersions'; @@ -116,11 +114,9 @@ ok -f 't/alien_build_plugin_fetch_localdir.t', 'test for Alien::B ok -f 't/alien_build_plugin_fetch_netftp.t', 'test for Alien::Build::Plugin::Fetch::NetFTP'; ok -f 't/alien_build_plugin_fetch_wget.t', 'test for Alien::Build::Plugin::Fetch::Wget'; ok -f 't/alien_build_plugin_gather_isolatedynamic.t', 'test for Alien::Build::Plugin::Gather::IsolateDynamic'; -ok -f 't/alien_build_plugin_pkgconfig_commandline.t', 'test for Alien::Build::Plugin::PkgConfig::CommandLine'; ok -f 't/alien_build_plugin_pkgconfig_libpkgconf.t', 'test for Alien::Build::Plugin::PkgConfig::LibPkgConf'; ok -f 't/alien_build_plugin_pkgconfig_makestatic.t', 'test for Alien::Build::Plugin::PkgConfig::MakeStatic'; ok -f 't/alien_build_plugin_pkgconfig_negotiate.t', 'test for Alien::Build::Plugin::PkgConfig::Negotiate'; -ok -f 't/alien_build_plugin_pkgconfig_pp.t', 'test for Alien::Build::Plugin::PkgConfig::PP'; ok -f 't/alien_build_plugin_prefer_badversion.t', 'test for Alien::Build::Plugin::Prefer::BadVersion'; ok -f 't/alien_build_plugin_prefer_goodversion.t', 'test for Alien::Build::Plugin::Prefer::GoodVersion'; ok -f 't/alien_build_plugin_prefer_sortversions.t', 'test for Alien::Build::Plugin::Prefer::SortVersions'; diff --git a/t/alien_build_plugin_pkgconfig_negotiate.t b/t/alien_build_plugin_pkgconfig_negotiate.t index 1c2c71d..071a7b0 100644 --- a/t/alien_build_plugin_pkgconfig_negotiate.t +++ b/t/alien_build_plugin_pkgconfig_negotiate.t @@ -16,7 +16,7 @@ subtest 'pick' => sub { subtest 'override' => sub { - foreach my $name (qw( PP LibPkgConf CommandLine )) + foreach my $name (qw( LibPkgConf )) { local $ENV{ALIEN_BUILD_PKG_CONFIG} = "PkgConfig::$name"; subtest $ENV{ALIEN_BUILD_PKG_CONFIG} => sub { diff --git a/t/alien_build_plugin_pkgconfig_negotiate__pick.t b/t/alien_build_plugin_pkgconfig_negotiate__pick.t index 9862014..54fb83d 100644 --- a/t/alien_build_plugin_pkgconfig_negotiate__pick.t +++ b/t/alien_build_plugin_pkgconfig_negotiate__pick.t @@ -27,9 +27,10 @@ subtest 'LibPkgConf' => sub { local $PkgConfig::LibPkgConf::VERSION = '0.01'; - isnt( - Alien::Build::Plugin::PkgConfig::Negotiate->pick, - 'PkgConfig::LibPkgConf', + eval { Alien::Build::Plugin::PkgConfig::Negotiate->pick }; + ok( + $@, + 'PkgConfig::LibPkgConf "0.1" is too old', ); }; @@ -42,9 +43,10 @@ subtest 'LibPkgConf' => sub { # cannot be loaded for the rest of this .t file note scalar capture_merged { Devel::Hide->import(qw( PkgConfig::LibPkgConf )) }; - isnt( - Alien::Build::Plugin::PkgConfig::Negotiate->pick, - 'PkgConfig::LibPkgConf', + eval { Alien::Build::Plugin::PkgConfig::Negotiate->pick }; + ok( + $@, + 'Missing PkgConfig::LibPkgConf triggers an exception', ); }; @@ -57,167 +59,5 @@ my $make_pkgconfig_libpkgconf_unavailable = mock 'Alien::Build::Plugin::PkgConfi ], ); -subtest 'CommandLine' => sub { - - local $INC{'PkgConfig.pm'} = __FILE__; - local $PkgConfig::VERSION = '0.14026'; - - my %which; - - my $mock = mock 'File::Which' => ( - override => [ - which => sub { - my($prog) = @_; - if(defined $prog) - { - if($which{$prog}) - { - note "which: $prog => $which{$prog}"; - return $which{$prog}; - } - else - { - note "which: $prog N/A"; - } - } - else - { - note "which: undef"; - } - }, - ], - ); - - my $mock2 = mock 'Alien::Build::Plugin::PkgConfig::Negotiate'; - - if($^O =~ /^(solaris|MSWin32)$/) { - $mock2->override( - _perl_config => sub { - my($key) = @_; - if($key eq 'osname') - { return 'linux' } - else - { return $Config{$key} } - }, - ); - } - - subtest 'no command line' => sub { - - %which = (); - - is( - Alien::Build::Plugin::PkgConfig::Negotiate->pick, - 'PkgConfig::PP', - ); - - }; - - subtest 'pkg-config' => sub { - - %which = ( 'pkg-config' => '/usr/bin/pkg-config' ); - - is( - Alien::Build::Plugin::PkgConfig::Negotiate->pick, - 'PkgConfig::CommandLine', - ); - - }; - - subtest 'pkgconf' => sub { - - %which = ( 'pkgconf' => '/usr/bin/pkgconf' ); - - is( - Alien::Build::Plugin::PkgConfig::Negotiate->pick, - 'PkgConfig::CommandLine', - ); - - }; - - subtest 'PKG_CONFIG' => sub { - - local $ENV{PKG_CONFIG} = 'foo-pkg-config'; - %which = ( 'foo-pkg-config' => '/usr/bin/foo-pkg-config' ); - - is( - Alien::Build::Plugin::PkgConfig::Negotiate->pick, - 'PkgConfig::CommandLine', - ); - - }; - - subtest 'PP' => sub { - - subtest '64 bit solaris' => sub { - - %which = ( 'pkg-config' => '/usr/bin/pkg-config' ); - - # From the old AB::MB days we prefer PkgConfig.pm - # for 64 bit solaris over the command line pkg-config - - my $mock2 = mock 'Alien::Build::Plugin::PkgConfig::Negotiate' => ( - override => [ - _perl_config => sub { - my($key) = @_; - if($key eq 'ptrsize') - { return 8 } - elsif($key eq 'osname') - { return 'solaris' } - else - { return $Config{$key} } - }, - ], - ); - - is( - Alien::Build::Plugin::PkgConfig::Negotiate->pick, - 'PkgConfig::PP', - ); - - }; - - - subtest 'Windows' => sub { - - %which = ( 'pkg-config' => '/usr/bin/pkg-config' ); - - # From the old AB::MB days we prefer PkgConfig.pm - # for 64 bit solaris over the command line pkg-config - - my $mock2 = mock 'Alien::Build::Plugin::PkgConfig::Negotiate' => ( - override => [ - _perl_config => sub { - my($key) = @_; - if($key eq 'osname') - { return 'MSWin32' } - else - { return $Config{$key} } - }, - ], - ); - - is( - Alien::Build::Plugin::PkgConfig::Negotiate->pick, - 'PkgConfig::PP', - ); - - }; - - subtest 'PP is fallback' => sub { - - %which = (); - - is( - Alien::Build::Plugin::PkgConfig::Negotiate->pick, - 'PkgConfig::PP', - ); - - }; - - }; - -}; - done_testing; -- 2.37.2