Thursday, April 5, 2007

Ick

Have come down with a pretty bad sinus infection which has left me with a sore throat and feeling pretty crappy.

Discovered another CPAN module where the original author decided to change the build behavior based on the presence of a ".svn" directory. The Params::Validate module has a tweak to the Makefile.PL that checks for the .svn directory and if it is there to change the CCFLAGS to "-Wall" (disregarding whatever flags were there before). Except he didn't consider the possibility that other people might want to keep the module under source control, and that they might not be using gcc. In my case, it took me half an hour to sort through 500 lines of output from MSVC before I realized that "-DWIN32" wasn't in the CCFLAGS).

I've seen this before in other modules and I understand the rational - the author happens to use source control and figures there should be extra testing or debugging code added that other users shouldn't see in a standard "perl Makefile.PL && make && make test && make install" from CPAN. In another such module, the author had a bunch of extra tests that were tied to his build environment. Unfortunately, using the presence of .svn as a means of detecting whether you are the upstream maintainer or just some guy who pulled the source from CPAN and stored it in Subversion is probably not such a good convention.