[packages/opendbx] - added tds patch (fix mssql backend build with freetds; the one built with skip_post_check_so was u

qboosh qboosh at pld-linux.org
Sat Jan 18 15:30:27 CET 2014


commit 4a2ffdc61234861850ef139345ac35bc1a8b41e3
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sat Jan 18 15:27:48 2014 +0100

    - added tds patch (fix mssql backend build with freetds; the one built with skip_post_check_so was useless)
    - build odbc backend, added oracle bcond to allow build oracle backend
    - package missing files, general cleanup; handle only system soname symlinks
      by ldconfig and just own symlinks in private directory (btw, the modules
      could be built with -avoid-version as well, as they are dlopened just by .so)

 opendbx-tds.patch |  20 +++++++
 opendbx.spec      | 172 +++++++++++++++++++++++++++++-------------------------
 2 files changed, 112 insertions(+), 80 deletions(-)
---
diff --git a/opendbx.spec b/opendbx.spec
index a9a0f0e..27c0204 100644
--- a/opendbx.spec
+++ b/opendbx.spec
@@ -1,6 +1,8 @@
 #
 # Conditional build:
-%bcond_without	ibase		# don't build ibase (InterBase/Firebird) backend
+%bcond_without	ibase		# ibase (InterBase/Firebird) backend
+%bcond_with	oracle		# oracle backend [BR: libclntsh or liboci + oci.h]
+%bcond_without	static_libs	# static library
 
 %ifnarch %{ix86} %{x8664} sparc sparcv9 alpha ppc
 %undefine	with_ibase
@@ -11,22 +13,23 @@ Summary(pl.UTF-8):	Rozszerzana biblioteka dostępu do baz danych
 Name:		opendbx
 Version:	1.4.6
 Release:	1
-License:	LGPL
+License:	LGPL v2+
 Group:		Libraries
 Source0:	http://linuxnetworks.de/opendbx/download/%{name}-%{version}.tar.gz
 # Source0-md5:	3e89d7812ce4a28046bd60d5f969263d
+Patch0:		%{name}-tds.patch
 URL:		http://www.linuxnetworks.de/doc/index.php/OpenDBX
 %{?with_ibase:BuildRequires:	Firebird-devel}
+BuildRequires:	libstdc++-devel
 BuildRequires:	freetds-devel
 BuildRequires:	mysql-devel
 BuildRequires:	postgresql-devel
 BuildRequires:	sqlite-devel
 BuildRequires:	sqlite3-devel
+BuildRequires:	unixODBC-devel
 BuildRequires:	zlib-devel
 BuildRoot:	%{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
-%define		skip_post_check_so	libmssqlbackend.so.1.2.0
-
 %description
 OpenDBX is an extremely lightweight but extensible database access
 library written in C. It provides an abstraction layer to all
@@ -67,6 +70,17 @@ Static opendbx library.
 %description static -l pl.UTF-8
 Statyczna biblioteka opendbx.
 
+%package apidocs
+Summary:	API documentation for opendbx library
+Summary(pl.UTF-8):	Dokumentacja API biblioteki opendbx
+Group:		Documentation
+
+%description apidocs
+API documentation for opendbx library.
+
+%description apidocs -l pl.UTF-8
+Dokumentacja API biblioteki opendbx.
+
 %package backend-firebird
 Summary:	Firebird backend for opendbx
 Summary(pl.UTF-8):	Backend bazy danych Firebird dla biblioteki opendbx
@@ -103,6 +117,30 @@ MySQL backend for opendbx.
 %description backend-mysql -l pl.UTF-8
 Backend bazy danych MySQL dla biblioteki opendbx.
 
+%package backend-odbc
+Summary:	ODBC backend for opendbx
+Summary(pl.UTF-8):	Backend baz danych ODBC dla biblioteki opendbx
+Group:		Libraries
+Requires:	%{name} = %{version}-%{release}
+
+%description backend-odbc
+ODBC backend for opendbx.
+
+%description backend-odbc -l pl.UTF-8
+Backend baz danych ODBC dla biblioteki opendbx.
+
+%package backend-oracle
+Summary:	Oracle backend for opendbx
+Summary(pl.UTF-8):	Backend bazy danych Oracle dla biblioteki opendbx
+Group:		Libraries
+Requires:	%{name} = %{version}-%{release}
+
+%description backend-oracle
+Oracle backend for opendbx.
+
+%description backend-oracle -l pl.UTF-8
+Backend bazy danych Oracle dla biblioteki opendbx.
+
 %package backend-postgres
 Summary:	PostgreSQL backend for opendbx
 Summary(pl.UTF-8):	Backend bazy danych PostgreSQL dla biblioteki opendbx
@@ -153,11 +191,13 @@ Backend bazy danych sybase dla biblioteki opendbx.
 
 %prep
 %setup -q
+%patch0 -p1
 
 %build
-CPPFLAGS="-I/usr/include/mysql"; export CPPFLAGS
+CPPFLAGS="%{rpmcppflags} -I/usr/include/mysql"
 %configure \
-	--with-backends="%{?with_ibase:firebird} mssql mysql pgsql sqlite sqlite3 sybase"
+	%{!?with_static_libs:--disable-static} \
+	--with-backends="%{?with_ibase:firebird} mssql mysql odbc %{?with_oracle:oracle} pgsql sqlite sqlite3 sybase"
 %{__make}
 
 %install
@@ -166,9 +206,13 @@ rm -rf $RPM_BUILD_ROOT
 %{__make} install \
 	DESTDIR=$RPM_BUILD_ROOT
 
-%find_lang %{name}
+# opendbx and opendbx-utils domains
+%find_lang %{name} --all-name
 
-rm -f $RPM_BUILD_ROOT%{_libdir}/%{name}/*.a
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/*.la
+%if %{with static_libs}
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{name}/*.a
+%endif
 
 %clean
 rm -rf $RPM_BUILD_ROOT
@@ -176,111 +220,79 @@ rm -rf $RPM_BUILD_ROOT
 %post   -p /sbin/ldconfig
 %postun -p /sbin/ldconfig
 
-%post backend-firebird
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%postun backend-firebird
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%post backend-mssql
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%postun backend-mssql
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%post backend-mysql
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%postun backend-mysql
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%post backend-postgres
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%postun backend-postgres
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%post backend-sqlite3
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%postun backend-sqlite
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%post backend-sybase
-/sbin/ldconfig -n %{_libdir}/%{name}
-
-%postun backend-sybase
-/sbin/ldconfig -n %{_libdir}/%{name}
-
 %files -f %{name}.lang
 %defattr(644,root,root,755)
-%doc doc/* AUTHORS ChangeLog README TODO
+%doc AUTHORS ChangeLog README TODO
 %attr(755,root,root) %{_bindir}/odbx-sql
-%attr(755,root,root) %{_libdir}/lib*.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/lib*.so.1
+%attr(755,root,root) %{_libdir}/libopendbx.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libopendbx.so.1
+%attr(755,root,root) %{_libdir}/libopendbxplus.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libopendbxplus.so.1
 %dir %{_datadir}/%{name}
 %{_datadir}/%{name}/keywords
 %dir %{_libdir}/%{name}
+%{_mandir}/man1/odbx-sql.1*
 
 %files devel
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/lib*.so
+%attr(755,root,root) %{_libdir}/libopendbx.so
+%attr(755,root,root) %{_libdir}/libopendbxplus.so
+%{_libdir}/libopendbx.la
+%{_libdir}/libopendbxplus.la
+%{_includedir}/odbx.h
 %{_includedir}/opendbx
-%{_includedir}/*.h
-%{_libdir}/*.la
-%{_pkgconfigdir}/*.pc
+%{_pkgconfigdir}/opendbx.pc
+%{_pkgconfigdir}/opendbxplus.pc
+%{_mandir}/man3/OpenDBX*.3*
+%{_mandir}/man3/odbx_*.3*
 
+%if %{with static_libs}
 %files static
 %defattr(644,root,root,755)
-%{_libdir}/lib*.a
+%{_libdir}/libopendbx.a
+%{_libdir}/libopendbxplus.a
+%endif
+
+%files apidocs
+%defattr(644,root,root,755)
+%doc doc/html/*
 
 %if %{with ibase}
 %files backend-firebird
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/%{name}/libfirebird*.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/%{name}/libfirebird*.so.1
-%attr(755,root,root) %{_libdir}/%{name}/libfirebird*.so
-%{_libdir}/%{name}/libfirebird*.la
+%attr(755,root,root) %{_libdir}/%{name}/libfirebirdbackend.so*
 %endif
 
 %files backend-mssql
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/%{name}/libmssql*.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/%{name}/libmssql*.so.1
-%attr(755,root,root) %{_libdir}/%{name}/libmssql*.so
-%{_libdir}/%{name}/libmssql*.la
+%attr(755,root,root) %{_libdir}/%{name}/libmssqlbackend.so*
 
 %files backend-mysql
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/%{name}/libmysql*.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/%{name}/libmysql*.so.1
-%attr(755,root,root) %{_libdir}/%{name}/libmysql*.so
-%{_libdir}/%{name}/libmysql*.la
+%attr(755,root,root) %{_libdir}/%{name}/libmysqlbackend.so*
+
+%files backend-odbc
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/%{name}/libodbcbackend.so*
+
+%if %{with oracle}
+%files backend-oracle
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/%{name}/liboraclebackend.so*
+%endif
 
 %files backend-postgres
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/%{name}/libpgsql*.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/%{name}/libpgsql*.so.1
-%attr(755,root,root) %{_libdir}/%{name}/libpgsql*.so
-%{_libdir}/%{name}/libpgsql*.la
+%attr(755,root,root) %{_libdir}/%{name}/libpgsqlbackend.so*
 
 %files backend-sqlite3
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/%{name}/libsqlite3*.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/%{name}/libsqlite3*.so.1
-%attr(755,root,root) %{_libdir}/%{name}/libsqlite3*.so
-%{_libdir}/%{name}/libsqlite3*.la
+%attr(755,root,root) %{_libdir}/%{name}/libsqlite3backend.so*
 
 %files backend-sqlite
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/%{name}/libsqliteb*.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/%{name}/libsqliteb*.so.1
-%attr(755,root,root) %{_libdir}/%{name}/libsqliteb*.so
-%{_libdir}/%{name}/libsqliteb*.la
+%attr(755,root,root) %{_libdir}/%{name}/libsqlitebackend.so*
 
 %files backend-sybase
 %defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/%{name}/libsybase*.so.*.*
-%attr(755,root,root) %ghost %{_libdir}/%{name}/libsybase*.so.1
-%attr(755,root,root) %{_libdir}/%{name}/libsybase*.so
-%{_libdir}/%{name}/libsybase*.la
+%attr(755,root,root) %{_libdir}/%{name}/libsybasebackend.so*
diff --git a/opendbx-tds.patch b/opendbx-tds.patch
new file mode 100644
index 0000000..7adef11
--- /dev/null
+++ b/opendbx-tds.patch
@@ -0,0 +1,20 @@
+Asynchronous interface (dbpoll() etc.) is not implemented in freetds;
+just ignore timeout argument (like most backends do) and wait synchronously on dbsqlok().
+--- opendbx-1.4.6/backends/mssql/mssql_basic.c.orig	2014-01-18 14:02:53.684519942 +0100
++++ opendbx-1.4.6/backends/mssql/mssql_basic.c	2014-01-18 14:02:56.857853141 +0100
+@@ -316,6 +316,7 @@
+ 
+ 	if( caux->firstresult )
+ 	{
++#ifdef HAVE_DBPOLL
+ 		long ms = -1;
+ 		int reason = DBRESULT;
+ 		DBPROCESS* cdbproc;
+@@ -323,6 +324,7 @@
+ 		if( timeout != NULL ) { ms = timeout->tv_sec * 1000 + timeout->tv_usec / 1000; }
+ 		if( dbpoll( dbproc, ms, &cdbproc, &reason ) == FAIL ) { return -ODBX_ERR_BACKEND; }
+ 		if( reason != DBRESULT ) { return ODBX_RES_TIMEOUT; }   // timeout
++#endif
+ 
+ 		caux->firstresult = 0;
+ 		if( dbsqlok( dbproc ) == FAIL ) { return -ODBX_ERR_BACKEND; }
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/opendbx.git/commitdiff/4a2ffdc61234861850ef139345ac35bc1a8b41e3



More information about the pld-cvs-commit mailing list