Bug #16808 MySQL 5 build fails when BerkeleyDB4.2 support included
Submitted: 26 Jan 2006 15:36 Modified: 26 Jan 2006 15:57
Reporter: Sean Healey Email Updates:
Status: Duplicate Impact on me:
None 
Category:MySQL Server Severity:S3 (Non-critical)
Version:5.0.19-nightly-20060115 OS:Solaris (Solaris 8)
Assigned to: CPU Architecture:Any

[26 Jan 2006 15:36] Sean Healey
Description:
Build from source aborts when BerkeleyDB 4.2 support included in config.

Config/Build script:

#!/bin/sh

PATH=/usr/local/bin:/usr/local/sbin:/usr/ccs/bin:/usr/local/ssl/bin:/usr/bin:/usr/sbin
export PATH

CC="gcc"
export CC

CXX="gcc" 
export CXX

CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Wunused  -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa" 
export CFLAGS

CXXFLAGS="-Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti  -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa -g" 
export CXXFLAGS

CPPFLAGS="-I/usr/local/include:/usr/local/ssl/include:/usr/include"
export CPPFLAGS

LDFLAGS="-L/usr/local/lib:/usr/local/ssl/lib:/usr/ccs/lib:/usr/lib -R/usr/local/lib:/usr/local/ssl/lib:/usr/ccs/lib:/usr/lib"
export LDFLAGS

LD_LIBRARY_PATH=""
export LD_LIBRARY_PATH

cd mysql-5.0.19-nightly-20060115

./configure --prefix=/usr/local/mysql \
  --sysconfdir=/etc/mysql \
  --localstatedir=/var/mysql \
  --enable-assembler \
  --with-extra-charsets=complex \
  --enable-thread-safe-client \
  --without-gnu-ld \
  --with-server-suffix \
  --with-unix-socket-path=/tmp/mysql.sock \
  --with-mysqld-user=mysql \
  --with-zlib-dir=/usr/local \
  --with-libwrap=/usr/local \
  --with-openssl=/usr/local/ssl \
  --with-openssl-includes=/usr/local/ssl/include \
  --with-openssl-libs=/usr/local/ssl/lib \
  --without-berkeley-db \
  --without-bench \
  --without-ndbcluster

[ $? = 0 ] && make -j 4

Note - CFLAGS and CXXFLAGS values taken from solaris build script in ./BUILD subdirectory. CPPFLAGS and LDFLAGS settings are necessary, as my system default search paths only looks in /usr/include and /usr/lib.

Build output at point of failure:

<..snip loads of compile output..>
if gcc -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/usr/local/mysql\"" -DDATADIR="\"/var/mysql\"" -DSHAREDIR="\"/usr/local/mysql/share/mysql\"" -DHAVE_CONFIG_H -I. -I. -I.. -I/usr/local/include -I/usr/local/BerkeleyDB.4.2/include -I../innobase/include -I../include -I../include -I../regex -I.  -I/usr/local/ssl/include  -I/usr/local/include:/usr/local/ssl/include:/usr/local/BerkeleyDB.4.2/include:/usr/include -I/usr/local/include  -DDBUG_OFF -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti  -O3 -fno-omit-frame-pointer -mcpu=v8 -Wa,-xarch=v8plusa -g   -fno-implicit-templates -fno-exceptions -fno-rtti -D_FILE_OFFSET_BITS=64 -DHAVE_CURSES_H -I/var/build/mysql-5.0.19-nightly-20060115/include -DHAVE_RWLOCK_T -MT ha_ndbcluster.o -MD -MP -MF ".deps/ha_ndbcluster.Tpo" -c -o ha_ndbcluster.o ha_ndbcluster.cc; \
then mv -f ".deps/ha_ndbcluster.Tpo" ".deps/ha_ndbcluster.Po"; else rm -f ".deps/ha_ndbcluster.Tpo"; exit 1; fi
ha_berkeley.cc:104: error: type specifier omitted for parameter `db_notices'
ha_berkeley.cc:104: error: parse error before `)' token
ha_berkeley.cc: In function `bool berkeley_init()':
ha_berkeley.cc:177: error: `set_noticecall' undeclared (first use this 
   function)
