Hello module authors,
I have a story and 3 questions.
The
story-------------------------------------------------------------------
-------------------
Last February I submitted a module to CPAN. Version 0.54 got 16 PASSes,
4 FAILS, and 128 UNKNOWNs. The UNKNOWNs were for 2 reasons:
1. I hadn't used ppport to define some Perl flags that are public now
but weren't on 5.6.
2. My module requires a C library 'mm' and I hadn't done anything to
communicate
this prerequisite to the testers.
This situation persisted for several months because it didn't occur
to me to that
UNKNOWNs had reports to read like PASSes and FAILs have. Finally in
August
I learned this and fixed the module. Several versions got uploaded
in a week or
two, ending with 0.58. One of the testers suggested I use
Devel::CheckLib to
communicate the need for the C library.
Here's the start of Makefile.PL for version 0.58:
###################################################
use lib inc;
use Devel::AssertOS qw(Unix OS390 BeOS Cygwin);
use ExtUtils::MakeMaker;
my $libpath = '/usr/local/lib';
if (!-e "$libpath/libmm.so") {
use Devel::CheckLib;
print "\nIPC::MMA requires the mm library, which is available at
http://www.ossp.org/pkg/lib/mm/\n";
$libpath = prompt(" Please enter path to libmm.so:", $libpath);
check_lib_or_exit(lib => 'mm', libpath => $libpath);
}
my $binpath = `which mm-config`;
chomp $binpath;
if ($binpath !~ m'^/') {
print "installation requires mm-config, which should have been
installed with the mm library\n";
$binpath = prompt(" Please enter path to mm-config:");
$binpath =~ s'(/(mm-config)?)?$'/mm-config';
if (!-e $binpath || !-X $binpath) {
warn "'$binpath' not found or not executable\n";
exit;
} }
my $cflags = `$binpath --cflags`;
...
###################################################
The problem is that in 5 weeks, only three testers have submitted
test reports for
version 0.58, resulting in 11 PASSes and 1 NA (on a Windows machine)
The
questions---------------------------------------------------------------
-------------------
1. Why are there so few test reports? Supposedly the prompt(" Please
enter path...")
which is provided by ExtUtils::MakeMaker, will not hang but will
sense the smoky
environment and return the default from $libpath.
check_lib_or_exit will then
report the problem in a way that will inform the tester of the
need for the library.
Right?
2. Do you think the following start for Makefile.PL would lead to
more test reports?
###################################################
use lib inc;
use Devel::AssertOS qw(Unix OS390 BeOS Cygwin);
use ExtUtils::MakeMaker;
my $binpath = 'mm-config';
if (system 'which', $binpath) {
# mm-config is not in PATH, but maybe it's installed outside PATH
my $result = `find /usr ~ . -name "$binpath"`;
if ($result !~ m"^(\.?/\S*?$binpath)$"m) {
warn "Can't find '$binpath'\n";
warn "IPC::MMA requires the mm library, including its
'$binpath' utility\n";
warn "The mm library is available at http://www.ossp.org/pkg/
lib/mm/\n";
exit 0;
}
$binpath = $1;
}
# mm-config provides parameters to link with the mm library
my $cflags = `$binpath --cflags`;
...
###################################################
3. If #2 is "yes" and I submit a new version with the above Makefile.PL,
should I call it 0.59 or 0.58_01? There hasn't been a significant
change
to the module itself since 0.54.
Thanks for being there,
cmac