This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update to ExtUtils::CBuilder 0.280226
authorAlberto Simões <ambs@cpan.org>
Fri, 14 Jul 2017 13:14:05 +0000 (14:14 +0100)
committerJames E Keenan <jkeenan@cpan.org>
Sat, 15 Jul 2017 17:00:48 +0000 (13:00 -0400)
File::Basename::fileparse(), when called with two arguments, is
documented to return a list of three elements:

    The non-suffix part of the file's basename.

    The file's dirname, plus trailing path separator.

    The suffix part of the file's basename.

Thus,

    my ($name,$path,$suffix) = fileparse('/tmp/perl/p5p/foo.patch', qr/\.[^.]*/);

returns:

    $name:      foo
    $path:      /tmp/perl/p5p/
    $suffix:    .patch

If we want to take those values and compose a path with
File::Spec->catfile(), we have to bear in mind that File::Spec generally
expects to have directories precede filenames in its arguments.  Thus,
the correct way to use the values returned by fileparse() would be:

    my $cf = File::Spec->catfile($path, $name . $suffix);

In ExtUtils::CBuilder::Base::new(), however, the return values from
fileparse() were named in a way that suggested that the first value
would be the dirname and the second would be the non-suffix part of the
basename:

    my ($ccpath, $ccbase, $ccsfx ) = fileparse($self->{config}{cc}, qr/\.[^.]*/);

$ccpath -- which here is really a basename -- was then used as the first
argument to catfile():

    File::Spec->catfile( $ccpath, $cxx, $ccsfx )

In addition, in the above $ccsfx should not have been a separate
argument.  Rather, it should have been concatenated without a path
separator to the second argument.

For: RT # 131749.  See also:
https://github.com/Perl-Toolchain-Gang/ExtUtils-CBuilder/pull/6 (thanks
to stphnlyd of Perl Toolchain Gang).

Signed-off-by: James E Keenan <jkeenan@cpan.org>
17 files changed:
dist/ExtUtils-CBuilder/Changes
dist/ExtUtils-CBuilder/LICENSE
dist/ExtUtils-CBuilder/Makefile.PL
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Base.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Unix.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/VMS.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/aix.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/android.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/cygwin.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/darwin.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
dist/ExtUtils-CBuilder/lib/ExtUtils/CBuilder/Platform/os2.pm

index aaebade..630309a 100644 (file)
@@ -1,5 +1,12 @@
 Revision history for Perl extension ExtUtils::CBuilder.
 
+0.280226 - 2017-07-14
+
+  Fixed:
+
+  - Fix C++ compiler detection (RT #131749)
+    (thanks to stphnlyd)
+
 0.280225 - 2016-01-04
 
   Fixed:
@@ -8,7 +15,7 @@ Revision history for Perl extension ExtUtils::CBuilder.
 
 0.280224 - 2015-10-09
 
-  Enhncements:
+  Enhancements:
 
   - Use warnings/strict on all modules.
 
index 97b386c..6171f8b 100644 (file)
@@ -1,4 +1,4 @@
-This software is copyright (c) 2015 by Ken Williams.
+This software is copyright (c) 2017 by Ken Williams.
 
 This is free software; you can redistribute it and/or modify it under
 the same terms as the Perl 5 programming language system itself.
@@ -12,7 +12,7 @@ b) the "Artistic License"
 
 --- The GNU General Public License, Version 1, February 1989 ---
 
-This software is Copyright (c) 2015 by Ken Williams.
+This software is Copyright (c) 2017 by Ken Williams.
 
 This is free software, licensed under:
 
@@ -272,7 +272,7 @@ That's all there is to it!
 
 --- The Artistic License 1.0 ---
 
-This software is Copyright (c) 2015 by Ken Williams.
+This software is Copyright (c) 2017 by Ken Williams.
 
 This is free software, licensed under:
 
index 44cb33a..c599fcd 100644 (file)
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.039.
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v6.010.
 use strict;
 use warnings;
 
@@ -29,7 +29,7 @@ my %WriteMakefileArgs = (
   "TEST_REQUIRES" => {
     "Test::More" => "0.47"
   },
-  "VERSION" => "0.280225",
+  "VERSION" => "0.280226",
   "test" => {
     "TESTS" => "t/*.t"
   }
@@ -60,6 +60,6 @@ delete $WriteMakefileArgs{CONFIGURE_REQUIRES}
   unless eval { ExtUtils::MakeMaker->VERSION(6.52) };
 
 $WriteMakefileArgs{INSTALLDIRS} = 'perl'
-    if $] >= 5.009003 && $] <= 5.011000;
+    if "$]" >= 5.009003 && "$]" <= 5.011000;
 
 WriteMakefile(%WriteMakefileArgs);
index 6ce0c68..99ee1fb 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder;
-$ExtUtils::CBuilder::VERSION = '0.280225';
+$ExtUtils::CBuilder::VERSION = '0.280226';
 use File::Spec ();
 use File::Path ();
 use File::Basename ();
index 60b2f43..511e5fe 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Base;
-$ExtUtils::CBuilder::Base::VERSION = '0.280225';
+$ExtUtils::CBuilder::Base::VERSION = '0.280226';
 use strict;
 use warnings;
 use File::Spec;
