+# TODO:
+# - lib64 patch
-%include /usr/lib/rpm/macros.python
-%define module psycopg
+# Conditional build:
+%bcond_without python2 # CPython 2.x module
+%bcond_without python3 # CPython 3.x module
+%define module psycopg2
Summary: psycopg is a PostgreSQL database adapter for Python
-Summary(pl): psycopg jest przeznaczonym dla Pythona interfejsem do bazy PostgreSQL
+Summary(pl.UTF-8): psycopg jest przeznaczonym dla Pythona interfejsem do bazy PostgreSQL
Name: python-%{module}
-Version: 1.0.12
-Release: 0.9
+Version: 2.5.1
+Release: 1
License: GPL
Group: Libraries/Python
-Source0: http://initd.org/pub/software/%{module}/%{module}-%{version}.tar.gz
-Patch0: %{name}-dumb-ac-fix.patch
+Source0: http://initd.org/psycopg/tarballs/PSYCOPG-2-5/%{module}-%{version}.tar.gz
+# Source0-md5: 1b433f83d50d1bc61e09026e906d84c7
+#Patch0: %{name}-lib64.patch
URL: http://www.initd.org/software/psycopg/
+BuildRequires: autoconf
BuildRequires: postgresql-backend-devel
-BuildRequires: python-devel
-BuildRequires: python-mx-DateTime-devel
+BuildRequires: postgresql-devel
+%{?with_python2:BuildRequires: python-devel >= 2.5}
+%{?with_python3:BuildRequires: python3-devel}
+BuildRequires: rpm-pythonprov
Requires: postgresql-libs
-Requires: python
+Requires: python-modules
+Requires: python-pytz
+%if "%{pld_release}" == "ac"
+BuildRequires: python-mx-DateTime-devel
Requires: python-mx-DateTime
+%else
+# if somebody really needs mx.DateTime, then one can request mx.Datetime
+# usage on runtime;
+# it is pointless to use 'Requires' or 'Suggest' field because
+# - python provides its own datetime implementation
+# - one can request it on runtime (as said above)
+# - usage of mx.DateTime type is application specific
+# Sure, but make mx-DateTime conditional build work
+BuildConflicts: python-egenix-mx-base
+%endif
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description
main advantages of psycopg are that it supports the full Python
DBAPI-2.0 and being thread safe at level 2.
-%description -l pl
+%description -l pl.UTF-8
psycopg jest przeznaczonym dla Pythona interfejsem do bazy danych
-PostgreSQL (tak jak pygresql i popy). Zosta³ zakodowany od pocz±tku
-z za³o¿eniem ¿e ma byæ bardzo ma³y, szybki i stabilny. G³ówna zalet±
-psycopg jest, ¿e w jest pe³ni zgodny z standardem DBAPI-2.0 i jest
+PostgreSQL (tak jak pygresql i popy). Został zakodowany od początku z
+założeniem że ma być bardzo mały, szybki i stabilny. Główna zaletą
+psycopg jest, że w jest pełni zgodny z standardem DBAPI-2.0 i jest
+'thread safe' na poziomie 2.
+
+%package -n python3-%{module}
+Summary: psycopg is a PostgreSQL database adapter for Python
+Summary(pl.UTF-8): psycopg jest przeznaczonym dla Pythona interfejsem do bazy PostgreSQL
+Group: Libraries/Python
+Requires: python3-modules
+Requires: python3-pytz
+
+%description -n python3-%{module}
+psycopg is a PostgreSQL database adapter for the Python programming
+language (just like pygresql and popy.) It was written from scratch
+with the aim of being very small and fast, and stable as a rock. The
+main advantages of psycopg are that it supports the full Python
+DBAPI-2.0 and being thread safe at level 2.
+
+%description -n python3-%{module} -l pl.UTF-8
+psycopg jest przeznaczonym dla Pythona interfejsem do bazy danych
+PostgreSQL (tak jak pygresql i popy). Został zakodowany od początku z
+założeniem że ma być bardzo mały, szybki i stabilny. Główna zaletą
+psycopg jest, że w jest pełni zgodny z standardem DBAPI-2.0 i jest
'thread safe' na poziomie 2.
%prep
%setup -q -n %{module}-%{version}
-%patch0 -p1
+#%if "%{_lib}" == "lib64"
+#%patch0 -p1
+#%endif
%build
-%{__autoconf}
-
-%configure \
- --with-python=%{_bindir}/python \
- --with-mxdatetime-includes=%{py_sitedir}/mx/DateTime/mxDateTime \
- --with-postgres-includes=%{_includedir}/postgresql/server
-%{__make}
+%if %{with python2}
+%{__python} setup.py build
+%endif
+%if %{with python3}
+%{__python3} setup.py build
+%endif
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{py_sitedir}
+%if %{with python2}
+%{__python} setup.py install \
+ --optimize=2 \
+ --root=$RPM_BUILD_ROOT
-install psycopgmodule.so $RPM_BUILD_ROOT%{py_sitedir}
+%py_postclean
+%endif
+%if %{with python3}
+%{__python3} setup.py install \
+ --optimize=2 \
+ --root=$RPM_BUILD_ROOT
+%endif
%clean
rm -rf $RPM_BUILD_ROOT
+%if %{with python2}
%files
%defattr(644,root,root,755)
-%doc AUTHORS CREDITS FAQ NEWS README RELEASE-1.0 SUCCESS TODO doc
-%attr(755,root,root) %{py_sitedir}/*.so
+%doc NEWS AUTHORS README doc/HACKING doc/SUCCESS
+%dir %{py_sitedir}/%{module}
+%attr(755,root,root) %{py_sitedir}/%{module}/*.so
+%{py_sitedir}/%{module}/*.py[co]
+%if "%{pld_release}" != "ac"
+%{py_sitedir}/*.egg-info
+%endif
+%{py_sitedir}/%{module}/tests
+%endif
+
+%if %{with python3}
+%files -n python3-%{module}
+%defattr(644,root,root,755)
+%doc NEWS AUTHORS README doc/HACKING doc/SUCCESS
+%dir %{py3_sitedir}/%{module}
+%dir %{py3_sitedir}/%{module}/__pycache__
+%attr(755,root,root) %{py3_sitedir}/%{module}/*.so
+%{py3_sitedir}/%{module}/*.py
+%{py3_sitedir}/%{module}/__pycache__/*.py*
+%{py3_sitedir}/*.egg-info
+%{py3_sitedir}/%{module}/tests
+%endif