42bcf92
%define __soversion_major 4
42bcf92
%define __soversion %{__soversion_major}.8
42bcf92
42bcf92
Summary: The Berkeley DB database library (version 4) for C
42bcf92
Name: libdb4
42bcf92
Version: 4.8.30
6122dba
Release: 13%{?dist}
723ef2e
URL: http://www.oracle.com/database/berkeley-db/
723ef2e
License: Sleepycat and BSD
723ef2e
Group: System Environment/Libraries
723ef2e
42bcf92
Source0: http://download.oracle.com/berkeley-db/db-%{version}.tar.gz
42bcf92
Source1: http://download.oracle.com/berkeley-db/db.1.85.tar.gz
42bcf92
# db-1.85 upstream patches
42bcf92
Patch10: http://www.oracle.com/technology/products/berkeley-db/db/update/1.85/patch.1.1
42bcf92
Patch11: http://www.oracle.com/technology/products/berkeley-db/db/update/1.85/patch.1.2
42bcf92
Patch12: http://www.oracle.com/technology/products/berkeley-db/db/update/1.85/patch.1.3
42bcf92
Patch13: http://www.oracle.com/technology/products/berkeley-db/db/update/1.85/patch.1.4
42bcf92
# other patches
42bcf92
Patch20: db-1.85-errno.patch
42bcf92
Patch21: db-4.6.21-1.85-compat.patch
42bcf92
Patch22: db-4.5.20-jni-include-dir.patch
8e83762
Patch23: db-4.8.30-quotas-segfault.patch
6122dba
Patch24: db-4.8.30-format-security.patch
723ef2e
42bcf92
Conflicts: filesystem < 3
42bcf92
Obsoletes: db4 < 5.0.0
723ef2e
Provides: db4 = %{version}
f8c1feb
BuildRequires: perl perl-Carp libtool ed util-linux-ng
42bcf92
BuildRequires: tcl-devel%{?_isa} >= 8.5.2-3
42bcf92
BuildRequires: chrpath
42bcf92
BuildRequires: java-devel >= 1:1.6.0
42bcf92
42bcf92
%description
42bcf92
The Berkeley Database (Berkeley DB) is a programmatic toolkit that
42bcf92
provides embedded database support for both traditional and
42bcf92
client/server applications. The Berkeley DB includes B+tree, Extended
42bcf92
Linear Hashing, Fixed and Variable-length record access methods,
42bcf92
transactions, locking, logging, shared memory caching, and database
42bcf92
recovery. The Berkeley DB supports C, C++, Java, and Perl APIs. It is
42bcf92
used by many applications, including Python and Perl, so this should
42bcf92
be installed on all systems.
42bcf92
42bcf92
%package utils
42bcf92
Summary: Command line tools for managing Berkeley DB (version 4) databases
42bcf92
Group: Applications/Databases
42bcf92
Requires: %{name}%{?_isa} = %{version}-%{release}
42bcf92
Obsoletes: db4-utils < 5.0.0
723ef2e
Provides: db4-utils = %{version}
42bcf92
42bcf92
%description utils
42bcf92
This package contains command-line tools for managing Berkeley DB (version
42bcf92
4) databases.
42bcf92
42bcf92
%package devel
42bcf92
Summary: C development files for the Berkeley DB (version 4) library
42bcf92
Group: Development/Libraries
42bcf92
Requires: %{name}%{?_isa} = %{version}-%{release}
42bcf92
Obsoletes: db4-devel < 5.0.0
723ef2e
Provides: db4-devel = %{version}
42bcf92
42bcf92
%description devel
42bcf92
This package contains the header files and libraries for building C
42bcf92
programs which use the Berkeley DB.
42bcf92
42bcf92
%package doc
42bcf92
Summary: Documentation for the Berkeley DB
42bcf92
Group: Documentation
42bcf92
BuildArch: noarch
42bcf92
Obsoletes: db4-devel-doc < 5.0.0
723ef2e
Provides: db4-devel-doc = %{version}
42bcf92
42bcf92
%description doc
42bcf92
This package includes documentation files for the Berkeley DB database.
42bcf92
42bcf92
%package devel-static
42bcf92
Summary: Berkeley DB (version 4) static libraries
42bcf92
Group: Development/Libraries
42bcf92
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
42bcf92
Obsoletes: db4-devel-static < 5.0.0
723ef2e
Provides: db4-devel-static = %{version}
42bcf92
42bcf92
%description devel-static
42bcf92
This package contains static libraries needed for applications that
42bcf92
require static linking of Berkeley DB.
42bcf92
42bcf92
%package cxx
42bcf92
Summary: The Berkeley DB database library (version 4) for C++
42bcf92
Group: System Environment/Libraries
42bcf92
Requires: %{name}%{?_isa} = %{version}-%{release}
42bcf92
Obsoletes: db4-cxx < 5.0.0
723ef2e
Provides: db4-cxx = %{version}
42bcf92
42bcf92
%description cxx
42bcf92
This package contains the C++ version of the Berkeley DB library (v4).
42bcf92
42bcf92
%package cxx-devel
42bcf92
Summary: C++ development files for the Berkeley DB database library (version 4)
42bcf92
Group: Development/Libraries
42bcf92
Requires: %{name}-cxx%{?_isa} = %{version}-%{release}
a1d3fc0
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
42bcf92
Obsoletes: db4-cxx-devel < 5.0.0
723ef2e
Provides: db4-cxx-devel = %{version}
42bcf92
42bcf92
%description cxx-devel
42bcf92
This package contains the header files and libraries for building C++
42bcf92
programs which use the Berkeley DB.
42bcf92
42bcf92
%package tcl
42bcf92
Summary: Development files for using the Berkeley DB (version 4) with tcl
42bcf92
Group: Development/Libraries
42bcf92
Requires: %{name}%{?_isa} = %{version}-%{release}
42bcf92
Obsoletes: db4-tcl < 5.0.0
723ef2e
Provides: db4-tcl = %{version}
42bcf92
42bcf92
%description tcl
42bcf92
This package contains the libraries for building programs which use the
42bcf92
Berkeley DB in Tcl.
42bcf92
42bcf92
%package tcl-devel
42bcf92
Summary: Development files for using the Berkeley DB (version 4) with tcl
42bcf92
Group: Development/Libraries
42bcf92
Requires: %{name}-tcl%{?_isa} = %{version}-%{release}
723ef2e
Obsoletes: db4-tcl-devel < 5.0.0
723ef2e
Provides: db4-tcl-devel = %{version}
42bcf92
42bcf92
%description tcl-devel
42bcf92
This package contains the libraries for building programs which use the
42bcf92
Berkeley DB in Tcl.
42bcf92
42bcf92
%package java
42bcf92
Summary: Development files for using the Berkeley DB (version 4) with Java
42bcf92
Group: System Environment/Libraries
42bcf92
Requires: %{name}%{?_isa} = %{version}-%{release}
42bcf92
Obsoletes: db4-java < 5.0.0
723ef2e
Provides: db4-java = %{version}
42bcf92
42bcf92
%description java
42bcf92
This package contains the libraries for building programs which use the
42bcf92
Berkeley DB in Java.
42bcf92
42bcf92
%package java-devel
42bcf92
Summary: Development files for using the Berkeley DB (version 4) with Java
42bcf92
Group: Development/Libraries
42bcf92
Requires: %{name}-java%{?_isa} = %{version}-%{release}
723ef2e
Obsoletes: db4-java-devel < 5.0.0
723ef2e
Provides: db4-java-devel = %{version}
42bcf92
42bcf92
%description java-devel
42bcf92
This package contains the libraries for building programs which use the
42bcf92
Berkeley DB in Java.
42bcf92
42bcf92
%prep
42bcf92
%setup -q -n db-%{version} -a 1
42bcf92
42bcf92
pushd db.1.85/PORT/linux
42bcf92
%patch10 -p0 -b .1.1
42bcf92
popd
42bcf92
pushd db.1.85
42bcf92
%patch11 -p0 -b .1.2
42bcf92
%patch12 -p0 -b .1.3
42bcf92
%patch13 -p0 -b .1.4
42bcf92
%patch20 -p1 -b .errno
42bcf92
popd
42bcf92
42bcf92
%patch21 -p1 -b .185compat
42bcf92
%patch22 -p1 -b .4.5.20.jni
8e83762
%patch23 -p1 -b .quotas-segfault
6122dba
%patch24 -p1 -b .format-security
42bcf92
42bcf92
# Fix HREF references in the docs which would otherwise break when we split the docs up into subpackages.
42bcf92
set +x
42bcf92
for doc in `find . -name "*.html"`; do
42bcf92
	chmod u+w ${doc}
