|Think about Loose Coupling|
Recently we found that our code wasn't building on Windows because Class-BuildMethods didn't have a PPM. dagolden suggested that this was because the core ActiveState version of Scalar::Util didn't have the minimum version number which provided the refaddr function I was using. So I made sure that I listed 1.08 as the minimum version number for it. This apparently did not fix the problem, but ActiveState's build status information is virtually useless.
Then things get strange. I started doing some digging and my aliased module has no external dependencies, so this seemed like a good place to start (it does list Test::More 0.6 for the tests, however). As it turns out, this module is still failing on Darwin, Solaris, and three HPUX systems. All three HPUX systems list the following failure message:
That's really annoying because every one of my modules which uses Module::Build also provides a compatible Makefile.PL explicitly for cases like this. If Build.PL does not work, use the Makefile.PL!
So why is it failing on Darwin? Let's look at their build status message:
What the heck? There is no way that I, as a module author, can hope to use that to diagnose a failure if that's the message.
I don't know what to do. I've emailed ActiveState before about their build process and about falling back to Makefile.PL if Module::Build is not available, but with confusing and inaccurate build information, as a module author, I don't know that I can reliably claim support for any of my modules for Windows.
The solution? Short of ActiveState doing serious work to improve their build process and error reporting, I strongly urge everyone interested in supporting Perl on Win32 systems to try Strawberry Perl on non-critical systems. Send bug reports. Send patches. Send "thank you" notes. Perl on Windows is crippled due to poor support.