Build debian package for SQLCipher4
This commit is contained in:
parent
2f68084bdd
commit
d1aa5762bc
28 changed files with 285904 additions and 168 deletions
95
README.md
95
README.md
|
|
@ -1,92 +1,13 @@
|
|||
sqlcipher3
|
||||
bouquin-sqlcipher4
|
||||
==========
|
||||
|
||||
*NOTICE*: This is a fork of [sqlcipher3](https://github.com/coleifer/sqlcipher3)
|
||||
which adds github action for creating wheels for Windows, MacOS and Linux.
|
||||
The unofficial wheels from this fork are uploaded to `sqlcipher3-wheels` on pypi,
|
||||
while the official wheels are `sqlcipher3-binary`.
|
||||
To install openssl easily, conan is used. I made some reference with
|
||||
[this fork of pysqlite3 by Dobatymo](https://github.com/Dobatymo/pysqlite3)
|
||||
*NOTICE*: This is a fork of [sqlcipher3-wheels](https://github.com/laggykiller/sqlcipher3),
|
||||
itself a fork of https://github.com/coleifer/sqlcipher3.
|
||||
|
||||
*NOTICE*: To build from this fork, copy `sqlite3.c` and `sqlite3.h`
|
||||
to `src/sqlcipher`, then run `pip wheel .` or `python -m build .`
|
||||
This one is intended for my Bouquin tool and is up to date with latest SQLCipher 4 (it also
|
||||
reuses the SQLCipher 4 version number to be aligned with it at all times).
|
||||
|
||||
*NOTICE*: The wheels are built with sqlcipher version 4. You have to execute
|
||||
`PRAGMA cipher_compatibility = 3` before doing any operations on a database
|
||||
encrypted with SQLCipher version 3 when a newer version is installed.
|
||||
Keep in mind, you have to add `PRAGMA cipher_compatibility` after `PRAGMA key`:
|
||||
|
||||
```python
|
||||
from sqlcipher3 import dbapi2 as sqlite
|
||||
conn = sqlite.connect('test.db')
|
||||
c = conn.cursor()
|
||||
c.execute("PRAGMA key='password'")
|
||||
c.execute("PRAGMA cipher_compatibility = 3")
|
||||
c.execute('''create table stocks (date text, trans text, symbol text, qty real, price real)''')
|
||||
c.execute("""insert into stocks values ('2006-01-05','BUY','RHAT',100,35.14)""")
|
||||
conn.commit()
|
||||
c.close()
|
||||
```
|
||||
|
||||
This library takes [pysqlite3](https://github.com/coleifer/pysqlite3) and makes
|
||||
some small modifications so it is suitable for use with
|
||||
[sqlcipher](https://github.com/sqlcipher/sqlcipher) (sqlite with encryption).
|
||||
|
||||
Additional features:
|
||||
|
||||
* User-defined window functions (requires SQLite >= 3.25)
|
||||
* Flags and VFS an be specified when opening connection
|
||||
* Incremental BLOB I/O, [bpo-24905](https://github.com/python/cpython/pull/271)
|
||||
* Improved error messages, [bpo-16379](https://github.com/python/cpython/pull/1108)
|
||||
* Simplified detection of DML statements via `sqlite3_stmt_readonly`.
|
||||
* Sqlite native backup API (also present in standard library 3.7 and newer).
|
||||
|
||||
A completely self-contained binary package (wheel) is available for versions
|
||||
0.4.0 and newer as `sqlcipher3-binary`. This package contains the latest
|
||||
release of sqlcipher compiled with numerous extensions, and requires no
|
||||
external dependencies.
|
||||
|
||||
Building with System SQLCipher
|
||||
------------------------------
|
||||
|
||||
To build `sqlcipher3` linked against the system SQLCipher, run:
|
||||
|
||||
```
|
||||
$ python setup.py build
|
||||
```
|
||||
|
||||
Building a statically-linked library
|
||||
------------------------------------
|
||||
|
||||
To build `sqlcipher3` statically-linked against a particular version of
|
||||
SQLCipher, you need to obtain the SQLCipher source code and copy `sqlite3.c`
|
||||
and `sqlite3.h` into the source tree.
|
||||
|
||||
```
|
||||
# Download the latest version of SQLCipher source code and build the source
|
||||
# amalgamation files (sqlite3.c and sqlite3.h).
|
||||
$ git clone https://github.com/sqlcipher/sqlcipher
|
||||
$ cd sqlcipher/
|
||||
$ ./configure
|
||||
$ make sqlite3.c
|
||||
|
||||
# Copy the sqlcipher amalgamation files into the root of the sqlcipher3
|
||||
# checkout and run build_static + build:
|
||||
$ cp sqlcipher/sqlite3.[ch] sqlcipher3/
|
||||
$ cd sqlcipher3
|
||||
$ python setup.py build_static build
|
||||
```
|
||||
|
||||
You now have a statically-linked, completely self-contained `sqlcipher3`.
|
||||
|
||||
Using the binary package
|
||||
------------------------
|
||||
|
||||
A binary package (wheel) is available for linux with a completely
|
||||
self-contained `sqlcipher3`, statically-linked against the most recent release
|
||||
of sqlcipher.
|
||||
|
||||
```
|
||||
$ pip install sqlcipher3-binary
|
||||
```
|
||||
The main motivation of the 'fork' is just to bring SQLCipher up to date and also to package
|
||||
it for Debian in my apt repo. This unblocks me to package Bouquin for Debian in my apt repo
|
||||
too.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue