The following reply was made to PR pending/3259; it has been noted by GNATS.
From: Lack Mr G M <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED],
[EMAIL PROTECTED]
Subject: Re: pending/3259: AuthDBMUserFile - Apache complains 'File not found'
Date: Fri, 23 Oct 1998 15:38:36 +0100
This is a multi-part message in MIME format.
--------------9FC062D967E6FEA2BD831A85
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Ok, this was *originally* PR 2809. I expct that my attempt to
comemnt on a report that wasn't mine resulted in a new call (3259).
Anwyay, I have tracked down the problem (at least, I;ve tracked down
what was *my* problem).
When I build perl, I include the GDBM_FIle extension. So the perl
config end ups including "-lgdbm" in its list of libraries to load. The
mod_perl config picks this up and uses it for *its* load.
However, the gdbm libraries include an ndbm interface - the calls are
dbm_open() etc., but the underlyign implementation is a gdbm file.
Consequently, the mod_perl linking ends up using gdbm for AuthDbm
files (and yess, the gdbm implementation does open a *.pag file
only...).
So, the mod_pelr build needs to get the lgdbm out of the way. But it
can't, as the loading of libperl.a needs it....
So, what I did was to run a little script (appended) from within the
apache_1.3.3 directory thus:
./preempt-gdbm.pl `find . -name Makefile -exec fgrep -l lgdbm {} \;`
to change all "-lgdm" in Makefile to "-lc -lgdbm". At least it
works..... There might be a neater way to do this within the
mod_perl/apapche config - I don't know.
My personal feeling is that this is a bug in gdbm, for not giving you
the option to not have the ndbm entrypoints in your library.
--------------9FC062D967E6FEA2BD831A85
Content-Type: application/x-perl;
name="preempt-gdbm.pl"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="preempt-gdbm.pl"
#!/usr/central/bin/perl -swi.bak
use vars qw( $v *ARGVOUT );
use File::Copy;
# We need to change all instances of '-lgdbm' to '-lc -lgdbm'
#
# The original files are kept as .bak is there are changes.
# If there are no changes the original is moved back into place.
$changed = 0;
while (<>) {
if (s/-lgdbm/-lc -lgdbm/g) {
$changed = 1;
}
print;
if (eof) {
# Close handles to avoid warnings...
close ARGV;
close ARGVOUT;
move "$ARGV.bak", $ARGV if (not $changed);
print STDERR "$ARGV done\n" if (defined $v);
$changed = 0;
}
}
--------------9FC062D967E6FEA2BD831A85--