42bcf92
	sed	-e 's,="../api_c/,="../../%{name}-devel-%{version}/api_c/,g' \
42bcf92
		-e 's,="api_c/,="../%{name}-devel-%{version}/api_c/,g' \
42bcf92
		-e 's,="../api_cxx/,="../../%{name}-devel-%{version}/api_cxx/,g' \
42bcf92
		-e 's,="api_cxx/,="../%{name}-devel-%{version}/api_cxx/,g' \
42bcf92
		-e 's,="../api_tcl/,="../../%{name}-devel-%{version}/api_tcl/,g' \
42bcf92
		-e 's,="api_tcl/,="../%{name}-devel-%{version}/api_tcl/,g' \
42bcf92
		-e 's,="../java/,="../../%{name}-devel-%{version}/java/,g' \
42bcf92
		-e 's,="java/,="../%{name}-devel-%{version}/java/,g' \
42bcf92
		-e 's,="../examples_c/,="../../%{name}-devel-%{version}/examples_c/,g' \
42bcf92
		-e 's,="examples_c/,="../%{name}-devel-%{version}/examples_c/,g' \
42bcf92
		-e 's,="../examples_cxx/,="../../%{name}-devel-%{version}/examples_cxx/,g' \
42bcf92
		-e 's,="examples_cxx/,="../%{name}-devel-%{version}/examples_cxx/,g' \
