diff --git a/python-SQLAlchemy.changes b/python-SQLAlchemy.changes index 6f6c07e..1aaba44 100644 --- a/python-SQLAlchemy.changes +++ b/python-SQLAlchemy.changes @@ -1,3 +1,14 @@ +------------------------------------------------------------------- +Mon Jul 15 20:05:02 UTC 2013 - hpj@urpla.net + +- apply patch to fix TypeError, when running python setup.py test + +------------------------------------------------------------------- +Sun Jul 14 22:20:29 UTC 2013 - hpj@urpla.net + +- add python-sqlite build dep for the test rig +- apply a patch, that fixes TB of the test rig + ------------------------------------------------------------------- Fri Mar 8 08:14:13 UTC 2013 - lars@linux-schulserver.de diff --git a/python-SQLAlchemy.spec b/python-SQLAlchemy.spec index 97b3c5c..9ac5ec4 100644 --- a/python-SQLAlchemy.spec +++ b/python-SQLAlchemy.spec @@ -24,10 +24,13 @@ Summary: Database Abstraction Library License: MIT Group: Development/Languages/Python Source0: http://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-%{version}.tar.gz +Patch0: sqlalchemy-0.7-logging.patch +Patch1: sqlalchemy-0.7-setup_test.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: python-devel BuildRequires: python-distribute BuildRequires: python-nose +BuildRequires: python-sqlite Provides: python-sqlalchemy = %{version} Obsoletes: python-sqlalchemy < %{version} %if 0%{?suse_version} && 0%{?suse_version} <= 1110 @@ -59,6 +62,8 @@ reference for python-SQLAlchemy. %setup -q -n SQLAlchemy-%{version} rm -rf doc/build # Remove unnecessary scripts for building documentation sed -i 's/\r$//' examples/dynamic_dict/dynamic_dict.py +%patch0 +%patch1 %build CFLAGS="%{optflags} -fno-strict-aliasing" python setup.py --with-cextensions build @@ -68,7 +73,7 @@ python setup.py install --prefix=%{_prefix} --root=%{buildroot} %if 0%{?suse_version} > 1110 %check -python setup.py test +python setup.py test -v %endif %files diff --git a/sqlalchemy-0.7-logging.patch b/sqlalchemy-0.7-logging.patch new file mode 100644 index 0000000..bd5beec --- /dev/null +++ b/sqlalchemy-0.7-logging.patch @@ -0,0 +1,116 @@ +Some odd reason usual import logging doesn't work; matches import of other modules in test_execute.py +diff -ur SQLAlchemy-0.7.9.orig/test/engine/test_execute.py SQLAlchemy-0.7.9/test/engine/test_execute.py +--- test/engine/test_execute.py 2012-10-02 06:33:29.000000000 +0800 ++++ test/engine/test_execute.py 2013-02-26 16:13:44.923958389 +0800 +@@ -9,7 +9,7 @@ + import sqlalchemy as tsa + from test.lib import testing, engines + from test.lib.engines import testing_engine +-import logging ++from logging import handlers, getLogger, DEBUG, INFO, WARN + from sqlalchemy.dialects.oracle.zxjdbc import ReturningParam + from sqlalchemy.engine import base, default + from sqlalchemy.engine.base import Connection, Engine +@@ -542,18 +542,18 @@ + def setup(self): + self.eng = engines.testing_engine(options={'echo':True}) + self.eng.execute("create table foo (data string)") +- self.buf = logging.handlers.BufferingHandler(100) ++ self.buf = handlers.BufferingHandler(100) + for log in [ +- logging.getLogger('sqlalchemy.engine'), +- logging.getLogger('sqlalchemy.pool') ++ getLogger('sqlalchemy.engine'), ++ getLogger('sqlalchemy.pool') + ]: + log.addHandler(self.buf) + + def teardown(self): + self.eng.execute("drop table foo") + for log in [ +- logging.getLogger('sqlalchemy.engine'), +- logging.getLogger('sqlalchemy.pool') ++ getLogger('sqlalchemy.engine'), ++ getLogger('sqlalchemy.pool') + ]: + log.removeHandler(self.buf) + +@@ -646,17 +646,17 @@ + return engines.testing_engine(options=kw) + + def setup(self): +- self.buf = logging.handlers.BufferingHandler(100) ++ self.buf = handlers.BufferingHandler(100) + for log in [ +- logging.getLogger('sqlalchemy.engine'), +- logging.getLogger('sqlalchemy.pool') ++ getLogger('sqlalchemy.engine'), ++ getLogger('sqlalchemy.pool') + ]: + log.addHandler(self.buf) + + def teardown(self): + for log in [ +- logging.getLogger('sqlalchemy.engine'), +- logging.getLogger('sqlalchemy.pool') ++ getLogger('sqlalchemy.engine'), ++ getLogger('sqlalchemy.pool') + ]: + log.removeHandler(self.buf) + +@@ -703,14 +703,14 @@ + __requires__ = 'ad_hoc_engines', + + def setup(self): +- self.level = logging.getLogger('sqlalchemy.engine').level +- logging.getLogger('sqlalchemy.engine').setLevel(logging.WARN) +- self.buf = logging.handlers.BufferingHandler(100) +- logging.getLogger('sqlalchemy.engine').addHandler(self.buf) ++ self.level = getLogger('sqlalchemy.engine').level ++ getLogger('sqlalchemy.engine').setLevel(WARN) ++ self.buf = handlers.BufferingHandler(100) ++ getLogger('sqlalchemy.engine').addHandler(self.buf) + + def teardown(self): +- logging.getLogger('sqlalchemy.engine').removeHandler(self.buf) +- logging.getLogger('sqlalchemy.engine').setLevel(self.level) ++ getLogger('sqlalchemy.engine').removeHandler(self.buf) ++ getLogger('sqlalchemy.engine').setLevel(self.level) + + def testing_engine(self): + e = engines.testing_engine() +@@ -727,26 +727,26 @@ + + eq_(e1._should_log_info(), False) + eq_(e1._should_log_debug(), False) +- eq_(e1.logger.isEnabledFor(logging.INFO), False) +- eq_(e1.logger.getEffectiveLevel(), logging.WARN) ++ eq_(e1.logger.isEnabledFor(INFO), False) ++ eq_(e1.logger.getEffectiveLevel(), WARN) + + e1.echo = True + eq_(e1._should_log_info(), True) + eq_(e1._should_log_debug(), False) +- eq_(e1.logger.isEnabledFor(logging.INFO), True) +- eq_(e1.logger.getEffectiveLevel(), logging.INFO) ++ eq_(e1.logger.isEnabledFor(INFO), True) ++ eq_(e1.logger.getEffectiveLevel(), INFO) + + e1.echo = 'debug' + eq_(e1._should_log_info(), True) + eq_(e1._should_log_debug(), True) +- eq_(e1.logger.isEnabledFor(logging.DEBUG), True) +- eq_(e1.logger.getEffectiveLevel(), logging.DEBUG) ++ eq_(e1.logger.isEnabledFor(DEBUG), True) ++ eq_(e1.logger.getEffectiveLevel(), DEBUG) + + e1.echo = False + eq_(e1._should_log_info(), False) + eq_(e1._should_log_debug(), False) +- eq_(e1.logger.isEnabledFor(logging.INFO), False) +- eq_(e1.logger.getEffectiveLevel(), logging.WARN) ++ eq_(e1.logger.isEnabledFor(INFO), False) ++ eq_(e1.logger.getEffectiveLevel(), WARN) + + def test_echo_flag_independence(self): + """test the echo flag's independence to a specific engine.""" diff --git a/sqlalchemy-0.7-setup_test.patch b/sqlalchemy-0.7-setup_test.patch new file mode 100644 index 0000000..41e93e1 --- /dev/null +++ b/sqlalchemy-0.7-setup_test.patch @@ -0,0 +1,18 @@ +--- setup.py~ 2013-02-08 01:10:48.000000000 +0100 ++++ setup.py 2013-07-15 21:49:07.339738788 +0200 +@@ -7,6 +7,15 @@ Please see README for basic installation + import os + import re + import sys ++# Hack to prevent "TypeError: 'NoneType' object is not callable" error ++# in multiprocessing/util.py _exit_function when running `python ++# setup.py test` (see ++# http://www.eby-sarna.com/pipermail/peak/2010-May/003357.html) ++try: ++ import multiprocessing ++except ImportError: ++ pass ++ + from distutils.command.build_ext import build_ext + from distutils.errors import (CCompilerError, DistutilsExecError, + DistutilsPlatformError)