Clean up doc/readme.md, Linux- and macOS-specific instructions ENGINE-237
authorDamiano Boppart <damiano@pep-security.net>
Tue, 29 Aug 2017 00:25:54 +0200
branchENGINE-237
changeset 20144b6659d17b61
parent 2009 7da0d79c6141
child 2015 eefffcd9f781
Clean up doc/readme.md, Linux- and macOS-specific instructions
doc/README-OSX.md
doc/README.txt
doc/build-debian.md
doc/build-ios.md
doc/build-macos.md
doc/readme.md
     1.1 --- a/doc/README-OSX.md	Mon Aug 28 14:35:16 2017 +0200
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,137 +0,0 @@
     1.4 -This file is under Creative Commons License 3.0 cc-by-sa
     1.5 -
     1.6 -# Building for OS X/macOS
     1.7 -See also README.txt for general information.
     1.8 -
     1.9 -For compiling pEp Engine and its dependencies, make sure you have the LANG variable set. Some source files contain unicode characters, and python (assuming files are ascii) will fail.
    1.10 -
    1.11 -```
    1.12 -export LANG=en_US.UTF-8
    1.13 -```
    1.14 -
    1.15 -## Dependencies
    1.16 -
    1.17 -### MacPorts
    1.18 -[Install MacPorts](https://www.macports.org/install.php) for your version of OS X/macOS.
    1.19 -
    1.20 -If MacPorts is already installed on your machine, but was installed by a different user, make sure your `PATH` variable is set as follows in `~/.profile`:
    1.21 -
    1.22 -```
    1.23 -export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
    1.24 -```
    1.25 -
    1.26 -Install dependencies packaged with MacPorts as follows.
    1.27 -
    1.28 -```
    1.29 -sudo port install mercurial py27-lxml gpgme autoconf automake libtool asn1c zlib openssl libiconv cyrus-sasl2
    1.30 -```
    1.31 -
    1.32 -Make sure that `python` is a version 2 one:
    1.33 -
    1.34 -```
    1.35 -sudo port select python python27
    1.36 -```
    1.37 -
    1.38 -### NetPGP (if not GPGME)
    1.39 -
    1.40 -#### Prepare :
    1.41 -
    1.42 -Get OpenSSL and build/install it as shared library.
    1.43 -
    1.44 -```
    1.45 -wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
    1.46 -tar xvfz openssl-1.0.1u.tar.gz
    1.47 -cd openssl-1.0.1u
    1.48 -./Configure darwin64-x86_64-cc --prefix=$HOME shared
    1.49 -make install
    1.50 -```
    1.51 -
    1.52 -Get and autoconf NetPGP
    1.53 -
    1.54 -```
    1.55 -cd $SRC
    1.56 -hg clone https://cacert.pep.foundation/dev/repos/netpgp-et/
    1.57 -cd netpgp-et
    1.58 -autoreconf -i
    1.59 -```
    1.60 -
    1.61 -#### Build
    1.62 -
    1.63 -Important : LDFLAGS is set to help finding OpenSSL shared lib. If not set,
    1.64 -system's default libcrypto may silently be used instead, causing memory
    1.65 -corruption or crash at runtime.
    1.66 -
    1.67 -```
    1.68 -mkdir netpgp_debug
    1.69 -cd netpgp_debug
    1.70 -$SRC/netpgp-et/configure --with-openssl=$HOME --prefix=$HOME CPPFLAGS=-DDEBUG CXXFLAGS="-g -O0" LDFLAGS="-L${HOME}/lib"
    1.71 -make
    1.72 -make install
    1.73 -```
    1.74 -
    1.75 -### Other Dependecies
    1.76 -
    1.77 -#### [yml2](https://fdik.org/yml/toolchain)
    1.78 -Install into your home directory:
    1.79 -
    1.80 -```
    1.81 -pushd ~
    1.82 -hg clone https://cacert.pep.foundation/dev/repos/yml2/
    1.83 -popd
    1.84 -```
    1.85 -
    1.86 -#### libetpan
    1.87 -
    1.88 -Note: libetpan needs libz and libiconv, but the libiconv from MacPorts is not compatible, some
    1.89 -functions seem to have been renamed there. Therefore the dynlib from OS X is used.
    1.90 -
    1.91 -```
    1.92 -git clone https://github.com/fdik/libetpan
    1.93 -cd libetpan
    1.94 -./autogen.sh --prefix "$HOME"
    1.95 -make
    1.96 -make install
    1.97 -```
    1.98 -
    1.99 -## Building pEp Engine
   1.100 -
   1.101 -### Configuration
   1.102 -You can change some defaults by editing `Makefile.conf`. The following variable needs to be set appropriately:
   1.103 -
   1.104 -```
   1.105 -LIBGPGME=/opt/local/lib/libgpgme.11.dylib
   1.106 -```
   1.107 -
   1.108 -### Build
   1.109 -
   1.110 -```
   1.111 -make clean
   1.112 -make all
   1.113 -make db
   1.114 -```
   1.115 -
   1.116 -### Installation
   1.117 -
   1.118 -```
   1.119 -make install
   1.120 -sudo make -C db install
   1.121 -```
   1.122 -
   1.123 -Since the `system.db` rarely changes, the last step is not needed for every build. If you would like to be able to install the engine without `sudo`, ensure that your user can write the file `/usr/local/share/pEp/system.db`. This is not recommended for production machines.
   1.124 -
   1.125 -### Run tests
   1.126 -
   1.127 -If you installed the test keys in your keyring (see: README.txt), this should just work:
   1.128 -
   1.129 -```
   1.130 -cd test
   1.131 -make test
   1.132 -```
   1.133 -
   1.134 -# Building for iOS
   1.135 -
   1.136 -This is done with Xcode. Simply add `pEpEngine.xcodeproj` to
   1.137 -your project and add a dependency to the target `pEpEngine`
   1.138 -(in `Target Dependencies` in your `Build Phases`.
   1.139 -
   1.140 -Usually you just integrate `pEpiOSAdapter.xcodeproj`.
     2.1 --- a/doc/README.txt	Mon Aug 28 14:35:16 2017 +0200
     2.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.3 @@ -1,102 +0,0 @@
     2.4 -# this file is under Creative Commons License 3.0 cc-by-sa
     2.5 -
     2.6 -1. Dependencies
     2.7 ----------------
     2.8 -
     2.9 -p≡p engine is depending on the following FOSS libraries:
    2.10 -
    2.11 -* a fork of libetpan, see https://github.com/fdik/libetpan
    2.12 -       git clone https://github.com/fdik/libetpan
    2.13 -
    2.14 -* zlib, see http://zlib.net/
    2.15 -Oh yeah? Where?
    2.16 -
    2.17 -* OpenSSL, see http://openssl.org/
    2.18 -Oh yeah? Where?
    2.19 -
    2.20 -* iconv, see http://www.gnu.org/software/libiconv/
    2.21 -
    2.22 -* Cyrus SASL, see http://cyrusimap.org/
    2.23 -Oh yeah? Where?
    2.24 -
    2.25 -* One of the following OpenPGP implementations:
    2.26 -  * GnuPG via GPGME, version 1.6.0 or newer, see https://gnupg.org/
    2.27 -  * NetPGP/p≡p, see https://cacert.pep.foundation/dev/repos/netpgp-et/
    2.28 -
    2.29 -* libcurl
    2.30 -Maybe on iOS?
    2.31 -
    2.32 -SQlite3
    2.33 -
    2.34 -
    2.35 -
    2.36 -
    2.37 -compile-time dependencies:
    2.38 -
    2.39 -* Asn1c, download from https://lionet.info/soft/asn1c-0.9.27.tar.gz . Debian 8's v0.9.24 does not work. Debian 9's v0.9.27 generates non-POSIX code, that will cause issues when the engine is compiled with '-std=c99'. Thus, use v0.9.28 for best results.
    2.40 -
    2.41 -* yml2, which needs lxml (where to get?)
    2.42 -
    2.43 -* One of the following build systems
    2.44 -  * GNU make
    2.45 -  * Visual Studio 2015
    2.46 -
    2.47 -
    2.48 -2. Building p≡p engine
    2.49 -----------------------
    2.50 -
    2.51 -p≡p engine has an old style Makefile for building it.
    2.52 -
    2.53 -The build is configured in Makefile.conf
    2.54 -
    2.55 -It supports the common targets
    2.56 -
    2.57 -$ make all
    2.58 -$ make install
    2.59 -$ make clean
    2.60 -
    2.61 -and additionally
    2.62 -
    2.63 -$ make package # for building a .tar.bz2 with the source distribution
    2.64 -
    2.65 -On Windows, use Visual Studio.
    2.66 -
    2.67 -
    2.68 -3. How to cross-build
    2.69 ----------------------
    2.70 -
    2.71 -For cross-building, BUILD_FOR is being used. I.e.:
    2.72 -
    2.73 -$ BUILD_FOR=yourOS make -e
    2.74 -
    2.75 -
    2.76 -4. How to build the databases
    2.77 ------------------------------
    2.78 -
    2.79 -p≡p Engine uses two databases: ~/.pEp_management (on *NIX) or
    2.80 -%LOCALAPPDATA%\pEp\management.db on Windoze respectively, and
    2.81 -/usr/local/share/system.db on *NIX or %ALLUSERSPROFILE%\pEp\system.db
    2.82 -respectively. The latter contains the Trustwords dbs.
    2.83 -
    2.84 -The managment db is being created by the first call of init() of p≡p Engine. It
    2.85 -does not need to be created manually. system.db is being created by using the
    2.86 -DDL in db/create_system_db.sql – the content is created by db/dic2csv.py
    2.87 -out of hunspell's dictionary packages (or something similar) and then being
    2.88 -imported using sqlite3's .import command. Dictionary files for different
    2.89 -languages are part of p≡p engine source distribution.
    2.90 -
    2.91 -$ make db
    2.92 -$ make -C db install
    2.93 -
    2.94 -You can test the Trustwords in system.db using db/trustwords.py
    2.95 -Both Python tools have a switch --help
    2.96 -
    2.97 -
    2.98 -5. How to run the tests
    2.99 ------------------------
   2.100 -
   2.101 -You have to import all the test keys into your local gpg instance:
   2.102 -
   2.103 -	cd test
   2.104 -	cat 0x*.asc *_sec.asc| gpg --import
   2.105 -
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/doc/build-debian.md	Tue Aug 29 00:25:54 2017 +0200
     3.3 @@ -0,0 +1,111 @@
     3.4 +<!-- Copyright 2015-2017, pEp foundation, Switzerland
     3.5 +This file is part of the pEp Engine
     3.6 +This file may be used under the terms of the Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) License
     3.7 +See CC_BY-SA.txt -->
     3.8 +
     3.9 +# Build instructions for Debian 9
    3.10 +
    3.11 +# Installing packaged dependencies
    3.12 +
    3.13 +~~~
    3.14 +# general
    3.15 +apt install -y ca-cacert mercurial
    3.16 +# YML2
    3.17 +apt install -y python-lxml
    3.18 +# libetpan
    3.19 +apt install -y git build-essential automake libtool
    3.20 +# asn1c
    3.21 +apt install -y git build-essential automake libtool
    3.22 +# engine
    3.23 +apt install -y uuid-dev libgpgme11-dev libsqlite3-dev sqlite3
    3.24 +~~~
    3.25 +
    3.26 +# Installing unpackaged dependencies
    3.27 +## YML2
    3.28 +
    3.29 +~~~
    3.30 +mkdir -p ~/code/yml2
    3.31 +hg clone https://cacert.pep.foundation/dev/repos/yml2/ ~/code/yml2
    3.32 +~~~
    3.33 +
    3.34 +## libetpan
    3.35 +pEp Engine requires libetpan with a set of patches that have not been upstreamed yet.
    3.36 +
    3.37 +~~~
    3.38 +mkdir -p ~/code/libetpan
    3.39 +git clone https://github.com/fdik/libetpan ~/code/libetpan
    3.40 +cd ~/code/libetpan
    3.41 +mkdir ~/code/libetpan/build
    3.42 +./autogen.sh --prefix="$HOME/code/libetpan/build"
    3.43 +make
    3.44 +make install
    3.45 +~~~
    3.46 +
    3.47 +## asn1c
    3.48 +
    3.49 +~~~
    3.50 +mkdir -p ~/code/asn1c
    3.51 +git clone git://github.com/vlm/asn1c.git ~/code/asn1c
    3.52 +cd ~/code/asn1c
    3.53 +git checkout tags/v0.9.28 -b pep-engine
    3.54 +autoreconf -iv
    3.55 +mkdir ~/code/asn1c/build
    3.56 +./configure --prefix="$HOME/code/asn1c/build"
    3.57 +make
    3.58 +make install
    3.59 +~~~
    3.60 +
    3.61 +# pEp Engine
    3.62 +
    3.63 +~~~
    3.64 +mkdir -p ~/code/pep-engine
    3.65 +hg clone https://cacert.pep.foundation/dev/repos/pEpEngine/ ~/code/pep-engine
    3.66 +cd ~/code/pep-engine
    3.67 +mkdir ~/code/pep-engine/build
    3.68 +~~~
    3.69 +
    3.70 +For an explanation of the mechanics of `PLATFORM_OVERRIDE`, see the inline comments in `Makefile.conf`.
    3.71 +In this guide, the platform-specific configuration will be called `local`.
    3.72 +The installation directory will be a subdirectory of the repository.
    3.73 +This is useful for testing only.
    3.74 +
    3.75 +~~~
    3.76 +export PLATFORM_OVERRIDE=local
    3.77 +~~~
    3.78 +
    3.79 +`./build-config/local.conf`:
    3.80 +
    3.81 +~~~
    3.82 +PREFIX=$(HOME)/code/pep-engine/build
    3.83 +SYSTEM_DB=$(PREFIX)/share/pEp/system.db
    3.84 +
    3.85 +YML2_PATH=$(HOME)/code/yml2
    3.86 +
    3.87 +ETPAN_LIB=-L$(HOME)/code/libetpan/build/lib
    3.88 +ETPAN_INC=-I$(HOME)/code/libetpan/build/include
    3.89 +
    3.90 +ASN1C=$(HOME)/code/asn1c/build/bin/asn1c
    3.91 +ASN1C_INC=-I$(HOME)/code/asn1c/build/share
    3.92 +~~~
    3.93 +
    3.94 +The engine is built as follows:
    3.95 +
    3.96 +~~~
    3.97 +make all
    3.98 +make db
    3.99 +~~~
   3.100 +
   3.101 +The unit tests can be run without the engine library being installed, however the `system.db` must be installed:
   3.102 +
   3.103 +~~~
   3.104 +make -C db install
   3.105 +~~~
   3.106 +
   3.107 +Since `system.db` rarely changes, its installation is not needed for every build.
   3.108 +
   3.109 +Tests can be compiled and executed with the following commands:
   3.110 +
   3.111 +~~~
   3.112 +make -C test compile
   3.113 +make test
   3.114 +~~~
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/doc/build-ios.md	Tue Aug 29 00:25:54 2017 +0200
     4.3 @@ -0,0 +1,35 @@
     4.4 +# Using NetPGP instead of GnuPG
     4.5 +## Prepare
     4.6 +
     4.7 +Get OpenSSL and build/install it as shared library.
     4.8 +
     4.9 +```
    4.10 +wget https://www.openssl.org/source/old/1.0.1/openssl-1.0.1u.tar.gz
    4.11 +tar xvfz openssl-1.0.1u.tar.gz
    4.12 +cd openssl-1.0.1u
    4.13 +./Configure darwin64-x86_64-cc --prefix=$HOME shared
    4.14 +make install
    4.15 +```
    4.16 +
    4.17 +Get and autoconf NetPGP
    4.18 +
    4.19 +```
    4.20 +cd $SRC
    4.21 +hg clone https://cacert.pep.foundation/dev/repos/netpgp-et/
    4.22 +cd netpgp-et
    4.23 +autoreconf -i
    4.24 +```
    4.25 +
    4.26 +## Build
    4.27 +
    4.28 +Important : LDFLAGS is set to help finding OpenSSL shared lib. If not set,
    4.29 +system's default libcrypto may silently be used instead, causing memory
    4.30 +corruption or crash at runtime.
    4.31 +
    4.32 +```
    4.33 +mkdir netpgp_debug
    4.34 +cd netpgp_debug
    4.35 +$SRC/netpgp-et/configure --with-openssl=$HOME --prefix=$HOME CPPFLAGS=-DDEBUG CXXFLAGS="-g -O0" LDFLAGS="-L${HOME}/lib"
    4.36 +make
    4.37 +make install
    4.38 +```
     5.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.2 +++ b/doc/build-macos.md	Tue Aug 29 00:25:54 2017 +0200
     5.3 @@ -0,0 +1,125 @@
     5.4 +<!-- Copyright 2015-2017, pEp foundation, Switzerland
     5.5 +This file is part of the pEp Engine
     5.6 +This file may be used under the terms of the Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) License
     5.7 +See CC_BY-SA.txt -->
     5.8 +
     5.9 +# Build instructions for macOS Sierra and iOS
    5.10 +
    5.11 +# Installing packaged dependencies
    5.12 +
    5.13 +## MacPorts
    5.14 +
    5.15 +MacPorts is needed to install some compile-time dependencies.
    5.16 +Install MacPorts according to the instructions found [here](https://www.macports.org/install.php).
    5.17 +Ensure that Macports' binary paths (`/opt/local/bin` and `/opt/local/sbin`) are in your `PATH` environment variable.
    5.18 +
    5.19 +~~~
    5.20 +# general
    5.21 +sudo port install mercurial
    5.22 +# YML2
    5.23 +sudo port install py27-lxml
    5.24 +# libetpan
    5.25 +sudo port install git autoconf automake libtool
    5.26 +# asn1c
    5.27 +sudo port install asn1c
    5.28 +# engine
    5.29 +sudo port install gpgme
    5.30 +~~~
    5.31 +
    5.32 +FIXME Are `zlib openssl cyrus-sasl2` needed? They were in an older revision of the instructions
    5.33 +
    5.34 +Ensure that `python` is Python 2.7:
    5.35 +
    5.36 +~~~
    5.37 +sudo port select python python27
    5.38 +~~~
    5.39 +
    5.40 +# Installing unpackaged dependencies
    5.41 +## YML2
    5.42 +
    5.43 +~~~
    5.44 +mkdir -p ~/code/yml2
    5.45 +hg clone https://cacert.pep.foundation/dev/repos/yml2/ ~/code/yml2
    5.46 +~~~
    5.47 +
    5.48 +## libetpan
    5.49 +pEp Engine requires libetpan with a set of patches that have not been upstreamed yet.
    5.50 +
    5.51 +~~~
    5.52 +mkdir -p ~/code/libetpan
    5.53 +git clone https://github.com/fdik/libetpan ~/code/libetpan
    5.54 +cd ~/code/libetpan
    5.55 +mkdir ~/code/libetpan/build
    5.56 +./autogen.sh --prefix="$HOME/code/libetpan/build"
    5.57 +make
    5.58 +make install
    5.59 +~~~
    5.60 +
    5.61 +## GPGME
    5.62 +The MacPorts-packaged GPGME links to a version of GNU libiconv that has files in the same include/library paths as GPGME. This version of libiconv must not be visible to the linker when the pEp Engine is build or run.
    5.63 +
    5.64 +Thus the files of the GPGME distribution will have to be manually copied to separate include/library folders, so that no include or library paths used for building the pEp Engine contains files of MacPorts' libiconv distribution.
    5.65 +
    5.66 +~~~
    5.67 +mkdir -p ~/code/gpgme/build/include
    5.68 +cp /opt/local/include/gpg*.h ~/code/gpgme/build/include
    5.69 +mkdir -p ~/code/gpgme/build/lib
    5.70 +cp -r /opt/local/lib/libgpg* ~/code/gpgme/build/lib
    5.71 +~~~
    5.72 +
    5.73 +It's of course possible to skip MacPort's version, and use a self-compiled GPGME/GPG.
    5.74 +
    5.75 +# pEp Engine
    5.76 +
    5.77 +~~~
    5.78 +mkdir -p ~/code/pep-engine
    5.79 +hg clone https://cacert.pep.foundation/dev/repos/pEpEngine/ ~/code/pep-engine
    5.80 +cd ~/code/pep-engine
    5.81 +mkdir ~/code/pep-engine/build
    5.82 +~~~
    5.83 +
    5.84 +For an explanation of the mechanics of `PLATFORM_OVERRIDE`, see the inline comments in `Makefile.conf`.
    5.85 +In this guide, the platform-specific configuration will be called `local`.
    5.86 +The installation directory will be a subdirectory of the repository.
    5.87 +This is useful for testing only.
    5.88 +
    5.89 +~~~
    5.90 +export PLATFORM_OVERRIDE=local
    5.91 +~~~
    5.92 +
    5.93 +`./build-config/local.conf`:
    5.94 +
    5.95 +~~~
    5.96 +PREFIX=$(HOME)/code/pep-engine/build
    5.97 +SYSTEM_DB=$(PREFIX)/share/pEp/system.db
    5.98 +
    5.99 +YML2_PATH=$(HOME)/code/yml2
   5.100 +
   5.101 +ETPAN_LIB=-L$(HOME)/code/libetpan/build/lib
   5.102 +ETPAN_INC=-I$(HOME)/code/libetpan/build/include
   5.103 +
   5.104 +GPGME_LIB=-L$(HOME)/code/gpgme/build/lib
   5.105 +GPGME_INC=-I$(HOME)/code/gpgme/build/include
   5.106 +~~~
   5.107 +
   5.108 +The engine is built as follows:
   5.109 +
   5.110 +~~~
   5.111 +make all
   5.112 +make db
   5.113 +~~~
   5.114 +
   5.115 +The unit tests can be run without the engine library being installed, however the `system.db` must be installed:
   5.116 +
   5.117 +~~~
   5.118 +make -C db install
   5.119 +~~~
   5.120 +
   5.121 +Since `system.db` rarely changes, its installation is not needed for every build.
   5.122 +
   5.123 +Tests can be compiled and executed with the following commands:
   5.124 +
   5.125 +~~~
   5.126 +make -C test compile
   5.127 +make test
   5.128 +~~~
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/doc/readme.md	Tue Aug 29 00:25:54 2017 +0200
     6.3 @@ -0,0 +1,44 @@
     6.4 +<!-- Copyright 2015-2017, pEp foundation, Switzerland
     6.5 +This file is part of the pEp Engine
     6.6 +This file may be used under the terms of the Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) License
     6.7 +See CC_BY-SA.txt -->
     6.8 +
     6.9 +# Information about the pEp Engine
    6.10 +
    6.11 +# Dependencies
    6.12 +The p≡p Engine depends on the following projects:
    6.13 +
    6.14 +- run-time dependencies
    6.15 +  - One of the following OpenPGP implementations:
    6.16 +    - GnuPG (version 2.0.30 or 2.1.16 or newer) by way of GPGME (version 1.6.0 or newer) [https://gnupg.org/](https://gnupg.org/)
    6.17 +    - a fork of NetPGP, [https://cacert.pep.foundation/dev/repos/netpgp-et/](https://cacert.pep.foundation/dev/repos/netpgp-et/)
    6.18 +  - a fork of libetpan, [https://github.com/fdik/libetpan](https://github.com/fdik/libetpan)
    6.19 +  - zlib (Oh yeah, where?), [http://zlib.net/](http://zlib.net/)
    6.20 +  - OpenSSL (Oh yeah, where?), [https://www.openssl.org](https://www.openssl.org)
    6.21 +  - Cyrus SASL (Oh yeah, where?), [https://www.cyrusimap.org](https://www.cyrusimap.org)
    6.22 +  - libcurl (Oh yeah, where?), [https://curl.haxx.se/libcurl/](https://curl.haxx.se/libcurl/)
    6.23 +  - libuuid, [https://www.kernel.org/pub/linux/utils/util-linux/](https://www.kernel.org/pub/linux/utils/util-linux/)
    6.24 +  - SQLite, [https://sqlite.org](https://sqlite.org)
    6.25 +- compile-time dependencies
    6.26 +  - asn1c (version v0.9.28), [http://lionet.info/asn1c/blog/](http://lionet.info/asn1c/blog/)
    6.27 +  - yml2, [https://fdik.org/yml//toolchain](https://fdik.org/yml//toolchain)
    6.28 +  - One of the following build systems:
    6.29 +    - GNU make (on Linux and macOS)
    6.30 +    - MSBuild distributed with Microsoft Visual Studio 2015 (on Windows)
    6.31 +  - One of the following compilers for C and C++:
    6.32 +    - GNU GCC (on Linux)
    6.33 +    - Apple "clang" LLVM (on MacOS)
    6.34 +    - Microsoft MSVC/MSVC++ distributed with Microsoft Visual Studio 2015 (on Windows)
    6.35 +
    6.36 +# The pEp Engine's databases
    6.37 +The p≡p Engine uses two databases:
    6.38 +`~/.pEp_management` (on *NIX) or `%LOCALAPPDATA%\pEp\management.db` on Windows, and `/usr/local/share/system.db` (on *NIX) or `%ALLUSERSPROFILE%\pEp\system.db`.
    6.39 +The latter contains the Trustwords databases.
    6.40 +
    6.41 +The management db is created by the first call of init() of p≡p Engine.
    6.42 +It does not need to be created manually.
    6.43 +`system.db` is created by using the DDL in `db/create_system_db.sql`; the database content is created by `db/dic2csv.py` out of hunspell's dictionary packages (or something similar) and then imported using `sqlite3`'s `.import` command.
    6.44 +Dictionary files for different languages are part of the p≡p Engine source distribution.
    6.45 +
    6.46 +You can test the Trustwords in `system.db` using `db/trustwords.py`.
    6.47 +Both Python tools have a `--help` switch.
    6.48 \ No newline at end of file