Return-Path: Delivered-To: apache-bugdb-archive@hyperreal.org Received: (qmail 25614 invoked by uid 6000); 23 Oct 1998 14:40:07 -0000 Received: (qmail 25300 invoked by uid 2001); 23 Oct 1998 14:40:00 -0000 Date: 23 Oct 1998 14:40:00 -0000 Message-ID: <19981023144000.25297.qmail@hyperreal.org> To: apache-bugdb@apache.org Cc: apache-bugdb@apache.org, From: Lack Mr G M Subject: Re: pending/3259: AuthDBMUserFile - Apache complains 'File not found' Reply-To: Lack Mr G M Sender: apache-bugdb-owner@apache.org Precedence: bulk The following reply was made to PR pending/3259; it has been noted by GNATS. From: Lack Mr G M To: marc@apache.org Cc: apache-bugdb@apache.org, gnats-admin@hyperreal.org, apbugs@Apache.Org, jeffc@dbix.com.my 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--