From c155277ff4092ec682d9b17b85d17dbbca3166db Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Mon, 2 Feb 2015 23:14:32 -0400 Subject: [PATCH 1/2] add package with debug symbols --- .gitignore | 2 ++ debian/control | 13 ++++++++++++- debian/rules | 17 ++++++++++++++++- debian/watch | 4 ---- setup.py | 24 +++++++++++++++++++++++- 5 files changed, 53 insertions(+), 7 deletions(-) delete mode 100644 debian/watch 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 From 36b4a043bd6b0ebb303d9076fded4e1c726aa4b0 Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Wed, 4 Feb 2015 00:04:19 -0400 Subject: [PATCH 2/2] fix lintian warning about copyright --- debian/copyright | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/debian/copyright b/debian/copyright index b0eabf7..4af271b 100644 --- a/debian/copyright +++ b/debian/copyright @@ -6,47 +6,47 @@ Source: Files: setup.* Copyright (C) 2013 Kali Kaneko Copyright (C) 2005-2010 Gerhard Häring - + . This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. - + . Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - + . 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. - + . 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - + . 3. This notice may not be removed or altered from any source distribution. Files: * Copyright (C) 2005-2010 Gerhard Häring - + . This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. - + . Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: - + . 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. - + . 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. - + . 3. This notice may not be removed or altered from any source distribution. @@ -56,4 +56,4 @@ License: GPL-3+ License: GPL-3+ On Debian systems, the complete text of the GNU General - Public License can be found in `/usr/share/common-licenses/GPL'. \ No newline at end of file + Public License can be found in `/usr/share/common-licenses/GPL'.