42bcf92
		-e 's,="../ref/,="../../%{name}-devel-%{version}/ref/,g' \
42bcf92
		-e 's,="ref/,="../%{name}-devel-%{version}/ref/,g' \
42bcf92
		-e 's,="../images/,="../../%{name}-devel-%{version}/images/,g' \
42bcf92
		-e 's,="images/,="../%{name}-devel-%{version}/images/,g' \
42bcf92
		-e 's,="../utility/,="../../%{name}-utils-%{version}/utility/,g' \
42bcf92
		-e 's,="utility/,="../%{name}-utils-%{version}/utility/,g' ${doc} > ${doc}.new
42bcf92
	touch -r ${doc} ${doc}.new
42bcf92
	cat ${doc}.new > ${doc}
42bcf92
	touch -r ${doc}.new ${doc}
42bcf92
	rm -f ${doc}.new
42bcf92
done
42bcf92
set -x
42bcf92
42bcf92
cd dist
42bcf92
./s_config
42bcf92
42bcf92
%build
42bcf92
export CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
42bcf92
42bcf92
# Build the old db-185 libraries.
42bcf92
make -C db.1.85/PORT/%{_os} OORG="$CFLAGS"
42bcf92
42bcf92
test -d dist/dist-tls || mkdir dist/dist-tls
42bcf92
# Static link db_dump185 with old db-185 libraries.
61d4d34
/bin/sh libtool --tag=CC --mode=compile %{__cc} $RPM_OPT_FLAGS -Idb.1.85/PORT/%{_os}/include -D_REENTRANT -c db_dump185/db_dump185.c -o dist/dist-tls/db_dump185.lo
61d4d34
/bin/sh libtool --tag=LD --mode=link %{__cc} -o dist/dist-tls/db_dump185 dist/dist-tls/db_dump185.lo db.1.85/PORT/%{_os}/libdb.a
42bcf92
1df6b20
# Update gnu-config files for AArch64
1df6b20
chmod 644 dist/config.{guess,sub}
1df6b20
cp /usr/lib/rpm/redhat/config.{guess,sub} dist/
1df6b20
42bcf92
pushd dist/dist-tls
42bcf92
ln -sf ../configure .
42bcf92
%configure -C \
42bcf92
	--enable-compat185 --enable-dump185 \
