commit 4a2ffdc61234861850ef139345ac35bc1a8b41e3
Author: Jakub Bogusz <[email protected]>
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

_______________________________________________
pld-cvs-commit mailing list
[email protected]
http://lists.pld-linux.org/mailman/listinfo/pld-cvs-commit

Reply via email to