Bug #13876: Not possible to build DBA as shared extension
| From: | jlam at jgrind dot org | Date: | Tue, 30 Oct 2001 17:42:08 +0000 |
| Subject: | Bug #13876: Not possible to build DBA as shared extension | ||
| Groups: | php.dev | ||
| Request: | Send a blank email to php-dev+get-69343@lists.php.net to get a copy of this message | ||
From: jlam@jgrind.org
Operating system: NetBSD
PHP version: 4.0.6
PHP Bug Type: DBM/DBA related
Bug description: Not possible to build DBA as shared extension
If php is configured and installed on a system without any
db libraries, then a db library, e.g. gdbm, is installed
afterwards, it's not possible to separately build the DBA
module as a shared extension. The problem occurs because
when a db library is not found when php is configured, the
php_config.h file written out contains the line:
#define HAVE_DBA 0
Later, when the DBA module is phpize'd and configured, the
HAVE_DBA definition from php_config.h overrides the value
set in the local config.h file, which causes all of the
code to be ifdef'd out. Even when this problem is fixed,
the various dba_<db>.c files that implement the PHP
functions for a particular db library will have all of
their code ifdef'd out since the DBA_<DB> definitions in
the local config.h file aren't used.
The complete fix is simple:
1) Remove the line "AC_DEFINE(HAVE_DBA, 0, [ ])" from
ext/dba/config.m4.
2) For each dba_<db>.c file, add at the top before
php.h is included the following lines:
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
I have a patch relative to the php-4.0.6 source tree that
makes the above changes, located at:
http://jgrind.org/~jlam/patch.dba-4.0.6
--
Edit bug report at: http://bugs.php.net/?id=13876&edit=1