Subject: | XSLoader problem with perl 5.8.8 |
Make,Test,Install work with 5.8.8 when I install a current Test::More.
But then, when other parties try to load the Cwd.so, we get fails. This
one has been seen with XSLoader, but before that I saw other, less
obvious fails:
t/XSLoader.t .. 1/23
# Failed test 'calling XSLoader::load() with a XS module and an
incorrect version'
# at t/XSLoader.t line 82.
# 'Can't load
'/home/sand-local/.cpan/build/PathTools-3.40-V8GBIB/blib/arch/auto/Cwd/Cwd.so'
for module Cwd:
/home/sand-local/.cpan/build/PathTools-3.40-V8GBIB/blib/arch/auto/Cwd/Cwd.so:
undefined symbol: croak_xs_usage at
/usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/DynaLoader.pm line 230.
# at t/XSLoader.t line 81
# '
# doesn't match '/^Cwd object version \S+ does not match bootstrap
parameter 12345678/'
In despair I carved this ugly hack in place just to prove the concept
gets me somewhere:
# diff -u PathTools-3.40-MqGASU/Cwd.xs PathTools-3.40-j4G4c3/Cwd.xs
--- PathTools-3.40-MqGASU/Cwd.xs 2013-01-16 07:20:32.000000000 +0100
+++ PathTools-3.40-j4G4c3/Cwd.xs 2013-01-23 12:11:58.000000000 +0100
@@ -410,7 +410,11 @@
dXSTARG;
/* fastcwd takes zero parameters: */
if (ix == 1 && items != 0)
+#ifdef PERL_ARGS_ASSERT_CROAK_XS_USAGE
croak_xs_usage(cv, "");
+#else
+ croak( "call error: Not enough arguments" );
+#endif
getcwd_sv(TARG);
XSprePUSH; PUSHTARG;
#ifndef INCOMPLETE_TAINTS
I suppose you know better how to *really* fix this, I'm just glad I can
continue from here.
Thanks && Regards,