db53/db53.spec

520 lines
18 KiB
RPMSpec

%define majver %(echo %version | cut -d . -f1-2)
%define MAJver %(echo %version | cut -d . -f1)
%define majvershort %(echo %version | cut -d . -f1-2 | tr -d .)
Name: db53
Version: 5.3.28
Release: 1mamba
Summary: The Berkeley DB database library
Group: System/Libraries
Vendor: openmamba
Distribution: openmamba
Packager: Silvan Calarco <silvan.calarco@mambasoft.it>
URL: http://www.oracle.com/technology/products/berkeley-db/index.html
Source: http://download.oracle.com/berkeley-db/db-%{version}.tar.gz
Source1: http://download.oracle.com/berkeley-db/db.1.85.tar.gz
# For mt19937db.c
Source2: http://www.gnu.org/licenses/lgpl-2.1.txt
# libdb man pages generated from the 5.3.28 documentation
# Patches from Fedora https://src.fedoraproject.org/rpms/libdb/
#Source3: libdb-5.3.28-manpages.tar.gz
Patch0: libdb-multiarch.patch
# db-1.85 upstream patches
Patch10: http://www.oracle.com/technology/products/berkeley-db/db/update/1.85/patch.1.1
Patch11: http://www.oracle.com/technology/products/berkeley-db/db/update/1.85/patch.1.2
Patch12: http://www.oracle.com/technology/products/berkeley-db/db/update/1.85/patch.1.3
Patch13: http://www.oracle.com/technology/products/berkeley-db/db/update/1.85/patch.1.4
# other patches
Patch20: db-1.85-errno.patch
Patch22: db-4.6.21-1.85-compat.patch
Patch24: db-4.5.20-jni-include-dir.patch
# License clarification patch
# http://devel.trisquel.info/gitweb/?p=package-helpers.git;a=blob;f=helpers/DATA/db4.8/007-mt19937db.c_license.patch;h=1036db4d337ce4c60984380b89afcaa63b2ef88f;hb=df48d40d3544088338759e8bea2e7f832a564d48
Patch25: 007-mt19937db.c_license.patch
#Adds missing constant to Optcodes.java and changes ClassReader.java to use it. This makes package to build with Java 8.
Patch26: java8-fix.patch
# memp_stat fix provided by upstream (rhbz#1211871)
Patch27: db-5.3.21-memp_stat-upstream-fix.patch
# fix for mutexes not being released provided by upstream (rhbz#1277887)
Patch28: db-5.3.21-mutex_leak.patch
# fix for overflowing hash variable inside bundled lemon
Patch29: db-5.3.28-lemon_hash.patch
# upstream patch adding the ability to recreate libdb's environment on version mismatch
# or when libpthread.so is modified (rhbz#1394862)
Patch30: db-5.3.28-condition_variable.patch
# additional changes to the upstream patch to address rhbz#1460003
Patch31: db-5.3.28-condition-variable-ppc.patch
# downstream patch that adds a check for rpm transaction lock in order to be able to update libdb
# FIXME: remove when able
Patch32: db-5.3.28-rpm-lock-check.patch
# downstream patch to hotfix rhbz#1464033, sent upstream
Patch33: db-5.3.28-cwd-db_config.patch
Patch34: libdb-5.3.21-region-size-check.patch
# Patch sent upstream
Patch35: checkpoint-opd-deadlock.patch
Patch36: db-5.3.28-atomic_compare_exchange.patch
# CDB race (rhbz #1099509)
Patch37: libdb-cbd-race.patch
# Limit concurrency to max 1024 CPUs (rhbz#1245410)
# A fix for the issue should be in an upstream release already
# https://community.oracle.com/message/13274780#13274780
Patch38: libdb-limit-cpu.patch
# rhbz#1608749 Patch sent upstream
# Expects libdb-5.3.21-mutex_leak.patch applied
Patch39: libdb-5.3.21-trickle_cpu.patch
License: GPL
## AUTOBUILDREQ-BEGIN
BuildRequires: glibc-devel
BuildRequires: libgcc
BuildRequires: libstdc++6-devel
## AUTOBUILDREQ-END
%if "%{stage1}" != "1"
BuildRequires: javapackages
%endif
BuildRequires: sharutils
BuildRequires: libtcl-devel >= 8.6.9-2mamba
%description
The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications.
The Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching, and database recovery.
The Berkeley DB supports C, C++, Java, and Perl APIs.
It is used by many applications, including Python and Perl, so this should be installed on all systems.
%package -n libdb53
Summary: The Berkeley DB database library
Group: System/Libraries
%description -n libdb53
The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications.
The Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching, and database recovery.
The Berkeley DB supports C, C++, Java, and Perl APIs.
It is used by many applications, including Python and Perl, so this should be installed on all systems.
%package -n libdb53-cxx
Summary: The Berkeley DB database library
Group: System/Libraries
%description -n libdb53-cxx
The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications.
The Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching, and database recovery.
The Berkeley DB supports C, C++, Java, and Perl APIs.
It is used by many applications, including Python and Perl, so this should be installed on all systems.
%package -n libdb53-tcl
Summary: The Berkeley DB database library
Group: System/Libraries
%description -n libdb53-tcl
The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications.
The Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching, and database recovery.
The Berkeley DB supports C, C++, Java, and Perl APIs.
It is used by many applications, including Python and Perl, so this should be installed on all systems.
%package -n libdb53-sql
Summary: The Berkeley DB database library
Group: System/Libraries
%description -n libdb53-sql
The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications.
The Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching, and database recovery.
The Berkeley DB supports C, C++, Java, and Perl APIs.
It is used by many applications, including Python and Perl, so this should be installed on all systems.
%package -n db53-tools
Summary: Tools for the managing Berkeley DB
Group: System/Libraries
Requires: libdb53 = %{version}-%{release}
%description -n db53-tools
The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications.
This package contains the tools for managing Berkeley DB.
%package -n libdb53-devel
Summary: Development files for the Berkeley DB library.
Group: Development/Libraries
Requires: libdb53 = %{version}-%{release}
Requires: libdb53-cxx = %{version}-%{release}
Requires: libdb53-tcl = %{version}-%{release}
Requires: libdb53-sql = %{version}-%{release}
%description -n libdb53-devel
The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications.
This package contains the header files, libraries, and documentation for building programs which use the Berkeley DB.
%package -n libdb53-static
Summary: Static library files for the Berkeley DB library.
Group: Development/Libraries
Requires: libdb53 = %{version}-%{release}
%description -n libdb53-static
The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications.
This package contains the static library files for the Berkeley DB library.
%package -n libdb53-java
Summary: Java bindings for the Berkeley DB library
Group: System/Libraries
Requires: libdb53 = %{version}-%{release}
%description -n libdb53-java
Java bindings for the Berkeley DB library.
%package -n libdb53-java-devel
Summary: Java bindings for the Berkeley DB library
Group: Development/Libraries
Requires: libdb53-java = %{version}-%{release}
%description -n libdb53-java-devel
Java bindings for the Berkeley DB library.
%prep
%setup -q -n db-%{version} -a1
#-D -T
#:<< _EOF
cp %{SOURCE2} .
#tar -xf %{SOURCE3}
%patch0 -p1
pushd db.1.85/PORT/linux
%patch10 -p0
popd
pushd db.1.85
%patch11 -p0
%patch12 -p0
%patch13 -p0
%patch20 -p1
popd
%patch22 -p1
%patch24 -p1
%patch25 -p1
%patch26 -p1
%patch27 -p1
%patch28 -p1
%patch29 -p1
%patch30 -p1
%patch31 -p1
%patch32 -p1
%patch33 -p1
%patch34 -p1
%patch35 -p1
%patch36 -p1
%patch37 -p1
%patch38 -p1
%patch39 -p1
%build
#:<< _EOF
CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing"
CFLAGS="$CFLAGS -DSHAREDSTATEDIR='\"%{_sharedstatedir}\"' -DSQLITE_ENABLE_COLUMN_METADATA=1 -DSQLITE_DISABLE_DIRSYNC=1 -DSQLITE_ENABLE_FTS3=3 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_SECURE_DELETE=1 -DSQLITE_ENABLE_UNLOCK_NOTIFY=1 -I../../../lang/sql/sqlite/ext/fts3/"
export CFLAGS
# Build the old db-185 libraries.
make -C db.1.85/PORT/%{_os} OORG="$CFLAGS"
test -d dist/dist-tls || mkdir dist/dist-tls
# Static link db_dump185 with old db-185 libraries.
/bin/sh libtool --tag=CC --mode=compile %{__cc} $RPM_OPT_FLAGS -Idb.1.85/PORT/%{_os}/include -D_REENTRANT -c util/db_dump185.c -o dist/dist-tls/db_dump185.lo
/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
# Update config files to understand aarch64
#for dir in dist lang/sql/sqlite lang/sql/jdbc lang/sql/odbc; do
# cp /usr/lib/rpm/redhat/config.{guess,sub} "$dir"
#done
pushd dist/dist-tls
ln -s ../configure .
%configure -C \
--enable-compat185 \
--enable-dump185 \
--enable-shared \
--enable-static \
--enable-tcl \
--with-tcl=%{_libdir} \
--enable-cxx \
--enable-sql \
--enable-java \
--enable-test \
--disable-rpath \
--program-suffix=-53 \
--with-tcl=%{_prefix}/lib/tcl8.6
# Remove libtool predep_objects and postdep_objects wonkiness so that
# building without -nostdlib doesn't include them twice. Because we
# already link with g++, weird stuff happens if you don't let the
# compiler handle this.
perl -pi -e 's/^predep_objects=".*$/predep_objects=""/' libtool
perl -pi -e 's/^postdep_objects=".*$/postdep_objects=""/' libtool
perl -pi -e 's/-shared -nostdlib/-shared/' libtool
%make
# XXX hack around libtool not creating ./libs/libdb_java-X.Y.lai
LDBJ=./.libs/libdb_java-%{__soversion}.la
if test -f ${LDBJ} -a ! -f ${LDBJ}i; then
sed -e 's,^installed=no,installed=yes,' < ${LDBJ} > ${LDBJ}i
fi
# Run some quick subsystem checks
echo "source ../../test/tcl/test.tcl; r env; r mut; r memp" | tclsh
popd
:<< ___OLD
cd build_unix
case "%{_target_cpu}" in
i586) mutex="x86/gcc-assembly" ;;
ppc) mutex="PPC/gcc-assembly" ;;
arm) mutex="ARM/gcc-assembly" ;;
x86_64) mutex="x86_64/gcc-assembly" ;;
*) mutex="UNIX/fcntl" ;;
esac
JAVA_HOME=%{_jvmdir}/jdk/ \
../dist/configure \
--prefix=%{_prefix} \
--datadir=%{_datadir} \
--includedir=%{_includedir}/db53 \
--enable-cxx \
--enable-compat185 \
%if "%{stage1}" != "1"
--enable-java \
%endif
--with-mutex="$mutex" \
--program-suffix=-53
___OLD
%install
%makeinstall STRIP=/bin/true -C dist/dist-tls
# XXX Nuke non-versioned archives and symlinks
rm -f ${RPM_BUILD_ROOT}%{_libdir}/{libdb.a,libdb_cxx.a,libdb_tcl.a,libdb_sql.a}
chmod +x ${RPM_BUILD_ROOT}%{_libdir}/*.so*
# Move the header files to a subdirectory, in case we're deploying on a
# system with multiple versions of DB installed.
mkdir -p ${RPM_BUILD_ROOT}%{_includedir}/%{name}
mv ${RPM_BUILD_ROOT}%{_includedir}/*.h ${RPM_BUILD_ROOT}%{_includedir}/%{name}/
# Create symlinks to includes so that "use <db.h> and link with -ldb" works.
for i in db.h db_cxx.h db_185.h; do
ln -s %{name}/$i ${RPM_BUILD_ROOT}%{_includedir}
done
# Move java jar file to the correct place
mkdir -p ${RPM_BUILD_ROOT}%{_datadir}/java
mv ${RPM_BUILD_ROOT}%{_libdir}/*.jar ${RPM_BUILD_ROOT}%{_datadir}/java
# Eliminate installed doco
rm -rf ${RPM_BUILD_ROOT}%{_prefix}/docs
# XXX Avoid Permission denied. strip when building as non-root.
chmod u+w ${RPM_BUILD_ROOT}%{_bindir} ${RPM_BUILD_ROOT}%{_bindir}/*
# remove unneeded .la files (#225675)
rm -f ${RPM_BUILD_ROOT}%{_libdir}/*.la
# remove RPATHs
chrpath -d ${RPM_BUILD_ROOT}%{_libdir}/*.so ${RPM_BUILD_ROOT}%{_bindir}/*
# unify documentation and examples, remove stuff we don't need
#rm -rf docs/csharp
#rm -rf examples/csharp
#rm -rf docs/installation
#mv examples docs
#mv man/* ${RPM_BUILD_ROOT}%{_mandir}/man1
:<< ___OLD
# prefix=%{buildroot}%{_prefix} includedir=%{buildroot}%{_includedir}
mkdir -p %{buildroot}%{_datadir}/doc/libdb4-%{version}
mv %{buildroot}%{_prefix}/docs/* \
%{buildroot}%{_datadir}/doc/libdb4-%{version}
rmdir %{buildroot}%{_prefix}/docs
# make this version thre system default
pushd %{buildroot}%{_bindir}
find * -exec ln -s {} {}-%{majvershort} \;
popd
for f in db.h db_185.h db_cxx.h; do
ln -s db53/$f %{buildroot}%{_includedir}/$f
done
# fix strange permissions
chmod 755 %{buildroot}%{_bindir}/*
ln -s libdb-%{majver}.so %{buildroot}%{_libdir}/libdb.so.%{majver}
%if "%{stage1}" != "1"
ln -s libdb_java-%{majver}.so %{buildroot}%{_libdir}/libdb_java.so.%{majver}
mkdir -p %{buildroot}%{_datadir}/java
mv %{buildroot}%{_libdir}/*.jar %{buildroot}%{_datadir}/java/
%endif
#rm -f %{buildroot}%{_libdir}/libdb.so
#rm -f %{buildroot}%{_libdir}/libdb_cxx.so
___OLD
%clean
[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
%post -n libdb53 -p /sbin/ldconfig
%postun -n libdb53 -p /sbin/ldconfig
%post -n libdb53-cxx -p /sbin/ldconfig
%postun -n libdb53-cxx -p /sbin/ldconfig
%post -n libdb53-tcl -p /sbin/ldconfig
%postun -n libdb53-tcl -p /sbin/ldconfig
%post -n libdb53-sql -p /sbin/ldconfig
%postun -n libdb53-sql -p /sbin/ldconfig
%post -n libdb53-java -p /sbin/ldconfig
%postun -n libdb53-java -p /sbin/ldconfig
%files -n libdb53
%defattr(-,root,root)
%{_libdir}/libdb-%{MAJver}.so
%{_libdir}/libdb-%{majver}.so
%files -n libdb53-cxx
%{_libdir}/libdb_cxx-%{MAJver}.so
%{_libdir}/libdb_cxx-%{majver}.so
%files -n libdb53-tcl
%{_libdir}/libdb_tcl-%{MAJver}.so
%{_libdir}/libdb_tcl-%{majver}.so
%files -n libdb53-sql
%{_libdir}/libdb_sql-%{MAJver}.so
%{_libdir}/libdb_sql-%{majver}.so
%files -n db53-tools
%defattr(-,root,root)
%{_bindir}/*
%files -n libdb53-devel
%defattr(-,root,root)
%dir %{_includedir}/db53
%{_includedir}/db53/*
%{_includedir}/db.h
%{_includedir}/db_185.h
%{_includedir}/db_cxx.h
%{_libdir}/libdb.so
%{_libdir}/libdb_cxx.so
%{_libdir}/libdb_sql.so
%{_libdir}/libdb_tcl.so
%doc docs examples
#%{_docdir}/libdb4-%{version}/*
%files -n libdb53-static
%defattr(-,root,root)
%{_libdir}/*.a
%if "%{stage1}" != "1"
%files -n libdb53-java
%defattr(-,root,root)
%{_libdir}/libdb_java-%{MAJver}.so
%{_libdir}/libdb_java-%{majver}.so
%{_libdir}/libdb_java-%{majver}_g.so
%{_datadir}/java/db.jar
%files -n libdb53-java-devel
%defattr(-,root,root)
%{_libdir}/libdb_java.so
%endif
%changelog
* Sat Jun 22 2019 Silvan Calarco <silvan.calarco@mambasoft.it> 5.3.28-1mamba
- update to 5.3.28
* Tue May 28 2013 Silvan Calarco <silvan.calarco@mambasoft.it> 5.3.21-1mamba
- update to 5.3.21
* Tue Sep 20 2011 Automatic Build System <autodist@mambasoft.it> 5.2.36-1mamba
- automatic version update by autodist
* Wed Aug 31 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 5.2.28-2mamba
- renamed from db51 to db52 using --program-suffix=-52 to keep 5.1 still the default
* Tue Jun 14 2011 Automatic Build System <autodist@mambasoft.it> 5.2.28-1mamba
- automatic update by autodist
* Sat Mar 19 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 5.1.25-3mamba
- add libdb.so and libdb_cxx.so symlinks
* Mon Mar 07 2011 Silvan Calarco <silvan.calarco@mambasoft.it> 5.1.25-2mamba
- make this the system default Berkeley DB
* Thu Feb 03 2011 Automatic Build System <autodist@mambasoft.it> 5.1.25-1mamba
- automatic update by autodist
* Fri Sep 10 2010 Automatic Build System <autodist@mambasoft.it> 5.1.19-1mamba
- automatic update to 5.1.19 by autodist
* Fri Jul 02 2010 Automatic Build System <autodist@mambasoft.it> 5.0.26-1mamba
- automatic update to 5.0.26 by autodist
* Sat May 22 2010 Automatic Build System <autodist@mambasoft.it> 5.0.21-1mamba
- automatic update to 5.0.21 by autodist
* Thu Dec 31 2009 Automatic Build System <autodist@mambasoft.it> 4.8.26-1mamba
- automatic update to 4.8.26 by autodist
* Fri Sep 25 2009 Silvan Calarco <silvan.calarco@mambasoft.it> 4.8.24-1mamba
- update to 4.8.24
* Thu Jul 03 2008 gil <puntogil@libero.it> 4.7.25-1mamba
- update to version 4.7.25
- removed patches
* Wed Jun 04 2008 Silvan Calarco <silvan.calarco@mambasoft.it> 4.2.52-8mamba
- specfile updated
* Thu Jul 13 2006 Davide Madrisan <davide.madrisan@qilinux.it> 4.2.52-7qilnx
- fixed openldap warning: "BerkeleyDB 4.2.52 library needs TXN patch!"
- official patches applied
- fixed permissions of binary files
* Wed Oct 26 2005 Silvan Calarco <silvan.calarco@mambasoft.it> 4.2.52-6qilnx
- add OpenOffice patch
* Mon Oct 24 2005 Silvan Calarco <silvan.calarco@mambasoft.it> 4.2.52-5qilnx
- do not link against libpthread
* Mon Oct 24 2005 Silvan Calarco <silvan.calarco@mambasoft.it> 4.2.52-4qilnx
- rebuild with gcj
* Wed Feb 02 2005 Silvan Calarco <silvan.calarco@mambasoft.it> 4.2.52-3qilnx
- rebuilt with java bindings
* Tue Jul 27 2004 Silvan Calarco <silvan.calarco@mambasoft.it> 4.2.25-8qilnx
- new version build
- source RPM renamed to db42 (should cohexist with libdb4)
* Sun May 09 2004 Silvan Calarco <silvan.calarco@mambasoft.it> 4.1.25-8qilnx
- added libdb.so provides
* Fri May 07 2004 Silvan Calarco <silvan.calarco@mambasoft.it> 4.1.25-7qilnx
- fixed symlinks for compatibility
* Fri May 07 2004 Silvan Calarco <silvan.calarco@mambasoft.it> 4.1.25-6qilnx
- rebuild with --enable-compat185
* Tue Sep 15 2003 Silvan Calarco <silvan.calarco@mambasoft.it> 4.1.25-5qilnx
- Added symlink /usr/include/db.h so that db4 is system default version
* Tue Sep 09 2003 Silvan Calarco <silvan.calarco@mambasoft.it> 4.1.25-4qilnx
- Moved includes to /usr/include/db4 for devel packages co-existence
* Fri Jul 25 2003 Silvan Calarco <silvan.calarco@qinet.it> 4.1.25-3qilnx
- Removed compat185 (it looks broken, I'll try to use db2's compat185)
* Thu Jul 24 2003 Silvan Calarco <silvan.calarco@qinet.it> 4.1.25-2qilnx
- Enabled compatibiliy with version 185
* Tue Apr 22 2003 Luca Tinelli <luca.tinelli@qinet.it> 4.1.25-1qilnx
- Creation of db4 package