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 errors, like such: 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); ---------^ Reproducible: Always 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 # of arguments. In each case flagged above, it looks like there is one too many arguments. In the __db_env struct from 3.2.9, I do see "methods" prototyped, including: 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.