-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathREADME
111 lines (77 loc) · 4.25 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
The Qt Messaging Framework, QMF, consists of a C++ library and daemon
server process that can be used to build email clients, and more
generally software that interacts with email and mail servers.
Building and Compiling
======================
To build the Messaging Framework, ensure qt4, zlib and libicu development
packages are installed, and run qmake on the top level messagingframework.pro
file as follows:
qmake "QMF_INSTALL_ROOT=<image directory path>" messagingframework.pro
Where <image directory path> is the location that make install will put the
resultant binary files. It is optional but desirable to set this variable
as it is not possible to run the applications from within their build directories
due to dependencies. The debug configuration parameter is also optional.
Following this simply run:
make
make install
It is also recommended to build in a separate path to the source tree.
This is just a matter of running the above commands from within a separate
build directory.
Note: If there are build errors referring to valgrind (tst_messageserver),
please ensure that valgrind development headers are installed, or optionally
remove unwanted tests from the messagingframework.pro.
Note: By default the QmfWidgets module will be built, which depends on QtWidgets.
To remove this dependency use the define QMF_NO_WIDGETS, e.g.
qmake -r messagingframework.pro DEFINES+=QMF_NO_WIDGETS
In addition there is support for protocol plugins (e.g. IMAP/SMTP/POP)
to provide GUI account editors, which are by default and will be disabled
with above QMF_NO_WIDGETS.
Note: By default QMF operations on the message store are atomic and durable, so
long as the underlying OS supports durable writes, e.g. on Linux based systems
so long as fsync makes durable writes. Atomic means all of an operation such
as a delete/update/add take effect or none of it does. Durable means once an
operation is reported to have succeeded it will survive permanently even in
the event of a system crash. Ensuring these properties has a considerable
performance cost. To increase performance both durability and atomicity can
be disabled using the define QMF_NO_DURABILITY e.g.:
qmake -r messagingframework.pro DEFINES+=QMF_NO_DURABILITY
Running Messaging Framework
===========================
After make install has run, the following layout should exist:
bin
include
lib
tests
The binary files messageserver and qtmail and messagingaccounts should be
located in the bin directory.
Set the following evironment variables prior to running these files:
PATH=<imagedir/bin>:$PATH
LD_LIBRARY_PATH=<imagedir/lib>:$LD_LIBRARY_PATH
QT_PLUGIN_PATH=<imagedir/lib/qt5/plugins>
Optionally set QMF_DATA to the location where you want the framework data
files stored. If this is not set, the default of $HOME/.qmf will be used.
Note: When running the example client application qtmail, if the messageserver
is not already running it will be started as a child process of the application,
whose output is not visible. If you prefer to see the output of the messageserver
daemon, ensure it is running separately before running qtmail.
Testing the Messaging Framework
===============================
The messaging framework includes a series of unit tests designed to ensure
that it is functioning correctly in an operating environment. Unit tests
are located in the tests top-level directory.
To run the tests:
cd tests
make test
Normal make options control the operation of the testing - -j controls the
number of concurrent tests invoked, -k instructs make to keep running in
the event of a failure.
Note: some tests alter or remove data from the mailstore they operate against.
It is prudent to use a different value for the QMF_DATA environment variable
when running tests than when operating normally.
To run a single test, perform make test within the subdirectory of the relevant
test program. For example, to run just the tst_QMailCodec test:
make -C tests/tst_qmailcodec test
To run a single test suite, provide the name of the test suite in the ARGS variable:
make -C test/tst_qmailcodec ARGS="encode" test
To run a single test case, provide the name of the test case in the ARGS variable:
make -C test/tst_qmailcodec ARGS="encode:'one padding byte'" test