diff --git a/.gitignore b/.gitignore index 8e5359b..214f0f7 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,11 @@ amalgamation build *.pyc +.pybuild/ dist/ MANIFEST debian/python-sqlcipher +debian/python-sqlcipher-dbg debian/*.log debian/files debian/*.substvars diff --git a/debian/control b/debian/control index 8eb174a..1b4e1d6 100644 --- a/debian/control +++ b/debian/control @@ -3,7 +3,7 @@ Maintainer: Ben Carrillo Section: python Priority: optional Build-Depends: python-all-dev (>= 2.6.6-3), libsqlcipher-dev (>=2.2.1-2~), debhelper (>= 9) -Standards-Version: 3.9.4 +Standards-Version: 3.9.6 Uploaders: Micah Anderson X-Python-Version: >= 2.5 @@ -17,3 +17,14 @@ Description: DB-API 2.0 interface for SQLCIPHER 3.x database engine. It is almost fully compliant with the Python database API version 2.0. At the same time, it also exposes the unique features of SQLCipher. + +Package: python-sqlcipher-dbg +Section: debug +Priority: extra +Architecture: any +Depends: python-dbg, python-sqlcipher, libsqlcipher0 (>=2.2.1-2), + ${misc:Depends}, ${python:Depends}, ${shlibs:Depends} +Description: DB-API 2.0 interface for SQLCIPHER 3.x + Python interface to SQLCipher (debug extension) + . + This package contains the extensions built for the python debug interpreter. diff --git a/debian/rules b/debian/rules index 2620c92..8066ba0 100755 --- a/debian/rules +++ b/debian/rules @@ -5,16 +5,31 @@ # Prevent setuptools/distribute from accessing the internet. export http_proxy = http://127.0.0.1:9 +PACKAGE=python-sqlcipher + %: dh $@ --with python2 --buildsystem=python_distutils override_dh_auto_build: - python$* setup.py build_sqlcipher + python$* setup.py build_with_system_sqlcipher python$* setup.py build_py + export DEBUG_MODE=1 && export DEB_CFLAGS_MAINT_APPEND=-O0 && python$*-dbg setup.py build_with_system_sqlcipher + export DEBUG_MODE=1 && export DEB_CFLAGS_MAINT_APPEND=-O0 && python$*-dbg setup.py build_py + override_dh_auto_install: python$* setup.py install --skip-build --root=debian/python-sqlcipher \ --install-layout=deb + python$*-dbg setup.py install --skip-build --root=debian/python-sqlcipher-dbg \ + --install-layout=deb + +override_dh_installdocs: + dh_installdocs + rm -rf debian/$(PACKAGE)-dbg/usr/share/doc/$(PACKAGE)-dbg + ln -s $(PACKAGE) debian/$(PACKAGE)-dbg/usr/share/doc/$(PACKAGE)-dbg + +override_dh_strip: + dh_strip --dbg-package=$(PACKAGE)-dbg override_dh_python2: dh_python2 --no-guessing-versions diff --git a/debian/watch b/debian/watch deleted file mode 100644 index 7dec5aa..0000000 --- a/debian/watch +++ /dev/null @@ -1,4 +0,0 @@ -version=3 - -http://pypi.python.org/packages/source/p/pysqlcipher/pysqlcipher-(.*)\.tar\.gz - diff --git a/setup.py b/setup.py index f1aa879..20fbb51 100644 --- a/setup.py +++ b/setup.py @@ -141,15 +141,37 @@ def __init__(self, *args, **kwargs): build.__init__(self, *args, **kwargs) +DEBUG_MODE = os.environ.get("DEBUG_MODE", False) + + class LibSQLCipherBuilder(build_ext): description = ("Build C extension linking against libsqlcipher library.") def build_extension(self, ext): + if DEBUG_MODE: + self.__remove_compiler_option("-O2") + self.__remove_compiler_option("-O1") + ext.extra_compile_args.append("-I/usr/include/sqlcipher/") ext.extra_link_args.append("-lsqlcipher") build_ext.build_extension(self, ext) + def __remove_compiler_option(self, option): + """ + Remove the specified compiler option. + + Return true if the option was found. Return false otherwise. + """ + found = 0 + for attrname in ('compiler', 'compiler_so'): + compiler = getattr(self.compiler, attrname, None) + if compiler is not None: + while option in compiler: + compiler.remove(option) + found += 1 + return found + class MyBuildExt(build_ext): amalgamation = True # We want amalgamation on the default build for now @@ -353,7 +375,7 @@ def get_setup_args(): {"build_docs": DocBuilder, "build_ext": MyBuildExt, "build_static": AmalgamationBuilder, - "build_sqlcipher": LibSQLCipherBuilder, + "build_with_system_sqlcipher": LibSQLCipherBuilder, "cross_bdist_wininst": cross_bdist_wininst.bdist_wininst}) return setup_args