42bcf92
	--enable-shared --enable-static \
42bcf92
	--enable-tcl --with-tcl=%{_libdir} \
42bcf92
	--enable-cxx \
42bcf92
	--enable-java \
42bcf92
	--enable-test \
42bcf92
	--disable-rpath \
42bcf92
	--with-tcl=%{_libdir}/tcl8.5
42bcf92
42bcf92
# Remove libtool predep_objects and postdep_objects wonkiness so that
42bcf92
# building without -nostdlib doesn't include them twice.  Because we
42bcf92
# already link with g++, weird stuff happens if you don't let the
42bcf92
# compiler handle this.
42bcf92
perl -pi -e 's/^predep_objects=".*$/predep_objects=""/' libtool
42bcf92
perl -pi -e 's/^postdep_objects=".*$/postdep_objects=""/' libtool
42bcf92
perl -pi -e 's/-shared -nostdlib/-shared/' libtool
42bcf92
42bcf92
make %{?_smp_mflags}
42bcf92
42bcf92
# XXX hack around libtool not creating ./libs/libdb_java-X.Y.lai
42bcf92
LDBJ=./.libs/libdb_java-%{__soversion}.la
42bcf92
if test -f ${LDBJ} -a ! -f ${LDBJ}i; then
42bcf92
	sed -e 's,^installed=no,installed=yes,' < ${LDBJ} > ${LDBJ}i
