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 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 gpg.py # install sphinx for building the html docs pip install sphinx # install travis-sphinx script to auto-deploy docs to the gh-pages branch on github pip install travis-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 # auto-deploy docs to the gh-pages branch on github travis-sphinx -v deploy fi notifications: irc: "chat.freenode.net#alot" on_success: change