Bug 29721

Summary: rpm 4.0.2 various compile problems in db3.c
Product: [Retired] Red Hat Linux Reporter: Red Hat Bugzilla <bugzilla>
Component: rpmAssignee: Jeff Johnson <jbj>
Status: CLOSED RAWHIDE QA Contact: David Lawrence <dkl>
Severity: medium Docs Contact:
Priority: medium    
Version: 7.3CC: mooney
Target Milestone: ---   
Target Release: ---   
Hardware: alpha   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2001-04-03 12:06:15 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Red Hat Bugzilla 2001-02-27 07:51:11 UTC
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?

Comment 1 Red Hat Bugzilla 2001-02-27 14:15:42 UTC
No support for db-3.2.9 yet, use db-3.1.17.

Deferred until then.

Comment 2 Red Hat Bugzilla 2001-04-03 12:07:46 UTC
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.