You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

4.2 KiB

Build instructions for Debian 9 and 10

We assume the user keeps sources under ~/pep-src. There is no single installation prefix: each package is built, or when supported installed, in either its source directory or in a subdirectory of its source directory. Rationale: we do not pollute the user system, uninstalling is trivial.

This is Unix: we assume no spaces in user names.

mkdir -p ~/pep-src

Installing packaged dependencies

# general
apt install -y git
# libetpan
apt install -y git build-essential automake libtool
# asn1c
apt install -y git build-essential automake libtool autoconf
# sequoia
apt install git rustc cargo clang libclang-dev make pkg-config nettle-dev libssl-dev capnproto libsqlite3-dev
# engine
apt install -y uuid-dev libgpgme-dev libsqlite3-dev sqlite3
# optional: developer documentation
apt install -y doxygen pandoc

Installing unpackaged dependencies

YML2

mkdir -p ~/pep-src/yml2
git clone https://gitea.pep.foundation/fdik/yml2.git ~/pep-src/yml2

libetpan

pEp Engine requires libetpan with a set of patches that have not been upstreamed yet.

mkdir -p ~/pep-src/libetpan

git clone https://gitea.pep.foundation/pEp.foundation/libetpan.git ~/pep-src/libetpan
cd ~/pep-src/libetpan
mkdir ~/pep-src/libetpan/build
./autogen.sh --prefix="$HOME/pep-src/libetpan/build"
make
make install

asn1c

mkdir -p ~/pep-src/asn1c
git clone git://github.com/vlm/asn1c.git ~/pep-src/asn1c
cd ~/pep-src/asn1c
git checkout tags/v0.9.28 -b pep-engine
autoreconf -iv
mkdir ~/pep-src/asn1c/build
./configure --prefix="$HOME/pep-src/asn1c/build"
make
make install

sequoia

git clone https://gitlab.com/sequoia-pgp/sequoia
cd ~/pep-src/sequoia
git checkout openpgp/v1.3.0
# Make an optimised sequoia build.
cargo build --all --release -j16

This alternative for the last line above is faster, but generates compiled libraries in ~/pep-src/sequoia/target/debug instead of ~/pep-src/sequoia/target/release: several definitions below need to be adapted.

# Alternative: make a debugging sequoia build.
cargo build --all -j16

pEp Engine

mkdir -p ~/pep-src/pep-engine
git clone https://gitea.pep.foundation/pEp.foundation/pEpEngine ~/pep-src/pep-engine
cd ~/pep-src/pep-engine
mkdir build

Edit the build configuration to your needs in Makefile.conf, or create a local.conf in your source directory (the same containing Makefile.conf) that sets any of the make variables documented in Makefile.conf. All the default values for the build configuration variables on each platform are documented in Makefile.conf.

If a dependency is not found in your system's default include or library paths, you will have to specify the according paths in a make variable. Typically, this has to be done at least for YML2, libetpan and asn1c.

For a more detailed explanation of the mechanics of these build configuration files, and overriding defaults, see the comments in Makefile.conf.

The following ./local.conf example should work in the configuration described here.

PREFIX=$(HOME)/pep-src/pep-engine/build
PER_MACHINE_DIRECTORY=$(PREFIX)/share/pEp

YML2_PATH=$(HOME)/pep-src/yml2

ETPAN_LIB=-L$(HOME)/pep-src/libetpan/build/lib
ETPAN_INC=-I$(HOME)/pep-src/libetpan/build/include

ASN1C=$(HOME)/pep-src/asn1c/build/bin/asn1c
ASN1C_INC=-I$(HOME)/pep-src/asn1c/build/share/asn1c

SEQUOIA_INC=-I$(HOME)/pep-src/sequoia/openpgp-ffi/include
SEQUOIA_LDFLAGS=-L$(HOME)/pep-src/sequoia/target/release

GTEST_SRC_DIR=$(HOME)/pep-src/googletest/googletest
GTEST_INC_DIR=$(HOME)/pep-src/googletest/googletest/include
GTEST_PL=$(HOME)/pep-src/gtest-parallel/gtest_parallel.py

The engine is built as follows:

make all
make db

The unit tests can be run without the engine library being installed, however system.db must be installed:

make -C db install

Since system.db rarely changes, its installation is not needed for every build.

Tests can be compiled and executed with the following commands:

make -C test compile
make test