I hypothesized that this problem -- which is continuing as of r26920 (Apr 10) -- originated in a recent change to a GDBM-related file within the Parrot distribution.
[parrot] 530 $ find . ! -path '*/.svn*' -iname '*gdbm*' | xargs svn status -v 26920 26101 particle config/auto/gdbm 26920 26101 particle config/auto/gdbm/gdbm.in 26920 26101 particle config/auto/gdbm/gdbm.in 26920 26790 fperrad config/auto/gdbm.pm ? gdbm_hash_1 I runtime/parrot/dynext/gdbmhash.bundle I src/dynpmc/gdbmhash.bundle I src/dynpmc/gdbmhash.c I src/dynpmc/gdbmhash.dump I src/dynpmc/gdbmhash.o 26920 26647 chromatic src/dynpmc/gdbmhash.pmc So I started with the most recent change: r26790 change to config/auto/gdbm.pm. $> svn diff -r 24769:26790 config/auto/gdbm.pm See attached for the diff. Note these lines: - else { - eval { $conf->cc_build( '', '-lgdbm' ); }; - } + eval { $conf->cc_build(); }; In the prior revision, a non-Win32 OS explicitly had '-lgdbm' added to its flags. But in the later revision, this flag goes missing. It's too late for me to test this out tonight, i.e., to see what happens if I revert or modify auto::gdbm. François, could you take a look at this please? Thank you very much. kid51
Index: config/auto/gdbm.pm =================================================================== --- config/auto/gdbm.pm (revision 24769) +++ config/auto/gdbm.pm (revision 26790) @@ -61,18 +61,10 @@ # Fink location. $self->_handle_darwin_for_fink($conf, $osname, 'gdbm.h'); + _handle_mswin32($conf, $osname, $cc); + $conf->cc_gen('config/auto/gdbm/gdbm.in'); - if ( $osname =~ /mswin32/i ) { - if ( $cc =~ /^gcc/i ) { - eval { $conf->cc_build( '', '-llibgdbm' ); }; - } - else { - eval { $conf->cc_build( '', 'gdbm.lib' ); }; - } - } - else { - eval { $conf->cc_build( '', '-lgdbm' ); }; - } + eval { $conf->cc_build(); }; my $has_gdbm = 0; if ( !$@ ) { my $test = $conf->cc_run(); @@ -88,6 +80,22 @@ return 1; } +sub _handle_mswin32 { + my ($conf, $osname, $cc) = @_; + if ( $osname =~ /mswin32/i ) { + if ( $cc =~ /^gcc/i ) { + $conf->data->add( ' ', libs => '-lgdbm.dll' ); + } + else { + $conf->data->add( ' ', libs => 'libgdbm.lib' ); + } + } + else { + $conf->data->add( ' ', libs => '-lgdbm' ); + } + return 1; +} + sub _evaluate_cc_run { my $self = shift; my ($test, $has_gdbm, $verbose) = @_;