SOURCES: rpm-rpm5-patchset-8021.patch (NEW) - backport db 4.6.18 c...

arekm arekm at pld-linux.org
Tue Aug 7 22:05:44 CEST 2007


Author: arekm                        Date: Tue Aug  7 20:05:44 2007 GMT
Module: SOURCES                       Tag: HEAD
---- Log message:
- backport db 4.6.18 changes from rpm-4.5

---- Files affected:
SOURCES:
   rpm-rpm5-patchset-8021.patch (NONE -> 1.1)  (NEW)

---- Diffs:

================================================================
Index: SOURCES/rpm-rpm5-patchset-8021.patch
diff -u /dev/null SOURCES/rpm-rpm5-patchset-8021.patch:1.1
--- /dev/null	Tue Aug  7 22:05:44 2007
+++ SOURCES/rpm-rpm5-patchset-8021.patch	Tue Aug  7 22:05:39 2007
@@ -0,0 +1,291 @@
+Index: rpm/rpmdb/db3.c
+RCS File: /v/rpm/cvs/rpm/rpmdb/db3.c,v
+rcsdiff -q -kk '-r1.64.2.3' '-r1.64.2.4' -u '/v/rpm/cvs/rpm/rpmdb/db3.c,v' 2>/dev/null
+--- db3.c	2007/06/10 17:12:34	1.64.2.3
++++ db3.c	2007/07/27 18:51:24	1.64.2.4
+@@ -239,57 +239,6 @@
+     return 0;
+ }
+ 
+-#if 0
+-#if HAVE_LIBPTHREAD
+-#if HAVE_PTHREAD_H
+-#include <pthread.h>
+-#endif
+-
+-/**
+- * Check that posix mutexes are shared.
+- * @return		0 == shared.
+- */
+-static int db3_pthread_nptl(void)
+-	/*@*/
+-{
+-    pthread_mutex_t mutex;
+-    pthread_mutexattr_t mutexattr, *mutexattrp = NULL;
+-    pthread_cond_t cond;
+-    pthread_condattr_t condattr, *condattrp = NULL;
+-    int ret = 0;
+-
+-    ret = pthread_mutexattr_init(&mutexattr);
+-    if (ret == 0) {
+-	ret = pthread_mutexattr_setpshared(&mutexattr, PTHREAD_PROCESS_SHARED);
+-	mutexattrp = &mutexattr;
+-    }
+-
+-    if (ret == 0)
+-	ret = pthread_mutex_init(&mutex, mutexattrp);
+-    if (mutexattrp != NULL)
+-	pthread_mutexattr_destroy(mutexattrp);
+-    if (ret)
+-	return ret;
+-    (void) pthread_mutex_destroy(&mutex);
+-
+-    ret = pthread_condattr_init(&condattr);
+-    if (ret == 0) {
+-	ret = pthread_condattr_setpshared(&condattr, PTHREAD_PROCESS_SHARED);
+-	condattrp = &condattr;
+-    }
+-
+-    if (ret == 0)
+-	ret = pthread_cond_init(&cond, condattrp);
+-
+-    if (condattrp != NULL)
+-	(void)pthread_condattr_destroy(condattrp);
+-    if (ret == 0)
+-	(void) pthread_cond_destroy(&cond);
+-    return ret;
+-}
+-#endif
+-#endif
+-
+ #if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 5)
+ /**
+  * Is process/thread still alive?
+@@ -374,7 +323,7 @@
+  /* 4.1: dbenv->set_data_dir(???) */
+  /* 4.1: dbenv->set_encrypt(???) */
+ 
+-    dbenv->set_errcall(dbenv, rpmdb->db_errcall);
++    dbenv->set_errcall(dbenv, (void *)rpmdb->db_errcall);
+     dbenv->set_errfile(dbenv, rpmdb->db_errfile);
+     dbenv->set_errpfx(dbenv, rpmdb->db_errpfx);
+     /*@=noeffectuncon@*/
+@@ -425,6 +374,14 @@
+ #endif
+ 	xx = dbenv->set_verbose(dbenv, DB_VERB_WAITSFOR,
+ 		(dbi->dbi_verbose & DB_VERB_WAITSFOR));
++#if defined(DB_VERB_FILEOPS)
++	xx = dbenv->set_verbose(dbenv, DB_VERB_FILEOPS,
++		(dbi->dbi_verbose & DB_VERB_FILEOPS));
++#endif
++#if defined(DB_VERB_FILEOPS_ALL)
++	xx = dbenv->set_verbose(dbenv, DB_VERB_FILEOPS_ALL,
++		(dbi->dbi_verbose & DB_VERB_FILEOPS_ALL));
++#endif
+ 
+ 	if (dbi->dbi_mmapsize) {
+ 	    xx = dbenv->set_mp_mmapsize(dbenv, dbi->dbi_mmapsize);
+@@ -637,8 +594,13 @@
+ /*@-boundswrite@*/
+     if (dbcp) *dbcp = NULL;
+ /*@=boundswrite@*/
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 6)
++    rc = dbcursor->dup(dbcursor, dbcp, flags);
++    rc = cvtdberr(dbi, "dbcursor->dup", rc, _debug);
++#else
+     rc = dbcursor->c_dup(dbcursor, dbcp, flags);
+     rc = cvtdberr(dbi, "dbcursor->c_dup", rc, _debug);
++#endif
+     /*@-nullstate @*/ /* FIX: *dbcp can be NULL */
+     return rc;
+     /*@=nullstate @*/
+@@ -654,8 +616,13 @@
+ 
+     /* XXX db3copen error pathways come through here. */
+     if (dbcursor != NULL) {
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 6)
++	rc = dbcursor->close(dbcursor);
++	rc = cvtdberr(dbi, "dbcursor->close", rc, _debug);
++#else
+ 	rc = dbcursor->c_close(dbcursor);
+ 	rc = cvtdberr(dbi, "dbcursor->c_close", rc, _debug);
++#endif
+     }
+     return rc;
+ }
+@@ -704,8 +671,13 @@
+ 	rc = db->put(db, dbi->dbi_txnid, key, data, 0);
+ 	rc = cvtdberr(dbi, "db->put", rc, _debug);
+     } else {
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 6)
++	rc = dbcursor->put(dbcursor, key, data, DB_KEYLAST);
++	rc = cvtdberr(dbi, "dbcursor->put", rc, _debug);
++#else
+ 	rc = dbcursor->c_put(dbcursor, key, data, DB_KEYLAST);
+ 	rc = cvtdberr(dbi, "dbcursor->c_put", rc, _debug);
++#endif
+     }
+ 
+     return rc;
+@@ -728,14 +700,26 @@
+ 	int _printit;
+ 
+ 	/* XXX TODO: insure that cursor is positioned with duplicates */
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 6)
++	rc = dbcursor->get(dbcursor, key, data, DB_SET);
++	/* XXX DB_NOTFOUND can be returned */
++	_printit = (rc == DB_NOTFOUND ? 0 : _debug);
++	rc = cvtdberr(dbi, "dbcursor->get", rc, _printit);
++#else
+ 	rc = dbcursor->c_get(dbcursor, key, data, DB_SET);
+ 	/* XXX DB_NOTFOUND can be returned */
+ 	_printit = (rc == DB_NOTFOUND ? 0 : _debug);
+ 	rc = cvtdberr(dbi, "dbcursor->c_get", rc, _printit);
++#endif
+ 
+ 	if (rc == 0) {
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 6)
++	    rc = dbcursor->del(dbcursor, flags);
++	    rc = cvtdberr(dbi, "dbcursor->del", rc, _debug);
++#else
+ 	    rc = dbcursor->c_del(dbcursor, flags);
+ 	    rc = cvtdberr(dbi, "dbcursor->c_del", rc, _debug);
++#endif
+ 	}
+     }
+ 
+@@ -761,11 +745,19 @@
+ 	_printit = (rc == DB_NOTFOUND ? 0 : _debug);
+ 	rc = cvtdberr(dbi, "db->get", rc, _printit);
+     } else {
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 6)
++	/* XXX db3 does DB_FIRST on uninitialized cursor */
++	rc = dbcursor->get(dbcursor, key, data, flags);
++	/* XXX DB_NOTFOUND can be returned */
++	_printit = (rc == DB_NOTFOUND ? 0 : _debug);
++	rc = cvtdberr(dbi, "dbcursor->get", rc, _printit);
++#else
+ 	/* XXX db3 does DB_FIRST on uninitialized cursor */
+ 	rc = dbcursor->c_get(dbcursor, key, data, flags);
+ 	/* XXX DB_NOTFOUND can be returned */
+ 	_printit = (rc == DB_NOTFOUND ? 0 : _debug);
+ 	rc = cvtdberr(dbi, "dbcursor->c_get", rc, _printit);
++#endif
+     }
+ 
+     return rc;
+@@ -785,11 +777,19 @@
+     assert(db != NULL);
+     assert(dbcursor != NULL);
+ 
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 6)
++    /* XXX db3 does DB_FIRST on uninitialized cursor */
++    rc = dbcursor->pget(dbcursor, key, pkey, data, flags);
++    /* XXX DB_NOTFOUND can be returned */
++    _printit = (rc == DB_NOTFOUND ? 0 : _debug);
++    rc = cvtdberr(dbi, "dbcursor->pget", rc, _printit);
++#else
+     /* XXX db3 does DB_FIRST on uninitialized cursor */
+     rc = dbcursor->c_pget(dbcursor, key, pkey, data, flags);
+     /* XXX DB_NOTFOUND can be returned */
+     _printit = (rc == DB_NOTFOUND ? 0 : _debug);
+     rc = cvtdberr(dbi, "dbcursor->c_pget", rc, _printit);
++#endif
+ 
+     return rc;
+ }
+@@ -805,8 +805,13 @@
+     int rc = 0;
+ 
+     flags = 0;
++#if (DB_VERSION_MAJOR == 4 && DB_VERSION_MINOR >= 6)
++    rc = dbcursor->count(dbcursor, &count, flags);
++    rc = cvtdberr(dbi, "dbcursor->count", rc, _debug);
++#else
+     rc = dbcursor->c_count(dbcursor, &count, flags);
+     rc = cvtdberr(dbi, "dbcursor->c_count", rc, _debug);
++#endif
+     if (rc) return rc;
+ /*@-boundswrite@*/
+     if (countp) *countp = count;
+@@ -995,7 +1000,7 @@
+ 	if (rc || dbenv == NULL) goto exit;
+ 
+ 	/*@-noeffectuncon@*/ /* FIX: annotate db3 methods */
+-	dbenv->set_errcall(dbenv, rpmdb->db_errcall);
++	dbenv->set_errcall(dbenv, (void *)rpmdb->db_errcall);
+ 	dbenv->set_errfile(dbenv, rpmdb->db_errfile);
+ 	dbenv->set_errpfx(dbenv, rpmdb->db_errpfx);
+  /*	dbenv->set_paniccall(???) */
+@@ -1176,19 +1181,6 @@
+      */
+     if (dbi->dbi_use_dbenv) {
+ 
+-#if 0
+-#if HAVE_LIBPTHREAD
+-	if (rpmdb->db_dbenv == NULL) {
+-	    /* Set DB_PRIVATE if posix mutexes are not shared. */
+-	    xx = db3_pthread_nptl();
+-	    if (xx) {
+-		dbi->dbi_eflags |= DB_PRIVATE;
+-		rpmMessage(RPMMESS_DEBUG, _("unshared posix mutexes found(%d), adding DB_PRIVATE, using fcntl lock\n"), xx);
+-	    }
+-	}
+-#endif
+-#endif
+-
+ 	if (access(dbhome, W_OK) == -1) {
+ 
+ 	    /* dbhome is unwritable, don't attempt DB_CREATE on DB->open ... */
+Index: rpm/rpmdb/dbconfig.c
+RCS File: /v/rpm/cvs/rpm/rpmdb/dbconfig.c,v
+rcsdiff -q -kk '-r1.38' '-r1.38.2.1' -u '/v/rpm/cvs/rpm/rpmdb/dbconfig.c,v' 2>/dev/null
+--- dbconfig.c	2007/05/25 17:36:33	1.38
++++ dbconfig.c	2007/07/27 18:51:24	1.38.2.1
+@@ -109,11 +109,19 @@
+ 	NULL, NULL },
+  { "use_environ", 0,POPT_BIT_SET,	&db3dbi.dbi_eflags, DB_USE_ENVIRON,
+ 	NULL, NULL },
++#if defined(DB_IGNORE_LEASE)
++ { "ignore_lease", 0,POPT_BIT_SET,     &db3dbi.dbi_eflags, DB_IGNORE_LEASE,
++       NULL, NULL },
++#endif
+ 
+  { "txn_sync",	0,POPT_BIT_SET,	&db3dbi.dbi_tflags, DB_TXN_SYNC,
+ 	NULL, NULL },
+  { "txn_nowait",0,POPT_BIT_SET,	&db3dbi.dbi_tflags, DB_TXN_NOWAIT,
+ 	NULL, NULL },
++#if defined(DB_TXN_WAIT)
++ { "txn_wait",0,POPT_BIT_SET,  &db3dbi.dbi_tflags, DB_TXN_WAIT,
++       NULL, NULL },
++#endif
+ 
+ #if defined(NOTYET)
+ DB_AUTO_COMMIT
+@@ -274,6 +282,14 @@
+ #endif
+  { "waitsfor",	0,POPT_BIT_SET,	&db3dbi.dbi_verbose, DB_VERB_WAITSFOR,
+ 	NULL, NULL },
++#if defined(DB_VERB_FILEOPS)
++ { "fileops",   0,POPT_BIT_SET, &db3dbi.dbi_verbose, DB_VERB_FILEOPS,
++        NULL, NULL },
++#endif
++#if defined(DB_VERB_FILEOPS_ALL)
++ { "fileops_all",0,POPT_BIT_SET,&db3dbi.dbi_verbose, DB_VERB_FILEOPS_ALL,
++        NULL, NULL },
++#endif
+  { "verbose",	0,POPT_ARG_VAL,		&db3dbi.dbi_verbose, -1,
+ 	NULL, NULL },
+ 
+@@ -335,6 +351,11 @@
+ 	NULL, NULL },
+ 
+ /* XXX DB_ENV->set_timeout */
++#if defined(NOTYET)
++DB_SET_LOCK_TIMEOUT
++DB_SET_TXN_NOW
++DB_SET_TXN_TIMEOUT
++#endif
+ /* XXX DB_ENV->get_timeout */
+ 
+ /* ==== Logging: */
================================================================


More information about the pld-cvs-commit mailing list