Red Hat Bugzilla – Bug 29721
rpm 4.0.2 various compile problems in db3.c
Last modified: 2008-03-13 15:18:51 EDT
From Bugzilla Helper:
User-Agent: Mozilla/4.72 [en] (X11; U; OSF1 V5.0 alpha)
Whether or not the patch detailed in bug report #29719 is applied, if I try
compiled rpm 4.0.2 with Berkeley DB 3.2.9 on alpha-dec-osf, I get compile
cc: Error: db3.c, line 141: In this statement, "dbenv->remove" expects 3
arguments, but 4 are supplied. (toomanyargs)
xx = dbenv->remove(dbenv, dbhome, NULL, 0);
cc: Error: db3.c, line 219: In this statement, "set_func_fsync" is not a
member of "dbenv". (needmember)
xx = dbenv->set_func_fsync(dbenv, db3_fsync_disable);
cc: Error: db3.c, line 237: In this statement, "dbenv->open" expects 4
arguments, but 5 are supplied. (toomanyargs)
rc = dbenv->open(dbenv, dbhome, NULL, eflags, dbi->dbi_perms);
Steps to Reproduce:
0. install Berkeley DB 3.2.9
1. set CFLAGS and CPPFLAGS such that rpm's configure can find both the lib
and the include file, db.h
2. configure; make
checking the db.h that comes with my Berkeley DB 3.2.9, it does indeed
appear that rpm is invoking the functions mentioned above with an incorrect
arguments. In each case flagged above, it looks like there is one too many
In the __db_env struct from 3.2.9, I do see "methods" prototyped,
int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
int (*remove) __P((DB_ENV *, const char *, u_int32_t));
There is no prototype for a function named set_func_fsync that's part of
struct __db_env, though there *is* later a function prototype for:
int db_env_set_func_fsync __P((int (*)(int)));
I'm wondering if the API changed between the version that RPM was coded
against and version 3.2.x?
No support for db-3.2.9 yet, use db-3.1.17.
Deferred until then.
db-3.2.9 changes should be on the rpm-4_0 branch from CVS.
In fact db-3.2.9 is also included as part of rpm sources, although I still need
to wire the build.