More diagnostics in xsubpp on EU::PXS load failure
authorSteffen Mueller <smueller@cpan.org>
Fri, 22 Jul 2011 18:10:26 +0000 (20:10 +0200)
committerSteffen Mueller <smueller@cpan.org>
Sun, 24 Jul 2011 16:38:38 +0000 (18:38 +0200)
There are reports of xsubpp failing to load the correct
ExtUtils::ParseXS. This adds some extra diagnostics.

Includes a minor doc-tweak.

Not perldelta worthy.

dist/ExtUtils-ParseXS/lib/ExtUtils/xsubpp

index 2dfe278..7a82550 100644 (file)
@@ -1,10 +1,23 @@
-#!./miniperl
+#!perl
+use 5.006;
+use strict;
+eval {
+  require ExtUtils::ParseXS;
+  ExtUtils::ParseXS->import(
+    qw(
+      process_file
+      report_error_count
+    )
+  );
+  1;
+}
+or do {
+  my $err = $@ || 'Zombie error';
+  my $v = $ExtUtils::ParseXS::VERSION;
+  $v = '<undef>' if not defined $v;
+  die "Failed to load or import from ExtUtils::ParseXS (version $v). Please check that ExtUtils::ParseXS is installed correctly and that the newest version will be found in your \@INC path: $err";
+};
 
-require 5.002;
-use ExtUtils::ParseXS qw(
-  process_file
-  report_error_count
-);
 use Getopt::Long;
 
 my %args = ();
@@ -55,7 +68,8 @@ B<xsubpp> [B<-v>] [B<-except>] [B<-s pattern>] [B<-prototypes>] [B<-noversionche
 
 =head1 DESCRIPTION
 
-This compiler is typically run by the makefiles created by L<ExtUtils::MakeMaker>.
+This compiler is typically run by the makefiles created by L<ExtUtils::MakeMaker>
+or by L<Module::Build> or other Perl module build tools.
 
 I<xsubpp> will compile XS code into C code by embedding the constructs
 necessary to let C functions manipulate Perl values and creates the glue