summaryrefslogtreecommitdiff
path: root/.travis.yml
blob: 74d2e83123ed3367aed4ba786245c0339469093d (plain)
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
language: python

# We want the docs checks to run as fast as possible and with minimal setup,
# hence they will be run in a container.  For the full build (needed for the
# test runs) this is not possible as neither Ubuntu 12.4 nor 14.4 offer recent
# enough versions of some packages.
matrix:
  include:
    # a container for checking the docs
    - os: linux
      dist: trusty
      sudo: false
      python: "2.7"
      env: JOB=docs
    # a full VM to build all deps and run the tests
    - os: linux
      dist: trusty
      sudo: true
      python: "2.7"
      env: JOB=tests

addons:
  apt:
    packages:
      # The gpgme build files are needed by the gpgme python module
      # (a dependency of alot).
      - libgpgme11-dev
      # 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

# 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
    sudo apt-get update
    # Until https://github.com/travis-ci/apt-package-whitelist/issues/3895 is
    # resolved we have to install gmime with sudo.  Afterwards we can swtich
    # to the container based infrastructure.
    # gmime is needed to build notmuch from source.
    sudo apt-get -yqq install libgmime-2.6-dev
    # Clone the notmuch repository and move into it.
    git clone git://notmuchmail.org/git/notmuch
    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
    make install
    # Export the library search path.
    export LD_LIBRARY_PATH=$HOME/.local/lib
    # Install the python bindings.
    cd bindings/python
    pip install .
    # Move out of the notmuch dir again.
    cd ../../..
  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 twisted 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 gpgme.py
      # install sphinx for building the html docs
      pip install sphinx
    else
      pip install .
    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
    python setup.py test
  fi