@@ -45,16 +45,26 @@ sub new {
      if defined $ENV{LDFLAGS};
 
   unless ( exists $self->{config}{cxx} ) {
-    my ($ccpath, $ccbase, $ccsfx ) = fileparse($self->{config}{cc}, qr/\.[^.]*/);
+
+    my ($ccbase, $ccpath, $ccsfx ) = fileparse($self->{config}{cc}, qr/\.[^.]*/);
+
+    ## If the path is just "cc", fileparse returns $ccpath as "./"
+    $ccpath = "" if $self->{config}{cc} =~ /^$ccbase$ccsfx$/;
+      
     foreach my $cxx (@{$cc2cxx{$ccbase}}) {
-      if( can_run( File::Spec->catfile( $ccpath, $cxx, $ccsfx ) ) ) {
-        $self->{config}{cxx} = File::Spec->catfile( $ccpath, $cxx, $ccsfx );
+      my $cxx1 = File::Spec->catfile( $ccpath, $cxx . $ccsfx);
+
+      if( can_run( $cxx1 ) ) {
+        $self->{config}{cxx} = $cxx1;
        last;
       }
-      if( can_run( File::Spec->catfile( $cxx, $ccsfx ) ) ) {
-        $self->{config}{cxx} = File::Spec->catfile( $cxx, $ccsfx );
+      my $cxx2 = $cxx . $ccsfx;
+
+      if( can_run( $cxx2 ) ) {
+        $self->{config}{cxx} = $cxx2;
        last;
       }
+
       if( can_run( $cxx ) ) {
         $self->{config}{cxx} = $cxx;
        last;
index 399e254..1e75806 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::Unix;
-$ExtUtils::CBuilder::Platform::Unix::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::Unix::VERSION = '0.280226';
 use warnings;
 use strict;
 use ExtUtils::CBuilder::Base;
index e9d9f6f..4c62d6d 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::VMS;
-$ExtUtils::CBuilder::Platform::VMS::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::VMS::VERSION = '0.280226';
 use warnings;
 use strict;
 use ExtUtils::CBuilder::Base;
index 80b8f29..2ff44b6 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::Windows;
-$ExtUtils::CBuilder::Platform::Windows::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::Windows::VERSION = '0.280226';
 use strict;
 use warnings;
 
@@ -151,7 +151,7 @@ sub link {
   # if running in perl source tree, look for libs there, not installed
   my $lddlflags = $cf->{lddlflags};
   my $perl_src = $self->perl_src();
-  $lddlflags =~ s/\Q$cf->{archlibexp}\E[\\\/]CORE/$perl_src\/lib\/CORE/ if $perl_src;
+  $lddlflags =~ s{\Q$cf->{archlibexp}\E[\\/]CORE}{$perl_src`/lib/CORE} if $perl_src;
 
   my %spec = (
     srcdir        => $to,
index 513c4ac..fb64717 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::Windows::BCC;
-$ExtUtils::CBuilder::Platform::Windows::BCC::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::Windows::BCC::VERSION = '0.280226';
 use strict;
 use warnings;
 
index 19851df..4e7123c 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::Windows::GCC;
-$ExtUtils::CBuilder::Platform::Windows::GCC::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::Windows::GCC::VERSION = '0.280226';
 use warnings;
 use strict;
 
index c8d675f..0cf2159 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::Windows::MSVC;
-$ExtUtils::CBuilder::Platform::Windows::MSVC::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::Windows::MSVC::VERSION = '0.280226';
 use warnings;
 use strict;
 
index 488d3e6..150b196 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::aix;
-$ExtUtils::CBuilder::Platform::aix::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::aix::VERSION = '0.280226';
 use warnings;
 use strict;
 use ExtUtils::CBuilder::Platform::Unix;
index b9e6af3..e2d8677 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::android;
-$ExtUtils::CBuilder::Platform::android::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::android::VERSION = '0.280226';
 use warnings;
 use strict;
 use File::Spec;
index 339840f..bd9d0d8 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::cygwin;
-$ExtUtils::CBuilder::Platform::cygwin::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::cygwin::VERSION = '0.280226';
 use warnings;
 use strict;
 use File::Spec;
index 04a87da..e360f04 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::darwin;
-$ExtUtils::CBuilder::Platform::darwin::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::darwin::VERSION = '0.280226';
 use warnings;
 use strict;
 use ExtUtils::CBuilder::Platform::Unix;
index d503e86..d4e7f0f 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::dec_osf;
-$ExtUtils::CBuilder::Platform::dec_osf::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::dec_osf::VERSION = '0.280226';
 use warnings;
 use strict;
 use ExtUtils::CBuilder::Platform::Unix;
index 8d0e3eb..61e3342 100644 (file)
@@ -1,5 +1,5 @@
 package ExtUtils::CBuilder::Platform::os2;
-$ExtUtils::CBuilder::Platform::os2::VERSION = '0.280225';
+$ExtUtils::CBuilder::Platform::os2::VERSION = '0.280226';
 use warnings;
 use strict;
 use ExtUtils::CBuilder::Platform::Unix;