-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path.travis.yml
160 lines (141 loc) · 4.55 KB
/
.travis.yml
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
language: python
sudo: True
# Cache pip objects to speed up next build
cache:
pip: True
ccache: True
# Python 3.7 is not supported in trusty
dist: xenial
python:
# We can add more version strings here when we support other python
# versions.
- "3.5"
- "3.6"
- "3.7"
# We start two containers in parallel, one to check and build the docs and the
# other to run the test suite.
env:
- JOB=docs
- JOB=tests
addons:
apt:
packages:
# The notmuch libs are needed to actually run alot. But currently the
# available version is not compatible with alot, so we have to build
# from source.
#- notmuch
# Dependencies to build notmuch from source.
- libxapian-dev
- libtalloc-dev
- zlib1g-dev
- libgmime-2.6-dev
# dependencies to build the python-gpg module from source
- swig
# Build notmuch and the python notmuch libs manually. The versions of the
# notmuch library and the python module which are available in the 12.04 and
# 14.04 Ubuntu repos do not match and do not fullfill the version requirement
# for alot.
before_install: |
set -e
if [[ $JOB = tests ]]; then
# Build with ccache to speed up rebuilds.
export PATH=/usr/lib/ccache:$PATH
# Set paths
export LD_LIBRARY_PATH=$HOME/.local/lib
export PKG_CONFIG_PATH=$HOME/.local/lib/pkgconfig
# Clone the notmuch repository and move into it.
git clone git://notmuchmail.org/git/notmuch --depth 1
cd notmuch
# Make and install the library. We install the library without sudo as we
# might want to switch to the travis container later.
./configure --prefix=$HOME/.local
make -j3 -l2
make install
# Export the library search path.
# Install the python bindings.
cd bindings/python
pip install .
# Install the coverage programs to generate a coverage report and upload
# it to codacy.com
pip install coverage codacy-coverage
# Move out of the notmuch dir again.
cd ../../..
# Build GPGME since the version shipping is far too old
# needs a newer version of gpg-errors
curl https://gnupg.org/ftp/gcrypt/libgpg-error/libgpg-error-1.27.tar.bz2 -o gpgerror.tar.bz2
tar xvf gpgerror.tar.bz2
pushd libgpg-error-1.27
./configure --prefix=$HOME/.local
make -j3 -l2
make install
popd
# and a newer version of libassaun
curl https://gnupg.org/ftp/gcrypt/libassuan/libassuan-2.4.3.tar.bz2 -o assuan.tar.bz2
tar xf assuan.tar.bz2
pushd libassuan-2.4.3
./configure --prefix=$HOME/.local
make -j3 -l2
make install
popd
curl https://gnupg.org/ftp/gcrypt/gpgme/gpgme-1.9.0.tar.bz2 -o gpgme.tar.bz2
tar xf gpgme.tar.bz2
pushd gpgme-1.9.0
./configure --prefix=$HOME/.local
make -j3 -l2
make install
popd
fi
# Prepare a minimal config file for the test.
before_script: |
set -e
if [[ $JOB = tests ]]; then
touch ~/.notmuch-config
echo 'initial_command=call os._exit(0)' > conf
fi
# Install or mock dependencies for alot as the package has to be imported
# during generation of the docs.
install:
# urwid needs to be installed first. The installation of urwidtrees will
# fail otherwise.
# TODO This should be fixed upstream.
- pip install urwid
# Install alot and the dependencies it declares.
- |
set -e
if [[ $JOB = docs ]]; then
pip install configobj python-magic urwidtrees
# Mock all "difficult" dependencies of alot in order to be able to import
# alot when rebuilding the documentation. Notmuch would have to be
# installed by hand in order to get a recent enough version on travis.
printf '%s = None\n' NotmuchError NullPointerError > notmuch.py
touch gpg.py
# install sphinx for building the html docs
pip install sphinx
else
pip install .[test]
fi
script: |
set -e
if [[ $JOB = docs ]]; then
# First remove the auto generated documentation source files.
make -C docs cleanall
# Regenerate them (run "true" instead of sphinx-build to speed things up).
make -C docs html SPHINXBUILD=true
# Check that the generated docs where already commited.
git diff --exit-code
# Generate the html docs and turn all warnings into errors.
make -C docs html SPHINXBUILD='sphinx-build -W'
else
alot --config conf
coverage run setup.py test
fi
after_success: |
set -e
if [[ $JOB = tests ]]; then
coverage xml
export CODACY_PROJECT_TOKEN=df4443e7313e4ae599bcbbaf4835b00f
python-codacy-coverage -r coverage.xml
fi
notifications:
irc: "chat.freenode.net#alot"
on_success: change