42bcf92
fi
42bcf92
42bcf92
popd
42bcf92
42bcf92
%install
42bcf92
mkdir -p ${RPM_BUILD_ROOT}%{_includedir}
42bcf92
mkdir -p ${RPM_BUILD_ROOT}%{_libdir}
42bcf92
cc10603
# Disable built-in binaries stripping (#729002)
cc10603
%makeinstall STRIP=/bin/true -C dist/dist-tls
42bcf92
42bcf92
# XXX Nuke non-versioned archives and symlinks
42bcf92
rm -f ${RPM_BUILD_ROOT}%{_libdir}/{libdb.a,libdb_cxx.a}
42bcf92
42bcf92
chmod +x ${RPM_BUILD_ROOT}%{_libdir}/*.so*
42bcf92
42bcf92
# Move the header files to a subdirectory, in case we're deploying on a
42bcf92
# system with multiple versions of DB installed.
42bcf92
mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/%{name}
42bcf92
mv ${RPM_BUILD_ROOT}%{_includedir}/*.h ${RPM_BUILD_ROOT}%{_includedir}/%{name}
42bcf92
42bcf92
# Move java jar file to the correct place
f8c1feb
# Rename java jar file to fix conflict with libdb (#800359)
42bcf92
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/java
42bcf92
mv ${RPM_BUILD_ROOT}%{_libdir}/*.jar ${RPM_BUILD_ROOT}%{_datadir}/java
f8c1feb
pushd ${RPM_BUILD_ROOT}%{_datadir}/java
f8c1feb
mv db.jar db4.jar
f8c1feb
popd
42bcf92
42bcf92
# Eliminate installed doco
42bcf92
rm -rf ${RPM_BUILD_ROOT}%{_prefix}/docs
42bcf92
42bcf92
# unify documentation and examples, remove stuff we don't need
42bcf92
rm -rf docs/csharp
42bcf92
rm -rf examples/csharp
42bcf92
rm -rf docs/installation
42bcf92
42bcf92
# XXX Avoid Permission denied. strip when building as non-root.
42bcf92
chmod u+w ${RPM_BUILD_ROOT}%{_bindir} ${RPM_BUILD_ROOT}%{_bindir}/*
42bcf92
42bcf92
# remove unneeded .la files (#225675)
42bcf92
rm -f ${RPM_BUILD_ROOT}%{_libdir}/*.la
42bcf92
42bcf92
# rename utils so that they won't conflict with libdb (#749293)
42bcf92
pushd ${RPM_BUILD_ROOT}%{_bindir}
42bcf92
for i in `ls | sed s/db_//`; do
42bcf92
  mv db_$i db%{__soversion_major}_$i;
42bcf92
done
42bcf92
popd
42bcf92
a1d3fc0
# put unversioned libraries to separate directory to not to conflict
a1d3fc0
# with libdb-devel (#839508)
a1d3fc0
mkdir -p ${RPM_BUILD_ROOT}%{_libdir}/%{name}
a1d3fc0
pushd ${RPM_BUILD_ROOT}%{_libdir}/%{name}
a1d3fc0
for i in libdb libdb_cxx libdb_tcl libdb_java; do
a1d3fc0
  rm -f ${RPM_BUILD_ROOT}%{_libdir}/$i.so
a1d3fc0
  ln -s ../$i-%{__soversion}.so $i.so
a1d3fc0
done
a1d3fc0
popd
a1d3fc0
42bcf92
# remove RPATHs
42bcf92
chrpath -d ${RPM_BUILD_ROOT}%{_libdir}/*.so ${RPM_BUILD_ROOT}%{_bindir}/*
42bcf92
42bcf92
%post -p /sbin/ldconfig
42bcf92
42bcf92
%postun -p /sbin/ldconfig
42bcf92
42bcf92
%post -p /sbin/ldconfig cxx
42bcf92
42bcf92
%postun -p /sbin/ldconfig cxx
42bcf92
42bcf92
%post -p /sbin/ldconfig tcl
42bcf92
42bcf92
%postun -p /sbin/ldconfig tcl
42bcf92
42bcf92
%post -p /sbin/ldconfig java
42bcf92
42bcf92
%postun -p /sbin/ldconfig java
42bcf92
42bcf92
%files
42bcf92
%defattr(-,root,root,-)
42bcf92
%doc LICENSE README
42bcf92
%{_libdir}/libdb-%{__soversion}.so
42bcf92
%{_libdir}/libdb-%{__soversion_major}.so
42bcf92
42bcf92
%files devel
42bcf92
%defattr(-,root,root,-)
a1d3fc0
%{_libdir}/%{name}/libdb.so
42bcf92
%dir %{_includedir}/%{name}
42bcf92
%{_includedir}/%{name}/db.h
42bcf92
%{_includedir}/%{name}/db_185.h
42bcf92
42bcf92
%files doc
42bcf92
%defattr(-,root,root,-)
42bcf92
%doc docs/*
42bcf92
%doc examples_c examples_cxx examples_java
42bcf92
42bcf92
%files devel-static
42bcf92
%defattr(-,root,root,-)
42bcf92
%{_libdir}/libdb-%{__soversion}.a
42bcf92
%{_libdir}/libdb_cxx-%{__soversion}.a
42bcf92
%{_libdir}/libdb_tcl-%{__soversion}.a
42bcf92
%{_libdir}/libdb_java-%{__soversion}.a
42bcf92
42bcf92
%files utils
42bcf92
%defattr(-,root,root,-)
42bcf92
%{_bindir}/db*_archive
42bcf92
%{_bindir}/db*_checkpoint
42bcf92
%{_bindir}/db*_deadlock
42bcf92
%{_bindir}/db*_dump*
42bcf92
%{_bindir}/db*_hotbackup
42bcf92
%{_bindir}/db*_load
42bcf92
%{_bindir}/db*_printlog
42bcf92
%{_bindir}/db*_recover
42bcf92
%{_bindir}/db*_sql
42bcf92
%{_bindir}/db*_stat
42bcf92
%{_bindir}/db*_upgrade
42bcf92
%{_bindir}/db*_verify
42bcf92
42bcf92
%files cxx
42bcf92
%defattr(-,root,root,-)
42bcf92
%{_libdir}/libdb_cxx-%{__soversion}.so
42bcf92
%{_libdir}/libdb_cxx-%{__soversion_major}.so
42bcf92
42bcf92
%files cxx-devel
42bcf92
%defattr(-,root,root,-)
42bcf92
%{_includedir}/%{name}/db_cxx.h
a1d3fc0
%{_libdir}/%{name}/libdb_cxx.so
42bcf92
42bcf92
%files tcl
42bcf92
%defattr(-,root,root,-)
42bcf92
%{_libdir}/libdb_tcl-%{__soversion}.so
42bcf92
%{_libdir}/libdb_tcl-%{__soversion_major}.so
42bcf92
42bcf92
%files tcl-devel
42bcf92
%defattr(-,root,root,-)
a1d3fc0
%{_libdir}/%{name}/libdb_tcl.so
42bcf92
42bcf92
%files java
42bcf92
%defattr(-,root,root,-)
42bcf92
%{_libdir}/libdb_java-%{__soversion}*.so
42bcf92
%{_libdir}/libdb_java-%{__soversion_major}*.so
42bcf92
%{_datadir}/java/*.jar
42bcf92
42bcf92
%files java-devel
42bcf92
%defattr(-,root,root,-)
a1d3fc0
%{_libdir}/%{name}/libdb_java.so
42bcf92
42bcf92
%changelog
6122dba
* Tue Dec 03 2013 Jan Stanek <jstanek@redhat.com> - 4.8.30-13
6122dba
- Adjusted for -Werror=format-security gcc flag.
6122dba
1df6b20
* Fri Nov 08 2013 Honza Horak <hhorak@redhat.com> - 4.8.30-12
1df6b20
- Updated the config files for aarch64 architecture (#1028112)
1df6b20
98c5e03
* Sat Aug 03 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.8.30-11
98c5e03
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
98c5e03
2bca750
* Thu May 16 2013 Jan Stanek <jstanek@redhat.com> - 4.8.30-10
cc10603
- Fixed missing debuginfos for utils subpackage (#729002)
cc10603
8e83762
* Wed Apr 24 2013 Jan Stanek <jstanek@redhat.com> - 4.8.30-9
8e83762
- Added sanity patch fixing crashes when no more disc space left (#740631)
8e83762
184a4c5
* Tue Apr 02 2013 Jan Stanek <jstanek@redhat.com> - 4.8.30-8
184a4c5
- Removed dependency on gcc-java
184a4c5
f8c1feb
* Tue Mar 26 2013 Jan Stanek <jstanek@redhat.com> - 4.8.30-7
f8c1feb
- Fix file conflict with libdb-java (#800359)
f8c1feb
- Add missing perl-Carp to BuildRequires
f8c1feb
3e74c28
* Thu Feb 14 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.8.30-6
3e74c28
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
3e74c28
d594b7f
* Thu Jul 19 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 4.8.30-5
d594b7f
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
d594b7f
723ef2e
* Mon Jul 16 2012 Peter Robinson <pbrobinson@fedoraproject.org> - 4.8.30-4
723ef2e
- Add db4 provides to allow transisition for name change
723ef2e
- Spec cleanup
723ef2e
61d4d34
* Sat Jul 14 2012 Peter Robinson <pbrobinson@fedoraproject.org> - 4.8.30-3
61d4d34
- Specify tag for libtool
61d4d34
a1d3fc0
* Thu Jul 12 2012 Jindrich Novy <jnovy@redhat.com> 4.8.30-2
a1d3fc0
- fix dependencies in cxx-devel and fix file conflict with
a1d3fc0
  libdb-devel (#839508)
a1d3fc0
42bcf92
* Sun Apr 22 2012 Jindrich Novy <jnovy@redhat.com> 4.8.30-1
42bcf92
- introduction of libdb4