ha_berkeley.cc:177: error: (Each undeclared identifier is reported only once 
   for each function it appears in.)
ha_berkeley.cc: In function `int berkeley_commit(THD*, bool)':
ha_berkeley.cc:261: error: `txn_commit' undeclared (first use this function)
ha_berkeley.cc: In function `int berkeley_rollback(THD*, bool)':
ha_berkeley.cc:276: error: `txn_abort' undeclared (first use this function)
ha_berkeley.cc: At global scope:
ha_berkeley.cc:340: error: type specifier omitted for parameter `db_notices'
ha_berkeley.cc:340: error: parse error before `)' token
ha_berkeley.cc: In function `void berkeley_noticecall(...)':
ha_berkeley.cc:342: error: `notice' undeclared (first use this function)
ha_berkeley.cc:344: error: `DB_NOTICE_LOGFILE_CHANGED' undeclared (first use 
   this function)
ha_berkeley.cc: In function `int berkeley_cmp_packed_key(DB*, const DBT*, const 
   DBT*)':
ha_berkeley.cc:454: error: 'const struct __db_dbt' has no member named '
   app_private'
ha_berkeley.cc:454: error: 'const struct __db_dbt' has no member named '
   app_private'
ha_berkeley.cc: In member function `virtual int ha_berkeley::open(const char*, 
   int, unsigned int)':
ha_berkeley.cc:626: error: `txn_begin' undeclared (first use this function)
ha_berkeley.cc: In member function `DBT* ha_berkeley::create_key(DBT*, unsigned 
   int, char*, const byte*, int)':
ha_berkeley.cc:878: error: 'struct __db_dbt' has no member named 'app_private'
ha_berkeley.cc: In member function `DBT* ha_berkeley::pack_key(DBT*, unsigned 
   int, char*, const byte*, unsigned int)':
ha_berkeley.cc:919: error: 'struct __db_dbt' has no member named 'app_private'
ha_berkeley.cc: In member function `int ha_berkeley::read_row(int, char*, 
   unsigned int, DBT*, DBT*, bool)':
ha_berkeley.cc:1454: error: 'struct DBT' has no member named 'app_private'
ha_berkeley.cc: In member function `virtual int 
   ha_berkeley::external_lock(THD*, int)':
ha_berkeley.cc:1858: error: `txn_begin' undeclared (first use this function)
ha_berkeley.cc:1893: error: `txn_commit' undeclared (first use this function)
ha_berkeley.cc: In member function `virtual int ha_berkeley::start_stmt(THD*, 
   thr_lock_type)':
ha_berkeley.cc:1922: error: `txn_begin' undeclared (first use this function)
ha_berkeley.cc: In member function `virtual ulonglong 
   ha_berkeley::get_auto_increment()':
ha_berkeley.cc:2185: error: 'struct DBT' has no member named 'app_private'
make[4]: *** [ha_berkeley.o] Error 1
make[4]: *** Waiting for unfinished jobs....
make[4]: Leaving directory `/var/build/mysql-5.0.19-nightly-20060115/sql'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/var/build/mysql-5.0.19-nightly-20060115/sql'
make[2]: *** [all] Error 2
make[2]: Leaving directory `/var/build/mysql-5.0.19-nightly-20060115/sql'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/build/mysql-5.0.19-nightly-20060115'
make: *** [all] Error 2

How to repeat:
Include the following in the configure command line:

  --with-berkeley-db=/usr/local/BerkeleyDB.4.2 \
  --with-berkeley-db-includes=/usr/local/BerkeleyDB.4.2/include \
  --with-berkeley-db-libs=/usr/local/BerkeleyDB.4.2/lib \

Build continues to completion without these.
[26 Jan 2006 15:45] Sean Healey
Oops! I just noticed that the config script I pasted in above is from after I disabled the BerkeleyDB4.2 support. In the failed build run, the lines -

  --with-berkeley-db=/usr/local/BerkeleyDB.4.2 \
  --with-berkeley-db-includes=/usr/local/BerkeleyDB.4.2/include \
  --with-berkeley-db-libs=/usr/local/BerkeleyDB.4.2/lib \

were included.
[26 Jan 2006 15:57] Jim Winstead
A newer version of BDB is included with MySQL 5.1, but the bundled version is still required due to Bug #14777.