diff --git a/.compat-db.metadata b/.compat-db.metadata new file mode 100644 index 0000000..8868d88 --- /dev/null +++ b/.compat-db.metadata @@ -0,0 +1 @@ +957c10358df1211e1dc37ea997aadef42117d6a5 SOURCES/db-4.7.25.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 0e7897f..0000000 --- a/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 - -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/LICENSE b/SOURCES/LICENSE new file mode 100644 index 0000000..d5a66e3 --- /dev/null +++ b/SOURCES/LICENSE @@ -0,0 +1,130 @@ +/*- + * $Id: LICENSE,v 12.9 2008/02/07 17:12:17 mark Exp $ + */ + +The following is the license that applies to this copy of the Berkeley DB +software. For a license to use the Berkeley DB software under conditions +other than those described here, or to purchase support for this software, +please contact Oracle at berkeleydb-info_us@oracle.com. + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +/* + * Copyright (c) 1990,2008 Oracle. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Redistributions in any form must be accompanied by information on + * how to obtain complete source code for the DB software and any + * accompanying software that uses the DB software. The source code + * must either be included in the distribution or be available for no + * more than the cost of distribution plus a nominal fee, and must be + * freely redistributable under reasonable conditions. For an + * executable file, complete source code means the source code for all + * modules it contains. It does not include source code for modules or + * files that typically accompany the major components of the operating + * system on which the executable file runs. + * + * THIS SOFTWARE IS PROVIDED BY ORACLE ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED + * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR + * NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL ORACLE BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +/* + * Copyright (c) 1990, 1993, 1994, 1995 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +/* + * Copyright (c) 1995, 1996 + * The President and Fellows of Harvard University. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY HARVARD AND ITS CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL HARVARD OR ITS CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +/*** + * ASM: a very small and fast Java bytecode manipulation framework + * Copyright (c) 2000-2005 INRIA, France Telecom + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the copyright holders nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ diff --git a/SOURCES/db-4.5.20-sparc64.patch b/SOURCES/db-4.5.20-sparc64.patch new file mode 100644 index 0000000..016d361 --- /dev/null +++ b/SOURCES/db-4.5.20-sparc64.patch @@ -0,0 +1,18 @@ +--- db-4.5.20/dist/configure.ac.BAD 2006-07-13 17:59:04.000000000 -0400 ++++ db-4.5.20/dist/configure.ac 2006-07-13 17:59:32.000000000 -0400 +@@ -291,11 +291,11 @@ + INSTALLER="\$(LIBTOOL) --mode=install cp -p" + + MAKEFILE_CC="\$(LIBTOOL) --mode=compile ${MAKEFILE_CC}" +-MAKEFILE_SOLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CCLINK} -avoid-version" +-MAKEFILE_CCLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CCLINK}" ++MAKEFILE_SOLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CCLINK} ${CFLAGS} -avoid-version" ++MAKEFILE_CCLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CCLINK} ${CFLAGS}" + MAKEFILE_CXX="\$(LIBTOOL) --mode=compile ${MAKEFILE_CXX}" +-MAKEFILE_XSOLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CXXLINK} -avoid-version" +-MAKEFILE_CXXLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CXXLINK}" ++MAKEFILE_XSOLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CXXLINK} ${CFLAGS} -avoid-version" ++MAKEFILE_CXXLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CXXLINK} ${CFLAGS}" + + LIBTOOL="\$(SHELL) ./libtool" + diff --git a/SOURCES/db-4.6.21-1.85-compat.patch b/SOURCES/db-4.6.21-1.85-compat.patch new file mode 100644 index 0000000..c65b6ac --- /dev/null +++ b/SOURCES/db-4.6.21-1.85-compat.patch @@ -0,0 +1,14 @@ +diff -ur db-4.6.21/dist/Makefile.in db-4.6.21-db.h_include-patched/dist/Makefile.in +--- db-4.6.21/dist/Makefile.in 2007-07-05 18:35:02.000000000 +0000 ++++ db-4.6.21-db.h_include-patched/dist/Makefile.in 2008-09-05 08:59:36.000000000 +0000 +@@ -139,8 +139,8 @@ + # local libraries, for example. Do that by adding -I options to the DB185INC + # line, and -l options to the DB185LIB line. + ################################################## +-DB185INC= -c @CFLAGS@ -I$(srcdir) @CPPFLAGS@ +-DB185LIB= ++DB185INC= -c @CFLAGS@ -I$(srcdir) -I$(srcdir)/db.1.85/PORT/linux/include @CPPFLAGS@ ++DB185LIB= ${srcdir}/db.1.85/PORT/linux/libdb.a + + ################################################## + # NOTHING BELOW THIS LINE SHOULD EVER NEED TO BE MODIFIED. diff --git a/SOURCES/patch.4.7.25.1 b/SOURCES/patch.4.7.25.1 new file mode 100644 index 0000000..0d258ed --- /dev/null +++ b/SOURCES/patch.4.7.25.1 @@ -0,0 +1,75 @@ +*** sequence/sequence.c.orig 2008-05-05 13:25:09.000000000 -0700 +--- sequence/sequence.c 2008-08-15 09:58:46.000000000 -0700 +*************** +*** 187,193 **** + if ((ret = __db_get_flags(dbp, &tflags)) != 0) + goto err; + +! if (DB_IS_READONLY(dbp)) { + ret = __db_rdonly(dbp->env, "DB_SEQUENCE->open"); + goto err; + } +--- 187,197 ---- + if ((ret = __db_get_flags(dbp, &tflags)) != 0) + goto err; + +! /* +! * We can let replication clients open sequences, but must +! * check later that they do not update them. +! */ +! if (F_ISSET(dbp, DB_AM_RDONLY)) { + ret = __db_rdonly(dbp->env, "DB_SEQUENCE->open"); + goto err; + } +*************** +*** 244,249 **** +--- 248,258 ---- + if ((ret != DB_NOTFOUND && ret != DB_KEYEMPTY) || + !LF_ISSET(DB_CREATE)) + goto err; ++ if (IS_REP_CLIENT(env) && ++ !F_ISSET(dbp, DB_AM_NOT_DURABLE)) { ++ ret = __db_rdonly(env, "DB_SEQUENCE->open"); ++ goto err; ++ } + ret = 0; + + rp = &seq->seq_record; +*************** +*** 296,302 **** + */ + rp = seq->seq_data.data; + if (rp->seq_version == DB_SEQUENCE_OLDVER) { +! oldver: rp->seq_version = DB_SEQUENCE_VERSION; + if (!F_ISSET(env, ENV_LITTLEENDIAN)) { + if (IS_DB_AUTO_COMMIT(dbp, txn)) { + if ((ret = +--- 305,316 ---- + */ + rp = seq->seq_data.data; + if (rp->seq_version == DB_SEQUENCE_OLDVER) { +! oldver: if (IS_REP_CLIENT(env) && +! !F_ISSET(dbp, DB_AM_NOT_DURABLE)) { +! ret = __db_rdonly(env, "DB_SEQUENCE->open"); +! goto err; +! } +! rp->seq_version = DB_SEQUENCE_VERSION; + if (!F_ISSET(env, ENV_LITTLEENDIAN)) { + if (IS_DB_AUTO_COMMIT(dbp, txn)) { + if ((ret = +*************** +*** 707,712 **** +--- 721,733 ---- + + MUTEX_LOCK(env, seq->mtx_seq); + ++ if (handle_check && IS_REP_CLIENT(env) && ++ !F_ISSET(dbp, DB_AM_NOT_DURABLE)) { ++ ret = __db_rdonly(env, "DB_SEQUENCE->get"); ++ goto err; ++ } ++ ++ + if (rp->seq_min + delta > rp->seq_max) { + __db_errx(env, "Sequence overflow"); + ret = EINVAL; diff --git a/SOURCES/patch.4.7.25.2 b/SOURCES/patch.4.7.25.2 new file mode 100644 index 0000000..2e4a7ec --- /dev/null +++ b/SOURCES/patch.4.7.25.2 @@ -0,0 +1,71 @@ +Index: lock/lock.c +=================================================================== +RCS file: /a/CVSROOT/db/lock/lock.c,v +retrieving revision 12.61 +diff -c -r12.61 lock.c +*** lock/lock.c 22 Jul 2008 12:08:53 -0000 12.61 +--- lock/lock.c 19 Aug 2008 17:28:24 -0000 +*************** +*** 1278,1287 **** + SH_TAILQ_REMOVE( + <->obj_tab[obj_ndx], sh_obj, links, __db_lockobj); + if (sh_obj->lockobj.size > sizeof(sh_obj->objdata)) { +! LOCK_REGION_LOCK(env); + __env_alloc_free(<->reginfo, + SH_DBT_PTR(&sh_obj->lockobj)); +! LOCK_REGION_UNLOCK(env); + } + SH_TAILQ_INSERT_HEAD( + &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj); +--- 1278,1289 ---- + SH_TAILQ_REMOVE( + <->obj_tab[obj_ndx], sh_obj, links, __db_lockobj); + if (sh_obj->lockobj.size > sizeof(sh_obj->objdata)) { +! if (region->part_t_size != 1) +! LOCK_REGION_LOCK(env); + __env_alloc_free(<->reginfo, + SH_DBT_PTR(&sh_obj->lockobj)); +! if (region->part_t_size != 1) +! LOCK_REGION_UNLOCK(env); + } + SH_TAILQ_INSERT_HEAD( + &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj); +*************** +*** 1470,1484 **** + if (obj->size <= sizeof(sh_obj->objdata)) + p = sh_obj->objdata; + else { +! LOCK_REGION_LOCK(env); + if ((ret = + __env_alloc(<->reginfo, obj->size, &p)) != 0) { + __db_errx(env, + "No space for lock object storage"); +! LOCK_REGION_UNLOCK(env); + goto err; + } +! LOCK_REGION_UNLOCK(env); + } + + memcpy(p, obj->data, obj->size); +--- 1472,1492 ---- + if (obj->size <= sizeof(sh_obj->objdata)) + p = sh_obj->objdata; + else { +! /* +! * If we have only one partition, the region is locked. +! */ +! if (region->part_t_size != 1) +! LOCK_REGION_LOCK(env); + if ((ret = + __env_alloc(<->reginfo, obj->size, &p)) != 0) { + __db_errx(env, + "No space for lock object storage"); +! if (region->part_t_size != 1) +! LOCK_REGION_UNLOCK(env); + goto err; + } +! if (region->part_t_size != 1) +! LOCK_REGION_UNLOCK(env); + } + + memcpy(p, obj->data, obj->size); diff --git a/SOURCES/patch.4.7.25.3 b/SOURCES/patch.4.7.25.3 new file mode 100644 index 0000000..316d615 --- /dev/null +++ b/SOURCES/patch.4.7.25.3 @@ -0,0 +1,314 @@ +*** lock/lock_deadlock.c 2008-03-11 00:31:33.000000000 +1100 +--- lock/lock_deadlock.c 2008-12-16 21:54:18.000000000 +1100 +*************** +*** 121,127 **** + DB_LOCKTAB *lt; + db_timespec now; + locker_info *idmap; +! u_int32_t *bitmap, *copymap, **deadp, **free_me, *tmpmap; + u_int32_t i, cid, keeper, killid, limit, nalloc, nlockers; + u_int32_t lock_max, txn_max; + int ret, status; +--- 121,127 ---- + DB_LOCKTAB *lt; + db_timespec now; + locker_info *idmap; +! u_int32_t *bitmap, *copymap, **deadp, **deadlist, *tmpmap; + u_int32_t i, cid, keeper, killid, limit, nalloc, nlockers; + u_int32_t lock_max, txn_max; + int ret, status; +*************** +*** 133,139 **** + if (IS_REP_CLIENT(env)) + atype = DB_LOCK_MINWRITE; + +! free_me = NULL; + + lt = env->lk_handle; + if (rejectp != NULL) +--- 133,140 ---- + if (IS_REP_CLIENT(env)) + atype = DB_LOCK_MINWRITE; + +! copymap = tmpmap = NULL; +! deadlist = NULL; + + lt = env->lk_handle; + if (rejectp != NULL) +*************** +*** 179,189 **** + memcpy(copymap, bitmap, nlockers * sizeof(u_int32_t) * nalloc); + + if ((ret = __os_calloc(env, sizeof(u_int32_t), nalloc, &tmpmap)) != 0) +! goto err1; + + /* Find a deadlock. */ + if ((ret = +! __dd_find(env, bitmap, idmap, nlockers, nalloc, &deadp)) != 0) + return (ret); + + /* +--- 180,190 ---- + memcpy(copymap, bitmap, nlockers * sizeof(u_int32_t) * nalloc); + + if ((ret = __os_calloc(env, sizeof(u_int32_t), nalloc, &tmpmap)) != 0) +! goto err; + + /* Find a deadlock. */ + if ((ret = +! __dd_find(env, bitmap, idmap, nlockers, nalloc, &deadlist)) != 0) + return (ret); + + /* +*************** +*** 204,211 **** + txn_max = TXN_MAXIMUM; + + killid = BAD_KILLID; +! free_me = deadp; +! for (; *deadp != NULL; deadp++) { + if (rejectp != NULL) + ++*rejectp; + killid = (u_int32_t)(*deadp - bitmap) / nalloc; +--- 205,211 ---- + txn_max = TXN_MAXIMUM; + + killid = BAD_KILLID; +! for (deadp = deadlist; *deadp != NULL; deadp++) { + if (rejectp != NULL) + ++*rejectp; + killid = (u_int32_t)(*deadp - bitmap) / nalloc; +*************** +*** 342,352 **** + __db_msg(env, + "Aborting locker %lx", (u_long)idmap[killid].id); + } +! __os_free(env, tmpmap); +! err1: __os_free(env, copymap); +! +! err: if (free_me != NULL) +! __os_free(env, free_me); + __os_free(env, bitmap); + __os_free(env, idmap); + +--- 342,353 ---- + __db_msg(env, + "Aborting locker %lx", (u_long)idmap[killid].id); + } +! err: if(copymap != NULL) +! __os_free(env, copymap); +! if (deadlist != NULL) +! __os_free(env, deadlist); +! if(tmpmap != NULL) +! __os_free(env, tmpmap); + __os_free(env, bitmap); + __os_free(env, idmap); + +*************** +*** 360,365 **** +--- 361,377 ---- + + #define DD_INVALID_ID ((u_int32_t) -1) + ++ /* ++ * __dd_build -- ++ * Build the lock dependency bit maps. ++ * Notes on syncronization: ++ * LOCK_SYSTEM_LOCK is used to hold objects locked when we have ++ * a single partition. ++ * LOCK_LOCKERS is held while we are walking the lockers list and ++ * to single thread the use of lockerp->dd_id. ++ * LOCK_DD protects the DD list of objects. ++ */ ++ + static int + __dd_build(env, atype, bmp, nlockers, allocp, idmap, rejectp) + ENV *env; +*************** +*** 393,398 **** +--- 405,411 ---- + * In particular we do not build the conflict array and our caller + * needs to expect this. + */ ++ LOCK_SYSTEM_LOCK(lt, region); + if (atype == DB_LOCK_EXPIRE) { + skip: LOCK_DD(env, region); + op = SH_TAILQ_FIRST(®ion->dd_objs, __db_lockobj); +*************** +*** 430,446 **** + OBJECT_UNLOCK(lt, region, indx); + } + UNLOCK_DD(env, region); + goto done; + } + + /* +! * We'll check how many lockers there are, add a few more in for +! * good measure and then allocate all the structures. Then we'll +! * verify that we have enough room when we go back in and get the +! * mutex the second time. + */ +! retry: count = region->stat.st_nlockers; + if (count == 0) { + *nlockers = 0; + return (0); + } +--- 443,460 ---- + OBJECT_UNLOCK(lt, region, indx); + } + UNLOCK_DD(env, region); ++ LOCK_SYSTEM_UNLOCK(lt, region); + goto done; + } + + /* +! * Allocate after locking the region +! * to make sure the structures are large enough. + */ +! LOCK_LOCKERS(env, region); +! count = region->stat.st_nlockers; + if (count == 0) { ++ UNLOCK_LOCKERS(env, region); + *nlockers = 0; + return (0); + } +*************** +*** 448,497 **** + if (FLD_ISSET(env->dbenv->verbose, DB_VERB_DEADLOCK)) + __db_msg(env, "%lu lockers", (u_long)count); + +- count += 20; + nentries = (u_int32_t)DB_ALIGN(count, 32) / 32; + +! /* +! * Allocate enough space for a count by count bitmap matrix. +! * +! * XXX +! * We can probably save the malloc's between iterations just +! * reallocing if necessary because count grew by too much. +! */ + if ((ret = __os_calloc(env, (size_t)count, +! sizeof(u_int32_t) * nentries, &bitmap)) != 0) + return (ret); + + if ((ret = __os_calloc(env, + sizeof(u_int32_t), nentries, &tmpmap)) != 0) { + __os_free(env, bitmap); + return (ret); + } + + if ((ret = __os_calloc(env, + (size_t)count, sizeof(locker_info), &id_array)) != 0) { + __os_free(env, bitmap); + __os_free(env, tmpmap); + return (ret); + } + + /* +- * Now go back in and actually fill in the matrix. +- */ +- if (region->stat.st_nlockers > count) { +- __os_free(env, bitmap); +- __os_free(env, tmpmap); +- __os_free(env, id_array); +- goto retry; +- } +- +- /* + * First we go through and assign each locker a deadlock detector id. + */ + id = 0; +- LOCK_LOCKERS(env, region); + SH_TAILQ_FOREACH(lip, ®ion->lockers, ulinks, __db_locker) { + if (lip->master_locker == INVALID_ROFF) { + lip->dd_id = id++; + id_array[lip->dd_id].id = lip->id; + switch (atype) { +--- 462,498 ---- + if (FLD_ISSET(env->dbenv->verbose, DB_VERB_DEADLOCK)) + __db_msg(env, "%lu lockers", (u_long)count); + + nentries = (u_int32_t)DB_ALIGN(count, 32) / 32; + +! /* Allocate enough space for a count by count bitmap matrix. */ + if ((ret = __os_calloc(env, (size_t)count, +! sizeof(u_int32_t) * nentries, &bitmap)) != 0) { +! UNLOCK_LOCKERS(env, region); + return (ret); ++ } + + if ((ret = __os_calloc(env, + sizeof(u_int32_t), nentries, &tmpmap)) != 0) { ++ UNLOCK_LOCKERS(env, region); + __os_free(env, bitmap); + return (ret); + } + + if ((ret = __os_calloc(env, + (size_t)count, sizeof(locker_info), &id_array)) != 0) { ++ UNLOCK_LOCKERS(env, region); + __os_free(env, bitmap); + __os_free(env, tmpmap); + return (ret); + } + + /* + * First we go through and assign each locker a deadlock detector id. + */ + id = 0; + SH_TAILQ_FOREACH(lip, ®ion->lockers, ulinks, __db_locker) { + if (lip->master_locker == INVALID_ROFF) { ++ DB_ASSERT(env, id < count); + lip->dd_id = id++; + id_array[lip->dd_id].id = lip->id; + switch (atype) { +*************** +*** 510,516 **** + lip->dd_id = DD_INVALID_ID; + + } +- UNLOCK_LOCKERS(env, region); + + /* + * We only need consider objects that have waiters, so we use +--- 511,516 ---- +*************** +*** 669,675 **** + * status after building the bit maps so that we will not detect + * a blocked transaction without noting that it is already aborting. + */ +- LOCK_LOCKERS(env, region); + for (id = 0; id < count; id++) { + if (!id_array[id].valid) + continue; +--- 669,674 ---- +*************** +*** 738,743 **** +--- 737,743 ---- + id_array[id].in_abort = 1; + } + UNLOCK_LOCKERS(env, region); ++ LOCK_SYSTEM_UNLOCK(lt, region); + + /* + * Now we can release everything except the bitmap matrix that we +*************** +*** 839,844 **** +--- 839,845 ---- + ret = 0; + + /* We must lock so this locker cannot go away while we abort it. */ ++ LOCK_SYSTEM_LOCK(lt, region); + LOCK_LOCKERS(env, region); + + /* +*************** +*** 895,900 **** +--- 896,902 ---- + done: OBJECT_UNLOCK(lt, region, info->last_ndx); + err: + out: UNLOCK_LOCKERS(env, region); ++ LOCK_SYSTEM_UNLOCK(lt, region); + return (ret); + } + diff --git a/SOURCES/patch.4.7.25.4 b/SOURCES/patch.4.7.25.4 new file mode 100644 index 0000000..d81a2cc --- /dev/null +++ b/SOURCES/patch.4.7.25.4 @@ -0,0 +1,183 @@ +*** cvotn/dbinc/repmgr.h.orig 2009-05-04 10:33:55.000000000 -0400 +--- cvotn/dbinc/repmgr.h 2009-05-04 10:27:26.000000000 -0400 +*************** +*** 374,379 **** +--- 374,380 ---- + #define SITE_FROM_EID(eid) (&db_rep->sites[eid]) + #define EID_FROM_SITE(s) ((int)((s) - (&db_rep->sites[0]))) + #define IS_VALID_EID(e) ((e) >= 0) ++ #define IS_KNOWN_REMOTE_SITE(e) ((e) >= 0 && ((u_int)(e)) < db_rep->site_cnt) + #define SELF_EID INT_MAX + + #define IS_PEER_POLICY(p) ((p) == DB_REPMGR_ACKS_ALL_PEERS || \ +*** cvotn/rep/rep_elect.c.orig 2009-05-04 10:35:50.000000000 -0400 +--- cvotn/rep/rep_elect.c 2009-05-04 10:31:24.000000000 -0400 +*************** +*** 33,39 **** + static int __rep_fire_elected __P((ENV *, REP *, u_int32_t)); + static void __rep_elect_master __P((ENV *, REP *)); + static int __rep_tally __P((ENV *, REP *, int, u_int32_t *, u_int32_t, roff_t)); +! static int __rep_wait __P((ENV *, db_timeout_t *, int *, int, u_int32_t)); + + /* + * __rep_elect -- +--- 33,39 ---- + static int __rep_fire_elected __P((ENV *, REP *, u_int32_t)); + static void __rep_elect_master __P((ENV *, REP *)); + static int __rep_tally __P((ENV *, REP *, int, u_int32_t *, u_int32_t, roff_t)); +! static int __rep_wait __P((ENV *, db_timeout_t *, int, u_int32_t)); + + /* + * __rep_elect -- +*************** +*** 55,61 **** + ENV *env; + LOG *lp; + REP *rep; +! int done, eid, elected, full_elect, locked, in_progress, need_req; + int ret, send_vote, t_ret; + u_int32_t ack, ctlflags, egen, nsites, orig_tally, priority, realpri; + u_int32_t tiebreaker; +--- 55,61 ---- + ENV *env; + LOG *lp; + REP *rep; +! int done, elected, full_elect, locked, in_progress, need_req; + int ret, send_vote, t_ret; + u_int32_t ack, ctlflags, egen, nsites, orig_tally, priority, realpri; + u_int32_t tiebreaker; +*************** +*** 181,188 **** + REP_SYSTEM_UNLOCK(env); + (void)__rep_send_message(env, DB_EID_BROADCAST, + REP_MASTER_REQ, NULL, NULL, 0, 0); +! ret = __rep_wait(env, &to, &eid, +! 0, REP_F_EPHASE0); + REP_SYSTEM_LOCK(env); + F_CLR(rep, REP_F_EPHASE0); + switch (ret) { +--- 181,187 ---- + REP_SYSTEM_UNLOCK(env); + (void)__rep_send_message(env, DB_EID_BROADCAST, + REP_MASTER_REQ, NULL, NULL, 0, 0); +! ret = __rep_wait(env, &to, 0, REP_F_EPHASE0); + REP_SYSTEM_LOCK(env); + F_CLR(rep, REP_F_EPHASE0); + switch (ret) { +*************** +*** 286,296 **** + REP_SYSTEM_LOCK(env); + goto vote; + } +! ret = __rep_wait(env, &to, &eid, full_elect, REP_F_EPHASE1); + switch (ret) { + case 0: + /* Check if election complete or phase complete. */ +! if (eid != DB_EID_INVALID && !IN_ELECTION(rep)) { + RPRINT(env, DB_VERB_REP_ELECT, + (env, "Ended election phase 1")); + goto edone; +--- 285,295 ---- + REP_SYSTEM_LOCK(env); + goto vote; + } +! ret = __rep_wait(env, &to, full_elect, REP_F_EPHASE1); + switch (ret) { + case 0: + /* Check if election complete or phase complete. */ +! if (!IN_ELECTION(rep)) { + RPRINT(env, DB_VERB_REP_ELECT, + (env, "Ended election phase 1")); + goto edone; +*************** +*** 398,412 **** + REP_SYSTEM_LOCK(env); + goto i_won; + } +! ret = __rep_wait(env, &to, &eid, full_elect, REP_F_EPHASE2); + RPRINT(env, DB_VERB_REP_ELECT, + (env, "Ended election phase 2 %d", ret)); + switch (ret) { + case 0: +! if (eid != DB_EID_INVALID) +! goto edone; +! ret = DB_REP_UNAVAIL; +! break; + case DB_REP_EGENCHG: + if (to > timeout) + to = timeout; +--- 397,408 ---- + REP_SYSTEM_LOCK(env); + goto i_won; + } +! ret = __rep_wait(env, &to, full_elect, REP_F_EPHASE2); + RPRINT(env, DB_VERB_REP_ELECT, + (env, "Ended election phase 2 %d", ret)); + switch (ret) { + case 0: +! goto edone; + case DB_REP_EGENCHG: + if (to > timeout) + to = timeout; +*************** +*** 1050,1062 **** + ENV *env; + REP *rep; + { +- /* +- * We often come through here twice, sometimes even more. We mustn't +- * let the redundant calls affect stats counting. But rep_elect relies +- * on this first part for setting eidp. +- */ +- rep->master_id = rep->eid; +- + if (F_ISSET(rep, REP_F_MASTERELECT | REP_F_MASTER)) { + /* We've been through here already; avoid double counting. */ + return; +--- 1046,1051 ---- +*************** +*** 1093,1102 **** + (timeout > 5000000) ? 500000 : ((timeout >= 10) ? timeout / 10 : 1); + + static int +! __rep_wait(env, timeoutp, eidp, full_elect, flags) + ENV *env; + db_timeout_t *timeoutp; +! int *eidp, full_elect; + u_int32_t flags; + { + DB_REP *db_rep; +--- 1082,1091 ---- + (timeout > 5000000) ? 500000 : ((timeout >= 10) ? timeout / 10 : 1); + + static int +! __rep_wait(env, timeoutp, full_elect, flags) + ENV *env; + db_timeout_t *timeoutp; +! int full_elect; + u_int32_t flags; + { + DB_REP *db_rep; +*************** +*** 1174,1180 **** + F_CLR(rep, REP_F_EGENUPDATE); + ret = DB_REP_EGENCHG; + } else if (phase_over) { +- *eidp = rep->master_id; + done = 1; + ret = 0; + } +--- 1163,1168 ---- +*** cvotn/repmgr/repmgr_net.c.orig 2009-05-04 10:34:46.000000000 -0400 +--- cvotn/repmgr/repmgr_net.c 2009-05-04 10:27:26.000000000 -0400 +*************** +*** 100,105 **** +--- 100,107 ---- + control, rec, &nsites_sent, &npeers_sent)) != 0) + goto out; + } else { ++ DB_ASSERT(env, IS_KNOWN_REMOTE_SITE(eid)); ++ + /* + * If this is a request that can be sent anywhere, then see if + * we can send it to our peer (to save load on the master), but diff --git a/SPECS/compat-db.spec b/SPECS/compat-db.spec new file mode 100644 index 0000000..869f3ff --- /dev/null +++ b/SPECS/compat-db.spec @@ -0,0 +1,511 @@ +%define db47_version 4.7.25 +%define db4_versions %{db47_version} +%define main_version %{db47_version} + +%define _libdb_a libdb-${soversion}.a +%define _libcxx_a libdb_cxx-${soversion}.a + +Summary: The Berkeley DB database compatibility library +Name: compat-db +Version: %{main_version} +Release: 25%{?dist} +Source0: http://download.oracle.com/berkeley-db/db-%{db47_version}.tar.gz +# license text extracted from tarball +Source1: LICENSE + +Patch3: db-4.5.20-sparc64.patch +Patch5: db-4.6.21-1.85-compat.patch + +# Upstream db-4.7.25 patches +Patch50: http://www.oracle.com/technology/products/berkeley-db/db/update/%{db47_version}/patch.4.7.25.1 +Patch51: http://www.oracle.com/technology/products/berkeley-db/db/update/%{db47_version}/patch.4.7.25.2 +Patch52: http://www.oracle.com/technology/products/berkeley-db/db/update/%{db47_version}/patch.4.7.25.3 +Patch53: http://www.oracle.com/technology/products/berkeley-db/db/update/%{db47_version}/patch.4.7.25.4 + + +URL: http://www.oracle.com/database/berkeley-db/ +License: BSD +Group: System Environment/Libraries +BuildRequires: findutils, libtool, perl, sed, ed +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Requires: compat-db47%{?_isa} = %{db47_version}-%{release} + +%description +The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides +embedded database support for both traditional and client/server applications. +This package contains various versions of Berkeley DB which were included in +previous releases of Red Hat Linux. + +%package -n compat-db-headers +Summary: The Berkeley DB database compatibility headers +Group: System Environment/Libraries +BuildArch: noarch +Obsoletes: db4 < 4.7, db4-devel < 4.7, db4-utils < 4.7, db4-tcl < 4.7, db4-java < 4.7 + +%description -n compat-db-headers +The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides +embedded database support for both traditional and client/server applications. +This package contains Berkeley DB library headers used for compatibility. + +%package -n compat-db47 +Summary: The Berkeley DB database %{db47_version} compatibility library +Group: System Environment/Libraries +Requires: compat-db-headers = %{main_version}-%{release} +Version: %{db47_version} +Obsoletes: db1, db1-devel +Obsoletes: db2, db2-devel, db2-utils +Obsoletes: db3, db3-devel, db3-utils +Obsoletes: db31, db32, db3x +Obsoletes: db4 < 4.7, db4-devel < 4.7, db4-utils < 4.7, db4-tcl < 4.7, db4-java < 4.7 +Obsoletes: compat-db < 4.6.21-5 + +%description -n compat-db47 +The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides +embedded database support for both traditional and client/server applications. +This package contains Berkeley DB library version %{db47_version} used for compatibility. + +%prep +%setup -q -c + +pushd db-%{db47_version} +%patch50 -p0 -b .sequence +%patch51 -p0 -b .deadlock +%patch52 -p0 -b .dd-segfaults +%patch53 -p1 -b .java-api +%patch3 -p1 -b .sparc64 +%patch5 -p1 -b .compat +popd + +mkdir docs +for version in %{db4_versions} ; do + mkdir docs/db-${version} + install -m644 db*${version}/{README,LICENSE} docs/db-${version} +done +cp %{SOURCE1} . + +%build +export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing" +for version in %{db4_versions} ; do + pushd db-${version}/dist + ./s_config + + # update gnu-config files for aarch64 + chmod 644 config.{guess,sub} + cp /usr/lib/rpm/redhat/config.{guess,sub} . + + mkdir build_unix + cd build_unix + ln -s ../configure + %configure --prefix=%{_prefix} \ + --enable-compat185 \ + --enable-shared --disable-static \ + --enable-rpc \ + --enable-cxx + soversion=`echo ${version} | cut -f1,2 -d.` + make libdb=%{_libdb_a} libcxx=%{_libcxx_a} %{?_smp_mflags} + popd +done + +# remove dangling tags symlink from examples. +rm -f examples_cxx/tags +rm -f examples_c/tags + +%install +rm -rf ${RPM_BUILD_ROOT} +mkdir -p ${RPM_BUILD_ROOT}%{_bindir} +mkdir -p ${RPM_BUILD_ROOT}%{_libdir} + +for version in %{db4_versions} ; do + pushd db-${version}/dist/build_unix + %makeinstall libdb=%{_libdb_a} libcxx=%{_libcxx_a} + # Move headers to special directory to avoid conflicts + mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/db${version} + mv db.h db_185.h db_cxx.h ${RPM_BUILD_ROOT}%{_includedir}/db${version} + # Rename the utilities. + major=`echo ${version} | cut -c1,3` + for bin in ${RPM_BUILD_ROOT}%{_bindir}/*db_* ; do + t=`echo ${bin} | sed "s,db_,db${major}_,g"` + mv ${bin} ${t} + done + popd +done + +# Nuke non-versioned symlinks and headers +rm -f ${RPM_BUILD_ROOT}%{_libdir}/libdb-4.so \ +${RPM_BUILD_ROOT}%{_libdir}/libdb.so \ +${RPM_BUILD_ROOT}%{_libdir}/libdb_cxx-4.so \ +${RPM_BUILD_ROOT}%{_libdir}/libdb_cxx.so \ +${RPM_BUILD_ROOT}%{_includedir}/db.h \ +${RPM_BUILD_ROOT}%{_includedir}/db_185.h \ +${RPM_BUILD_ROOT}%{_includedir}/db_cxx.h + + +# Make sure all shared libraries have the execute bit set. +chmod 755 ${RPM_BUILD_ROOT}%{_libdir}/libdb*.so* + +# XXX Avoid Permission denied. strip when building as non-root. +chmod u+w ${RPM_BUILD_ROOT}%{_bindir} ${RPM_BUILD_ROOT}%{_bindir}/* + +# Make %{_libdir}/db/libdb.so symlinks to ease detection for autofoo +for version in %{db4_versions} ; do + mkdir -p ${RPM_BUILD_ROOT}/%{_libdir}/db${version} + pushd ${RPM_BUILD_ROOT}/%{_libdir}/db${version} + ln -s ../libdb-`echo ${version} | cut -b 1-3`.so libdb.so + ln -s ../libdb_cxx-`echo ${version} | cut -b 1-3`.so libdb_cxx.so + popd +done + +# Remove unpackaged files. +rm -fr ${RPM_BUILD_ROOT}%{_libdir}/*.la +rm -fr ${RPM_BUILD_ROOT}%{_prefix}/docs/ + +%clean +rm -rf ${RPM_BUILD_ROOT} + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root) + +%files -n compat-db-headers +%defattr(-,root,root) +%doc LICENSE +%{_includedir}/db%{db47_version} + +%files -n compat-db47 +%defattr(-,root,root) +%doc docs/db-%{db47_version} +%{_bindir}/db47* +%{_bindir}/berkeley_db47_svc +%{_libdir}/libdb-4.7.so +%{_libdir}/libdb_cxx-4.7.so +%{_libdir}/db%{db47_version} + +%changelog +* Tue Nov 05 2013 Jan Stanek - 4.7.25-25 +- Fixing forgotten dangling symlinks. + +* Tue Nov 05 2013 Jan Stanek - 4.7.25-24 +- Moved libraries from /lib to /usr/lib based on rpmdiff testing. + +* Tue Nov 05 2013 Jan Stanek - 4.7.25-23 +- Updated the config files for aarch64 architecture (#1023784) + +* Thu Jul 25 2013 Jan Stanek - 4.7.25-22 +- Removed older versions of compat-db (4.5.x, 4.6.x) (#985125) +- Cleaned the specfile + +* Wed Jul 18 2012 Fedora Release Engineering - 4.7.25-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Thu Jan 12 2012 Fedora Release Engineering - 4.7.25-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Feb 08 2011 Fedora Release Engineering - 4.7.25-19 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Aug 26 2010 Jindrich Novy 4.7.25-18 +- really fix the update path (#627019, #627387) +- introduce -headers subpackage to avoid conflicts on multiarch + systems (#590973) +- install package license + +* Wed Aug 25 2010 Jochen Schmitt 4.7.25-17 +- Fix broken update path (#627019) + +* Fri Aug 20 2010 Jindrich Novy 4.7.25-16 +- bump release to conserve upgrade path + +* Fri Jun 18 2010 Jindrich Novy 4.7.25-3 +- pull in correct compat-dbs on multiarch systems +- add -fno-strict-aliasing + +* Mon Jan 11 2010 Jindrich Novy 4.7.25-2 +- readd compatibility patch +- define default file attributes + +* Wed Nov 18 2009 Jindrich Novy 4.7.25-1 +- add 4.7.25 to compat-db + +* Thu Sep 10 2009 Jindrich Novy 4.6.21-6 +- remove libtool hacks so that compat-db builds again +- remove support for old BDBs: 4.3.29, 4.2.52, 4.1.25 + +* Fri Jul 24 2009 Fedora Release Engineering - 4.6.21-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Tue Feb 24 2009 Fedora Release Engineering - 4.6.21-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Dec 23 2008 Jindrich Novy 4.6.21-7 +- replication clients should be able to open a sequence (upstream bz#16406) + +* Wed Nov 12 2008 Jindrich Novy 4.6.21-6 +- add old BDBs 4.3.29, 4.2.52, 4.1.25 for third party software compatibility + +* Fri Oct 24 2008 Jindrich Novy 4.6.21-5 +- drop support for 4.3.29 +- split compat-db to compat-db45 and compat-db46 subpackages + to avoid dependency bloat (#459710) + +* Tue Sep 16 2008 Jindrich Novy 4.6.21-4 +- build also if db4 is not installed (thanks to Michael A. Peters) + +* Sat Aug 02 2008 Jindrich Novy 4.6.21-3 +- fix URL to 4.3.29 patch +- official upstream tarball for db-4.3.29 has changed, the only change + is in license text that allows dual licensing of skiplist.[ch] from + LGPL to BSD + +* Fri Jul 11 2008 Panu Matilainen 4.6.21-2 +- fix broken devel library symlinks + +* Wed Jul 09 2008 Jindrich Novy 4.6.21-1 +- move db-4.6.21 to compat-db (#449741) +- remove db-4.2.52 +- package db46_codegen +- create symlinks to ease detection for autofoo +- fix license and filelists + +* Mon Feb 25 2008 Jindrich Novy 4.5.20-5 +- manual rebuild because of gcc-4.3 (#434183) + +* Tue Feb 19 2008 Fedora Release Engineering - 4.5.20-4 +- Autorebuild for GCC 4.3 + +* Sat Aug 18 2007 Jindrich Novy 4.5.20-3 +- remove db4 provides to workaround RPM obsoletes/provides problem (#111071), + automatic library provides should be enough for compat-db +- obsolete old db4s again + +* Fri Aug 17 2007 Jindrich Novy 4.5.20-2 +- fix self-obsoletion + +* Mon Jul 30 2007 Jindrich Novy 4.5.20-1 +- add 4.5.20 to compat-db +- package db45_hotbackup +- correct open() calls so that compat-db compiles with the new glibc +- apply db185 patches to all compat-db db4s + +* Sun Nov 26 2006 Jindrich Novy 4.3.29-2 +- include also headers for db4-4.2.52 +- sync db4 and compat-db licenses to BSD-style as the result of + consultation with legal department +- BuildPreReq -> BuildRequires, rpmlint fixes + +* Fri Nov 10 2006 Jindrich Novy 4.3.29-1 +- add 4.3.29 and remove 4.1.25 +- spec reduction diet, remove old unapplied patches +- apply patches 3-5 with upstream fixes for 4.2.52 +- apply first upstream fix patch for 4.3.29 +- all patches/sources now point to correct URLs +- ship headers for db-4.3.29 + +* Wed Jul 12 2006 Jesse Keating - 4.2.52-5.1 +- rebuild + +* Mon Jul 10 2006 Jindrich Novy 4.2.52-5 +- package libdb_cxx, which is a dependency for OpenOffice.org-1.x and + other legacy software (#198130), thanks to Sivasankar Chander + + +* Tue Feb 14 2006 Jindrich Novy 4.2.52-4 +- clarify pointer usage in db_load.c (#110697) + +* Fri Feb 10 2006 Jesse Keating - 4.2.52-3.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 4.2.52-3.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Wed Oct 12 2005 Karsten Hopp 4.2.52-3 +- add Buildprereq ed (#163025) + +* Tue Nov 16 2004 Jeff Johnson 4.2.52-2 +- link libdb-4.1.so against -lpthread (#114150). +- link libdb-4.2.so against -lpthread (#139487). + +* Thu Nov 11 2004 Jeff Johnson 4.2.52-1 +- apply patch.4.1.25.2. +- retire db-4.2.52 with patch.4.2.52.{1,2} into compat-db. +- nuke db2 and db-3.3.11. +- nuke db1 as well. + +* Mon Sep 13 2004 Bill Nottingham +- return of db1 to compat-db +- remove: db-3.1, db-3.2 +- remove: c++, tcl sublibraries + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Thu Dec 11 2003 Jeff Johnson 4.1.25-1 +- retire db-4.1.25 to compat-db. + +* Mon Dec 08 2003 Florian La Roche +- rebuild for new tcl + +* Thu Aug 21 2003 Nalin Dahyabhai 4.0.14-6 +- rebuild + +* Tue Aug 19 2003 Nalin Dahyabhai 4.0.14-5 +- add missing tcl-devel buildrequires (#101814) + +* Thu Jun 26 2003 Jeff Johnson 4.0.14-3 +- compile on all platforms, use gcc296 only on i386/alpha/ia64 +- avoid ppc64 toolchain for the nonce. + +* Wed May 7 2003 Bill Nottingham 4.0.14-2 +- build db-4.x with system compiler, not compat-gcc + +* Mon May 5 2003 Jeff Johnson 4.0.14-1 +- add db4.0.14 to the mess. + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Tue Nov 19 2002 Nalin Dahyabhai 3.3.11-3 +- add sed as a built-time dependency + +* Wed Sep 25 2002 Nalin Dahyabhai +- fold x86-64 changes into mainline + +* Mon Sep 09 2002 Tim Powers +- x86-64 specific build + +* Sun May 26 2002 Tim Powers 3.3.11-2 +- automated rebuild + +* Thu May 16 2002 Nalin Dahyabhai 3.3.11-1 +- pull in db 3.3, obsolete db3 and db32 in addition to db31 +- build with compat-gcc/compat-gcc-c++ to get C++ shared libraries suitable + for use in applications built with db3-devel on RHL 7.x +- pull in db2, obsolete db2/db2-devel/db3-devel, rename to compat-db +- obsolete db3x + +* Thu Mar 28 2002 Nalin Dahyabhai 3.2.9-4 +- rebuild + +* Thu Mar 28 2002 Nalin Dahyabhai 3.2.9-3 +- don't list the tcl include path before other flags when building libdb_tcl + 3.1.x (tcl is in /usr, so this pulls in /usr/include/db.h, which is wrong) + +* Mon Mar 25 2002 Nalin Dahyabhai 3.2.9-2 +- rebuild + +* Mon Mar 25 2002 Nalin Dahyabhai 3.2.9-1 +- rename to db3x and merge in db 3.1 and db 3.2 compatibility stuffs + +* Mon Apr 16 2001 Nalin Dahyabhai +- rename to db31, drop the -devel subpackage, merge the -utils package +- remove berkeley_db_svc, libdb_tcl.so (conflicts with current -utils) + +* Thu Apr 05 2001 Nalin Dahyabhai +- fix URLs in docs for the -utils and -devel subpackages to point to the + images in the main package's documentation directory (#33328) +- change Copyright: GPL to License: BSDish + +* Fri Mar 23 2001 Bill Nottingham +- turn off --enable-debug + +* Tue Dec 12 2000 Jeff Johnson +- rebuild to remove 777 directories. + +* Sat Nov 11 2000 Jeff Johnson +- don't build with --enable-diagnostic. +- add build prereq on tcl. +- default value for %%_lib macro if not found. + +* Tue Oct 17 2000 Jeff Johnson +- add /usr/lib/libdb-3.1.so symlink to %%files. +- remove dangling tags symlink from examples. + +* Mon Oct 9 2000 Jeff Johnson +- rather than hack *.la (see below), create /usr/lib/libdb-3.1.so symlink. +- turn off --enable-diagnostic for performance. + +* Fri Sep 29 2000 Jeff Johnson +- update to 3.1.17. +- disable posix mutexes Yet Again. + +* Tue Sep 26 2000 Jeff Johnson +- add c++ and posix mutex support. + +* Thu Sep 14 2000 Jakub Jelinek +- put nss_db into a separate package + +* Wed Aug 30 2000 Matt Wilson +- rebuild to cope with glibc locale binary incompatibility, again + +* Wed Aug 23 2000 Jeff Johnson +- remove redundant strip of libnss_db* that is nuking symbols. +- change location in /usr/lib/libdb-3.1.la to point to /lib (#16776). + +* Thu Aug 17 2000 Jeff Johnson +- summaries from specspo. +- all of libdb_tcl* (including symlinks) in db3-utils, should be db3->tcl? + +* Wed Aug 16 2000 Jakub Jelinek +- temporarily build nss_db in this package, should be moved + into separate nss_db package soon + +* Wed Jul 19 2000 Jakub Jelinek +- rebuild to cope with glibc locale binary incompatibility + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Sun Jun 11 2000 Jeff Johnson +- upgrade to 3.1.14. +- create db3-utils sub-package to hide tcl dependency, enable tcl Yet Again. +- FHS packaging. + +* Mon Jun 5 2000 Jeff Johnson +- disable tcl Yet Again, base packages cannot depend on libtcl.so. + +* Sat Jun 3 2000 Jeff Johnson +- enable tcl, rebuild against tcltk 8.3.1 (w/o pthreads). + +* Tue May 30 2000 Matt Wilson +- include /lib/libdb.so in the devel package + +* Wed May 10 2000 Jeff Johnson +- put in "System Environment/Libraries" per msw instructions. + +* Tue May 9 2000 Jeff Johnson +- install shared library in /lib, not /usr/lib. +- move API docs to db3-devel. + +* Mon May 8 2000 Jeff Johnson +- don't rename db_* to db3_*. + +* Tue May 2 2000 Jeff Johnson +- disable --enable-test --enable-debug_rop --enable-debug_wop. +- disable --enable-posixmutexes --enable-tcl as well, to avoid glibc-2.1.3 + problems. + +* Mon Apr 24 2000 Jeff Johnson +- add 3.0.55.1 alignment patch. +- add --enable-posixmutexes (linux threads has not pthread_*attr_setpshared). +- add --enable-tcl (needed -lpthreads). + +* Sat Apr 1 2000 Jeff Johnson +- add --enable-debug_{r,w}op for now. +- add variable to set shm perms. + +* Sat Mar 25 2000 Jeff Johnson +- update to 3.0.55 + +* Tue Dec 29 1998 Jeff Johnson +- Add --enable-cxx to configure. + +* Thu Jun 18 1998 Jeff Johnson +- Create.