#
# Conditional build:
-%bcond_with java # build db-java
-%bcond_without tcl # don't build Tcl bindings
-%bcond_with pmutex # use POSIX mutexes (only process-private with linuxthreads)
-%bcond_without nptl # don't use process-shared POSIX mutexes (NPTL provides full interface)
+%bcond_without java # don't build Java library
+%bcond_without tcl # don't build Tcl bindings
+%bcond_with pmutex # use POSIX mutexes (only process-private with linuxthreads)
+%bcond_without nptl # don't use process-shared POSIX mutexes (NPTL provides full interface)
%bcond_without static_libs # don't build static libraries
#
+%define ver 4.4.20
+%define patchlevel 4
%{?with_nptl:%define with_pmutex 1}
Summary: Berkeley DB database library for C
Summary(pl.UTF-8): Biblioteka C do obsługi baz Berkeley DB
Name: db4.4
-Version: 4.4.20
-Release: 2
+Version: %{ver}.%{patchlevel}
+Release: 1
Epoch: 0
License: Sleepycat public license (GPL-like, see LICENSE)
Group: Libraries
-# alternative site (sometimes working): http://www.berkeleydb.com/
-#Source0Download: http://dev.sleepycat.com/downloads/releasehistorybdb.html
-Source0: http://downloads.sleepycat.com/db-%{version}.tar.gz
+#Source0Download: http://www.oracle.com/technetwork/database/berkeleydb/downloads/index-082944.html
+Source0: http://download.oracle.com/berkeley-db/db-%{ver}.tar.gz
# Source0-md5: d84dff288a19186b136b0daf7067ade3
-Patch0: http://www.sleepycat.com/update/4.4.20/patch.4.4.20.1
-Patch1: http://www.sleepycat.com/update/4.4.20/patch.4.4.20.2
-URL: http://www.sleepycat.com/
+%patchset_source -f http://download.oracle.com/berkeley-db/patches/db/%{ver}/patch.%{ver}.%g 1 %{patchlevel}
+URL: http://www.oracle.com/technetwork/database/berkeleydb/downloads/index.html
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: ed
%{?with_java:BuildRequires: jdk}
BuildRequires: libstdc++-devel
-BuildRequires: libtool
+BuildRequires: libtool >= 2:2.2
BuildRequires: sed >= 4.0
%{?with_tcl:BuildRequires: tcl-devel >= 8.4.0}
Provides: db = %{version}-%{release}
poleceń.
%prep
-%setup -q -n db-%{version}
-%patch0 -p0
-%patch1 -p0
+%setup -q -n db-%{ver}
+# official patches
+%patchset_patch 1 %{patchlevel}
-%if !%{with nptl}
+%if %{without nptl}
sed -i -e 's,AM_PTHREADS_SHARED("POSIX/.*,:,' dist/aclocal/mutex.ac
%endif
+sed -i -e '/AC_PROG_LIBTOOL/aLT_OUTPUT' dist/configure.ac
+
%build
cd dist
cp -f /usr/share/aclocal/libtool.m4 aclocal/libtool.ac
+cp -f /usr/share/aclocal/ltoptions.m4 aclocal/ltoptions.ac
+cp -f /usr/share/aclocal/ltsugar.m4 aclocal/ltsugar.ac
+cp -f /usr/share/aclocal/ltversion.m4 aclocal/ltversion.ac
+cp -f /usr/share/aclocal/lt~obsolete.m4 aclocal/lt~obsolete.ac
cp -f /usr/share/automake/config.sub .
-cp -f /usr/share/libtool/ltmain.sh .
+cp -f /usr/share/libtool/config/ltmain.sh .
sh s_config
cd ..
%if %{with static_libs}
%{__make} -C build_unix.static library_install \
- docdir=%{_docdir}/db-%{version}-docs \
- DESTDIR=$RPM_BUILD_ROOT
+ DESTDIR=$RPM_BUILD_ROOT \
+ docdir=%{_docdir}/db-%{version}-docs
%endif
%{__make} -C build_unix library_install \
- docdir=%{_docdir}/db-%{version}-docs \
DESTDIR=$RPM_BUILD_ROOT \
- LIB_INSTALL_FILE_LIST=""
+ LIB_INSTALL_FILE_LIST="" \
+ docdir=%{_docdir}/db-%{version}-docs
mv $RPM_BUILD_ROOT%{_libdir}/libdb-4.4.so $RPM_BUILD_ROOT/%{_lib}
%if %{with java}
install -d $RPM_BUILD_ROOT%{_examplesdir}/db-java-%{version}
cp -rf examples_java/* $RPM_BUILD_ROOT%{_examplesdir}/db-java-%{version}
+%else
+%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/db-%{version}-docs/java
%endif
%clean
--- /dev/null
+*** db/db_cam.c.orig 2006-01-11 03:19:21.000000000 +1100
+--- db/db_cam.c 2006-03-01 13:59:01.000000000 +1100
+***************
+*** 579,589 ****
+ flags == DB_NEXT || flags == DB_NEXT_DUP || flags == DB_PREV)) {
+ if (tmp_rmw && (ret = dbc_arg->c_am_writelock(dbc_arg)) != 0)
+ return (ret);
+! if ((ret = __db_c_idup(cp->opd, &opd, DB_POSITION)) != 0)
+ return (ret);
+
+! switch (ret =
+! opd->c_am_get(opd, key, data, flags, NULL)) {
+ case 0:
+ goto done;
+ case DB_NOTFOUND:
+--- 579,590 ----
+ flags == DB_NEXT || flags == DB_NEXT_DUP || flags == DB_PREV)) {
+ if (tmp_rmw && (ret = dbc_arg->c_am_writelock(dbc_arg)) != 0)
+ return (ret);
+! if (F_ISSET(dbc_arg, DBC_TRANSIENT))
+! opd = cp->opd;
+! else if ((ret = __db_c_idup(cp->opd, &opd, DB_POSITION)) != 0)
+ return (ret);
+
+! switch (ret = opd->c_am_get(opd, key, data, flags, NULL)) {
+ case 0:
+ goto done;
+ case DB_NOTFOUND:
+***************
+*** 596,607 ****
+--- 597,614 ----
+ if ((ret = __db_c_close(opd)) != 0)
+ goto err;
+ opd = NULL;
++ if (F_ISSET(dbc_arg, DBC_TRANSIENT))
++ cp->opd = NULL;
+ break;
+ }
+ goto err;
+ default:
+ goto err;
+ }
++ } else if (cp->opd != NULL && F_ISSET(dbc_arg, DBC_TRANSIENT)) {
++ if ((ret = __db_c_close(cp->opd)) != 0)
++ goto err;
++ cp->opd = NULL;
+ }
+
+ /*
--- /dev/null
+*** mp/mp_fget.c.orig 2005-10-12 10:53:36.000000000 -0700
+--- mp/mp_fget.c 2006-05-30 20:48:10.000000000 -0700
+***************
+*** 587,594 ****
+ */
+ if (state != SECOND_MISS && bhp->ref == 1) {
+ bhp->priority = UINT32_MAX;
+! SH_TAILQ_REMOVE(&hp->hash_bucket, bhp, hq, __bh);
+! SH_TAILQ_INSERT_TAIL(&hp->hash_bucket, bhp, hq);
+ hp->hash_priority =
+ SH_TAILQ_FIRSTP(&hp->hash_bucket, __bh)->priority;
+ }
+--- 587,597 ----
+ */
+ if (state != SECOND_MISS && bhp->ref == 1) {
+ bhp->priority = UINT32_MAX;
+! if (SH_TAILQ_FIRST(&hp->hash_bucket, __bh) !=
+! SH_TAILQ_LAST(&hp->hash_bucket, hq, __bh)) {
+! SH_TAILQ_REMOVE(&hp->hash_bucket, bhp, hq, __bh);
+! SH_TAILQ_INSERT_TAIL(&hp->hash_bucket, bhp, hq);
+! }
+ hp->hash_priority =
+ SH_TAILQ_FIRSTP(&hp->hash_bucket, __bh)->priority;
+ }