summaryrefslogtreecommitdiff
path: root/databases/db47
diff options
context:
space:
mode:
authorXin LI <delphij@FreeBSD.org>2008-10-08 09:41:43 +0000
committerXin LI <delphij@FreeBSD.org>2008-10-08 09:41:43 +0000
commitc36a7fe5ce15ce465474a76816093331308dd9bc (patch)
treeb66893ddeb1a69a9235260085991ff68603e94cb /databases/db47
parentAdd missing files to pkg-plist. (diff)
Apply vendor fix 4.7.25.1;
Apply a vendor patch (via OpenLDAP) that fixes locking issues on single CPU systems [1] Thanks to: rafan@ for --ignore-whitespace trick [1] http://www.openldap.org/devel/cvsweb.cgi/build/db.4.7.52.patch
Notes
Notes: svn path=/head/; revision=221325
Diffstat (limited to 'databases/db47')
-rw-r--r--databases/db47/Makefile8
-rw-r--r--databases/db47/distinfo3
-rw-r--r--databases/db47/files/patch-lock::lock.c42
3 files changed, 52 insertions, 1 deletions
diff --git a/databases/db47/Makefile b/databases/db47/Makefile
index 13e339678503..2445b46c9872 100644
--- a/databases/db47/Makefile
+++ b/databases/db47/Makefile
@@ -6,7 +6,7 @@
#
PORTNAME= db47
-PORTVERSION= 4.7.25.0
+PORTVERSION= 4.7.25.1
CATEGORIES= databases
MASTER_SITES= http://download-west.oracle.com/berkeley-db/ \
http://download-east.oracle.com/berkeley-db/ \
@@ -15,6 +15,12 @@ PKGNAMEPREFIX?=
DISTNAME= db-${PORTVERSION:R}
DIST_SUBDIR= bdb
+PATCH_SITES= http://www.oracle.com/technology/products/berkeley-db/db/update/${PORTVERSION:R}/
+PATCHFILES= patch.4.7.25.1
+PATCH_DIST_STRIP= -d .. --ignore-whitespace
+# * patch.4.7.25.1: -----------------------------------------------------------
+# # [#16406] Replication clients should be able to open a sequence.
+
# I allow matthias.andree@gmx.de and all freebsd committer to do changes
# to this package.
diff --git a/databases/db47/distinfo b/databases/db47/distinfo
index b85332845c1e..f42260952182 100644
--- a/databases/db47/distinfo
+++ b/databases/db47/distinfo
@@ -1,3 +1,6 @@
MD5 (bdb/db-4.7.25.tar.gz) = ec2b87e833779681a0c3a814aa71359e
SHA256 (bdb/db-4.7.25.tar.gz) = f14fd96dd38915a1d63dcb94a63fbb8092334ceba6b5060760427096f631263e
SIZE (bdb/db-4.7.25.tar.gz) = 13124129
+MD5 (bdb/patch.4.7.25.1) = 5fdf101259e5164dea1c8c86214fde38
+SHA256 (bdb/patch.4.7.25.1) = e91590af872705efc34414afb702abc630a75c55ba61570dca2216c783e0a83a
+SIZE (bdb/patch.4.7.25.1) = 2072
diff --git a/databases/db47/files/patch-lock::lock.c b/databases/db47/files/patch-lock::lock.c
new file mode 100644
index 000000000000..33f8066ca0dd
--- /dev/null
+++ b/databases/db47/files/patch-lock::lock.c
@@ -0,0 +1,42 @@
+--- ../lock/lock.c.orig 2008-05-07 05:27:35.000000000 -0700
++++ ../lock/lock.c 2008-09-26 11:07:15.000000000 -0700
+@@ -1274,10 +1274,12 @@
+ SH_TAILQ_REMOVE(
+ &lt->obj_tab[obj_ndx], sh_obj, links, __db_lockobj);
+ if (sh_obj->lockobj.size > sizeof(sh_obj->objdata)) {
+- LOCK_REGION_LOCK(env);
++ if (region->part_t_size != 1)
++ LOCK_REGION_LOCK(env);
+ __env_alloc_free(&lt->reginfo,
+ SH_DBT_PTR(&sh_obj->lockobj));
+- LOCK_REGION_UNLOCK(env);
++ if (region->part_t_size != 1)
++ LOCK_REGION_UNLOCK(env);
+ }
+ SH_TAILQ_INSERT_HEAD(
+ &FREE_OBJS(lt, part_id), sh_obj, links, __db_lockobj);
+@@ -1467,15 +1469,21 @@
+ if (obj->size <= sizeof(sh_obj->objdata))
+ p = sh_obj->objdata;
+ else {
+- LOCK_REGION_LOCK(env);
++ /*
++ * If we have only one partition, the region is locked.
++ */
++ if (region->part_t_size != 1)
++ LOCK_REGION_LOCK(env);
+ if ((ret =
+ __env_alloc(&lt->reginfo, obj->size, &p)) != 0) {
+ __db_errx(env,
+ "No space for lock object storage");
+- LOCK_REGION_UNLOCK(env);
++ if (region->part_t_size != 1)
++ LOCK_REGION_UNLOCK(env);
+ goto err;
+ }
+- LOCK_REGION_UNLOCK(env);
++ if (region->part_t_size != 1)
++ LOCK_REGION_UNLOCK(env);
+ }
+
+ memcpy(p, obj->data, obj->size);