Bad Install of Win32::API on Activestate Test Servers?

Posted by brightledsigns on 2013-03-21 08:16
Forums: PPM | OS: Windows 8 Windows 7 Windows Vista

Our module is passing tests on all of the 32-bit ActiveState test servers, and passing on the 64-bit Perl V5.12 test server, but it's failing on both Perl V5.14 and V5.16 64-bit.

The root cause appears to be an XS/Perl mismatch for Win32::API. Here's the relevant snippets from your build logs:

From your build of our module on 64 bit Perl V5.14:

Win32::API object version 0.62 does not match $Win32::API::VERSION 0.63 at C:/Perl64-5.14/lib/DynaLoader.pm line 214.

And, from your build of our module on 64 bit Perl V5.16:

Win32::API object version 0.73 does not match $Win32::API::VERSION 0.75 at C:/Perl64-5.16/lib/DynaLoader.pm line 214.

We're not explictly calling out Win32::API as a prerequisite. We do mark Win32::SerialPort as a prereq, which is what is pulling in Win32::API. Other than that, we're not doing anything in our Build.PL or Makefile.PL (that I can see) that would trigger this sort of problem.

On the other hand, I see other modules that use Win32::API building just fine. Not sure if it's just a "luck of the draw" thing where their tests land on a different server, or if we're doing something wrong in our packaging, build scripts, etc.

Does this look to be an issue with the test servers, or something we're doing wrong?

brightledsigns | Fri, 2013-03-29 12:25

Anyone? Bueller?

grahams
ActiveState Staff
Tue, 2013-04-02 09:51

The build logs for Win32::SerialPort on 64bit systems show the same message. What's not clear is if Win32::Serial port is supposed to work on a 64 bit system, or if the 5.12 version is borken in a way that gives a false pass.

brightledsigns | Tue, 2013-04-02 11:37

Yes, I see that too, but it's basically the same question...

What could Win32::SerialPort be doing that would create that error?

Here's one of their failed build logs:

http://ppm4.activestate.com/MSWin32-x64/5.14/1400/B/BB/BBIRTH/Win32-Seri...

Same error I get in my module:
Win32::API object version 0.62 does not match $Win32::API::VERSION 0.63 at C:/Perl64-5.14/lib/DynaLoader.pm line 214.

I don't see what Win32::SerialPort could be doing that would create this mismatch.