# compatibility with legacy rpm %{!?_lib:%define _lib lib} %define __soversion 4.3 %define _libdb_a libdb-%{__soversion}.a %define _libcxx_a libdb_cxx-%{__soversion}.a %define libname_orig %mklibname db %define libname %{libname_orig}%{__soversion} %define libnamedev %{libname}-devel %define libnamestatic %{libname}-static-devel %define libdbcxx %{libname_orig}cxx%{__soversion} %define libdbtcl %{libname_orig}tcl%{__soversion} %define libdbjava %{libname_orig}java%{__soversion} %define libdbnss %{libname_orig}nss%{__soversion} %define libdbnssdev %{libdbnss}-devel # Define Mandrake Linux version we are building for %{?!mdkversion:%define mdkversion %(perl -pe '/(\\d+)\\.(\\d)\\.?(\\d)?/; $_="$1$2".($3||0)' /etc/mandrake-release)} # Define to build Java bindings (does not work) %define build_java 0 # Allow --with[out] JAVA rpm command line build %{?_with_JAVA: %{expand: %%define build_java 1}} %{?_without_JAVA: %{expand: %%define build_java 0}} # Define to build a stripped down version to use for nss libraries %define build_nss 0 # Allow --with[out] nss rpm command line build %{?_with_nss: %{expand: %%define build_nss 1}} %{?_without_nss: %{expand: %%define build_nss 0}} # Define to rename utilities and allow parallel installation %define build_parallel 1 # Allow --with[out] parallel rpm command line build %{?_with_parallel: %{expand: %%define build_parallel 1}} %{?_without_parallel: %{expand: %%define build_parallel 0}} # Don't build Java bindings for any MDK release < 9.0 %if %{mdkversion} < 900 %define build_java 0 %endif Summary: The Berkeley DB database library for C Name: db43 Version: 4.3.29 Release: %mkrel 4 Source: ftp://sleepycat1.inetu.net/releases/db-%{version}.tar.bz2 URL: http://www.sleepycat.com License: BSD Group: System/Libraries BuildRequires: tcl, db1-devel,ed %if %{mdkversion} >= 900 BuildRequires: glibc-static-devel %endif %if %{build_java} BuildRequires: gcc-java >= 3.1.1-0.8mdk %endif # NPTL pthreads mutex are evil Patch2: db-4.3.21-disable-pthreadsmutexes.patch # Add fast AMD64 mutexes Patch3: db-4.1.25-amd64-mutexes.patch # statically link db1 library Patch4: db-4.2.52-db185.patch # Fix broken built-in libtool 1.5 Patch5: db-4.3.21-libtool-fixes.patch BuildRoot: %{_tmppath}/%{name}-root %description The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB is used by many applications, including Python and Perl, so this should be installed on all systems. %package -n %{libname} Summary: The Berkeley DB database library for C Group: System/Libraries %description -n %{libname} The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB is used by many applications, including Python and Perl, so this should be installed on all systems. %package -n %{libdbcxx} Summary: The Berkeley DB database library for C++ Group: System/Libraries #Provides: libdbcxx = %{version}-%{release} %description -n %{libdbcxx} The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB is used by many applications, including Python and Perl, so this should be installed on all systems. This package contains the files needed to build C++ programs which use Berkeley DB. %package -n %{libdbjava} Summary: The Berkeley DB database library for C++ Group: System/Libraries #Provides: libdbjava = %{version}-%{release} %description -n %{libdbjava} The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB is used by many applications, including Python and Perl, so this should be installed on all systems. This package contains the files needed to build Java programs which use Berkeley DB. %package -n %{libdbtcl} Summary: The Berkeley DB database library for TCL Group: System/Libraries #Provides: libdbtcl = %{version}-%{release} %description -n %{libdbtcl} The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB is used by many applications, including Python and Perl, so this should be installed on all systems. This package contains the header files, libraries, and documentation for building tcl programs which use Berkeley DB. %package utils Summary: Command line tools for managing Berkeley DB databases Group: Databases %if !%{build_parallel} Conflicts: db3-utils #Provides: db4-utils #Obsoletes: db4-utils %endif %description utils The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching and database recovery. DB supports C, C++, Java and Perl APIs. This package contains command line tools for managing Berkeley DB databases. %package -n %{libnamedev} Summary: Development libraries/header files for the Berkeley DB library Group: Development/Databases Requires: %{libname} = %{version}-%{release} Requires: %{libdbtcl} = %{version}-%{release} Requires: %{libdbcxx} = %{version}-%{release} #Provides: db-devel = %{version}-%{release} #Provides: db4-devel = %{version}-%{release} Provides: db%{__soversion}-devel = %{version}-%{release} #Provides: libdb-devel = %{version}-%{release} Provides: libdb%{__soversion}-devel = %{version}-%{release} Conflicts: %{libname_orig}3.3-devel, %{libname_orig}4.0-devel Conflicts: %{libname_orig}4.1-devel %{libname_orig}4.2-devel %description -n %{libnamedev} The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching and database recovery. DB supports C, C++, Java and Perl APIs. This package contains the header files, libraries, and documentation for building programs which use Berkeley DB. %package -n %{libnamestatic} Summary: Development static libraries files for the Berkeley DB library Group: Development/Databases Requires: db%{__soversion}-devel = %{version}-%{release} #Provides: db-static-devel = %{version}-%{release} #Provides: db4-static-devel = %{version}-%{release} Provides: db%{__soversion}-static-devel = %{version}-%{release} #Provides: libdb-static-devel = %{version}-%{release} Provides: libdb%{__soversion}-static-devel = %{version}-%{release} Conflicts: %{libname_orig}3.3-static-devel, %{libname_orig}4.0-static-devel Conflicts: %{libname_orig}4.1-static-devel %{libname_orig}4.2-static-devel %description -n %{libnamestatic} The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching and database recovery. DB supports C, C++, Java and Perl APIs. This package contains the static libraries for building programs which use Berkeley DB. %if %{build_nss} %package -n %{libdbnss} Summary: The Berkeley DB database library for NSS modules Group: System/Libraries %description -n %{libdbnss} The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching and database recovery. DB supports C, C++, Java and Perl APIs. This package contains the shared library required by some nss modules that use Berkeley DB. %package -n %{libdbnssdev} Summary: Development libraries/header files for building nss modules with Berkeley DB Group: Development/Databases Requires: %{libdbnss} = %{version}-%{release} #Provides: libdbnss-devel = %{version}-%{release} #Provides: db_nss-devel = %{version}-%{release} #Provides: libdb_nss-devel = %{version}-%{release} %description -n %{libdbnssdev} The Berkeley Database (Berkeley DB) is a programmatic toolkit that provides embedded database support for both traditional and client/server applications. Berkeley DB includes B+tree, Extended Linear Hashing, Fixed and Variable-length record access methods, transactions, locking, logging, shared memory caching and database recovery. DB supports C, C++, Java and Perl APIs. This package contains the header files and libraries for building nss modules which use Berkeley DB. %endif %prep %setup -q -n db-%{version} %patch2 -p1 -b .pthreadsmutexes %patch3 -p1 -b .amd64-mutexes %patch4 -p1 -b .db185 %patch5 -p1 -b .libtool-fixes # Remove tags files which we don't need. find . -name tags | xargs rm -f # Define a shell function for fixing HREF references in the docs, which # would otherwise break when we split the docs up into subpackages. fixup_href() { for doc in $@ ; do chmod u+w ${doc} sed -e 's,="../api_c/,="../../%{name}-devel-%{version}/api_c/,g' \ -e 's,="api_c/,="../%{name}-devel-%{version}/api_c/,g' \ -e 's,="../api_cxx/,="../../%{name}-devel-%{version}/api_cxx/,g' \ -e 's,="api_cxx/,="../%{name}-devel-%{version}/api_cxx/,g' \ -e 's,="../java/,="../../%{name}-devel-%{version}/java/,g' \ -e 's,="java/,="../%{name}-devel-%{version}/java/,g' \ -e 's,="../api_tcl/,="../../%{name}-devel-%{version}/api_tcl/,g' \ -e 's,="api_tcl/,="../%{name}-devel-%{version}/api_tcl/,g' \ -e 's,="../examples_c/,="../../%{name}-devel-%{version}/examples_c/,g' \ -e 's,="examples_c/,="../%{name}-devel-%{version}/examples_c/,g' \ -e 's,="../examples_cxx/,="../../%{name}-devel-%{version}/examples_cxx/,g' \ -e 's,="examples_cxx/,="../%{name}-devel-%{version}/examples_cxx/,g' \ -e 's,="../ref/,="../../%{name}-devel-%{version}/ref/,g' \ -e 's,="ref/,="../%{name}-devel-%{version}/ref/,g' \ -e 's,="../sleepycat/,="../../%{name}-devel-%{version}/sleepycat/,g' \ -e 's,="sleepycat/,="../%{name}-devel-%{version}/sleepycat/,g' \ -e 's,="../images/,="../../%{name}-%{version}/images/,g' \ -e 's,="images/,="../%{name}-%{version}/images/,g' \ -e 's,="../utility/,="../../%{name}-%{version}/utility/,g' \ -e 's,="utility/,="../%{name}-%{version}/utility/,g' ${doc} > ${doc}.new touch -r ${doc} ${doc}.new cat ${doc}.new > ${doc} touch -r ${doc}.new ${doc} rm -f ${doc}.new done } set +x # XXX painful to watch # Fix all of the HTML files. fixup_href `find . -name "*.html"` set -x # XXX painful to watch chmod -R u+w dist (cd dist && ./s_config) %build CFLAGS="$RPM_OPT_FLAGS" %ifarch ppc CFLAGS="$CFLAGS -D_GNU_SOURCE -D_REENTRANT" %endif export CFLAGS %if %{build_java} # Use javac trampoline from gcj mkdir -p build_unix/gcj pushd build_unix/gcj; cat > jar << EOF #!/bin/sh exec /usr/bin/gcj-jar-`gcj -dumpversion` "\$@" EOF chmod +x jar cat > javac << EOF #!/bin/sh exec /usr/bin/gcj-javac-`gcj -dumpversion` "\$@" EOF chmod +x javac cat > java << EOF #!/bin/sh echo 'fake version "1.3.1"' EOF chmod +x java export PATH=$PWD:$PATH # Kludge lookup of <jni.h> and make configure grab the right one from gcj ln -s `gcj -print-file-name=include`/libgcj include popd %endif %if %{build_java} ENABLE_JAVA="--enable-java" %endif %if %{mdkversion} < 1010 %define __libtoolize /bin/true %endif pushd build_unix CONFIGURE_TOP="../dist" %configure2_5x \ --enable-compat185 --enable-dump185 \ --enable-shared --enable-static --enable-rpc \ --enable-tcl --with-tcl=%{_libdir} \ --enable-cxx $ENABLE_JAVA --enable-test \ --disable-pthreadsmutexes \ # --enable-diagnostic \ # --enable-debug --enable-debug_rop --enable-debug_wop \ %make popd %if %{build_nss} mkdir build_nss pushd build_nss CONFIGURE_TOP="../dist" %configure2_5x \ --enable-shared --disable-static \ --disable-tcl --disable-cxx --disable-java \ --disable-pthreadsmutexes \ --with-uniquename \ --enable-compat185 \ --disable-cryptography --disable-queue \ --disable-replication --disable-verify \ #--disable-hash \ #--enable-smallbuild \ # END %make libdb_base=libdb_nss libso_target=libdb_nss-%{__soversion}.la libdir=/%{_lib} popd %endif %install rm -rf %{buildroot} make -C build_unix install_setup install_include install_lib install_utilities \ DESTDIR=%{buildroot} includedir=%{_includedir}/db4 \ emode=755 %if %{build_nss} make -C build_nss install_include install_lib libdb_base=libdb_nss \ DESTDIR=%{buildroot} includedir=%{_includedir}/db_nss \ LIB_INSTALL_FILE_LIST="" mkdir -p %{buildroot}/%{_lib} mv %{buildroot}/%{_libdir}/libdb_nss-%{__soversion}.so %{buildroot}/%{_lib} ln -s /%{_lib}/libdb_nss-%{__soversion}.so %{buildroot}%{_libdir} %endif ln -sf db4/db.h %{buildroot}%{_includedir}/db.h # XXX This is needed for parallel install with db4.2 %if %{build_parallel} for F in %{buildroot}%{_bindir}/*db_* ; do mv $F `echo $F | sed -e 's,db_,%{name}_,'` done %endif # Move db.jar file to the correct place, and version it %if %{build_java} mkdir -p %{buildroot}%{_datadir}/java mv %{buildroot}%{_libdir}/db.jar %{buildroot}%{_datadir}/java/db-%{__soversion}.jar %endif #symlink the short libdb???.a name ln -sf %{_libdb_a} %{buildroot}%{_libdir}/libdb.a ln -sf %{_libcxx_a} %{buildroot}%{_libdir}/libdb_cxx.a ln -sf libdb_tcl-%{__soversion}.a %{buildroot}%{_libdir}/libdb_tcl.a ln -sf %{_libdb_a} %{buildroot}%{_libdir}/libdb-4.a ln -sf %{_libcxx_a} %{buildroot}%{_libdir}/libdb_cxx-4.a ln -sf libdb_tcl-%{__soversion}.a %{buildroot}%{_libdir}/libdb_tcl-4.a %if %{build_java} ln -sf libdb_java-%{__soversion}.a %{buildroot}%{_libdir}/libdb_java.a ln -sf libdb_java-%{__soversion}.a %{buildroot}%{_libdir}/libdb_java-4.a %endif %clean rm -rf %{buildroot} %post -n %{libname} -p /sbin/ldconfig %postun -n %{libname} -p /sbin/ldconfig %post -n %{libdbcxx} -p /sbin/ldconfig %postun -n %{libdbcxx} -p /sbin/ldconfig %if %{build_java} %post -n %{libdbjava} -p /sbin/ldconfig %postun -n %{libdbjava} -p /sbin/ldconfig %endif %post -n %{libdbtcl} -p /sbin/ldconfig %postun -n %{libdbtcl} -p /sbin/ldconfig %if %{build_nss} %post -n %{libdbnss} -p /sbin/ldconfig %postun -n %{libdbnss} -p /sbin/ldconfig %endif %files -n %{libname} %defattr(644,root,root,755) %doc LICENSE README %attr(755,root,root) %{_libdir}/libdb-%{__soversion}.so %files -n %{libdbcxx} %defattr(755,root,root) %{_libdir}/libdb_cxx-%{__soversion}.so %if %{build_java} %files -n %{libdbjava} %defattr(644,root,root,755) %doc docs/java %attr(755,root,root) %{_libdir}/libdb_java-%{__soversion}.so %attr(755,root,root) %{_libdir}/libdb_java-%{__soversion}_g.so %{_datadir}/java/db-%{__soversion}.jar %endif %files -n %{libdbtcl} %defattr(755,root,root) %{_libdir}/libdb_tcl-%{__soversion}.so %files utils %defattr(644,root,root,755) %doc docs/utility/* %defattr(755,root,root) %{_bindir}/berkeley_db*_svc %{_bindir}/db*_archive %{_bindir}/db*_checkpoint %{_bindir}/db*_deadlock %{_bindir}/db*_dump %{_bindir}/db*_dump185 %{_bindir}/db*_load %{_bindir}/db*_printlog %{_bindir}/db*_recover %{_bindir}/db*_stat %{_bindir}/db*_upgrade %{_bindir}/db*_verify %files -n %{libnamedev} %defattr(644,root,root,755) %doc docs/api_c docs/api_cxx docs/java docs/api_tcl docs/index.html %doc docs/ref docs/sleepycat docs/images %doc examples_c examples_cxx %dir %{_includedir}/db4 %{_includedir}/db4/db.h %{_includedir}/db4/db_185.h %{_includedir}/db4/db_cxx.h %{_includedir}/db.h %{_libdir}/libdb.so %{_libdir}/libdb-4.so %{_libdir}/libdb-%{__soversion}.la %{_libdir}/libdb_cxx.so %{_libdir}/libdb_cxx-4.so %{_libdir}/libdb_cxx-%{__soversion}.la %{_libdir}/libdb_tcl.so %{_libdir}/libdb_tcl-4.so %{_libdir}/libdb_tcl-%{__soversion}.la %if %build_java %{_libdir}/libdb_java.so %{_libdir}/libdb_java-4.so %{_libdir}/libdb_java-%{__soversion}.la %endif %files -n %{libnamestatic} %defattr(644,root,root,755) %{_libdir}/*.a %if %{build_nss} %files -n %{libdbnss} %defattr(755,root,root) /%{_lib}/libdb_nss-%{__soversion}.so %files -n %{libdbnssdev} %defattr(644,root,root,755) %dir %{_includedir}/db_nss %{_includedir}/db_nss/db.h %{_includedir}/db_nss/db_185.h %exclude %{_includedir}/db_nss/db_cxx.h %{_libdir}/libdb_nss.so %{_libdir}/libdb_nss-4.so %{_libdir}/libdb_nss-%{__soversion}.la %{_libdir}/libdb_nss-%{__soversion}.so %endif %changelog * Thu Aug 23 2007 Thierry Vignaud <tvignaud@mandriva.com> 4.3.29-4mdv2008.0 + Revision: 70178 - kill ldconfig require as requested by pixel - kill file require * Mon Jul 30 2007 David Walluck <walluck@mandriva.org> 4.3.29-3mdv2008.0 + Revision: 56751 - rebuild to fix %%mkrel * Thu May 11 2006 Thierry Vignaud <tvignaud@mandriva.com> 4.3.29-2mdk - rebuild for outdated packages on x86_64 * Wed Mar 08 2006 Buchan Milne <bgmilne@mandriva.org> 4.3.29-1mdk - New release 4.3.29 - use %%mkrel - rpmbuildupdate-able - misc fixes (PreReq vs Requires(pre), summaries with dots, prefix tags) * Mon Sep 05 2005 Oden Eriksson <oeriksson@mandriva.com> 4.3.21-2mdk - do not provide just yet..., please... * Sat Nov 20 2004 Luca Berra <bluca@vodka.it> 4.3.21-1mdk - updated to db-4.3 - create a build option for parallel install of db4X-utils - rediffed p1, p5 - disabled nss for now - as always java doesn't build and has been disabled * Thu Sep 16 2004 Gwenole Beauchesne <gbeauchesne@mandrakesoft.com> 4.2.52-6mdk - fix merged x86_64 mutexes - fix embedded libtool 1.5 bugs * Mon Aug 16 2004 Luca Berra <bluca@vodka.it> 4.2.52-5mdk - fix uniquename for libdb_nss * Fri Aug 13 2004 Luca Berra <bluca@vodka.it> 4.2.52-4mdk - enable build of libdb_java, by tricking configure. * Mon Aug 09 2004 Luca Berra <bluca@vodka.it> 4.2.52-3mdk - added a special version used to build nss modules - removed more cruft from the specfile * Sun Aug 08 2004 Christiaan Welvaart <cjw@daneel.dyndns.org> 4.2.52-2mdk - add BuildRequires: ed * Mon Jul 26 2004 Luca Berra <bluca@vodka.it> 4.2.52-1mdk - fixed a lot of cruft in the specfile - correctly generate static libraries * Tue Jun 08 2004 Luca Berra <bluca@vodka.it> 4.2.52-0.2mdk - really disabled pthreads mutexes - disable java for now (requires java 1.3) * Sun Jun 06 2004 Luca Berra <bluca@vodka.it> 4.2.52-0.1mdk - first take at db-4.2 rpm * Thu Jun 03 2004 Gwenole Beauchesne <gbeauchesne@mandrakesoft.com> 4.1.25-5mdk - rebuilt against gcc3.4 * Fri Feb 27 2004 Olivier Thauvin <thauvin@aerov.jussieu.fr> 4.1.25-4mdk - Own %%includedir/db4 - db4-utils conflicts db3-utils - fix unpackaged files * Fri Aug 22 2003 Gwenole Beauchesne <gbeauchesne@mandrakesoft.com> 4.1.25-3mdk - Add some provides & conflicts to ease installations * Wed Jul 30 2003 Gwenole Beauchesne <gbeauchesne@mandrakesoft.com> 4.1.25-2mdk - Patch2: Add fast mutexes for AMD64 - %%configure2_5x, fix mklibnamification * Thu Jun 26 2003 Stefan van der Eijk <stefan@eijk.nu> 4.1.25-1mdk - Buchan's package * Sun May 18 2003 Buchan Milne <bgmilne@linux-mandrake.com> 4.1.25-1mdk - 4.1.25 (see if we can get openldap-2.1 to build with bdb support) - Remove db_recover patch(0), add official patch(1) - Maybe someone needs libdb_java-4.1.la, and if no-one does, at least use the macro so it doesn't have to be changed every time ...