os: linux language: python addons: apt: packages: - gdb - python-dbg - python3-dbg - libzmq-dev # needed by IPython/Tornado #- gcc-8 #- g++-8 cache: pip: true directories: - $HOME/.ccache python: - 3.8 - 2.7 - 3.9-dev - 3.7 - 3.6 - 3.5 - 3.4 env: global: - USE_CCACHE=1 - CCACHE_SLOPPINESS=pch_defines,time_macros - CCACHE_COMPRESS=1 - CCACHE_MAXSIZE=250M - PATH="/usr/lib/ccache:$HOME/miniconda/bin:$PATH" - BACKEND=c,cpp matrix: - BACKEND=c - BACKEND=cpp matrix: include: # slowest first - os: osx osx_image: xcode11.3 env: PY=2 python: 2 language: c compiler: clang cache: false - os: osx osx_image: xcode11.3 env: PY=3 python: 3 language: c compiler: clang cache: false # Disabled: coverage analysis takes excessively long, several times longer than without. # - python: 3.7 # env: COVERAGE=1 - python: 3.7 env: TEST_CODE_STYLE=1 - python: 3.8 env: LIMITED_API=--limited-api EXCLUDE=--no-file - python: 3.7 env: LIMITED_API=--limited-api EXCLUDE=--no-file - python: 3.6 env: LIMITED_API=--limited-api EXCLUDE=--no-file - env: STACKLESS=true BACKEND=c PY=2 python: 2.7 - env: STACKLESS=true BACKEND=c PY=3 python: 3.6 - python: pypy env: BACKEND=c - python: pypy3 env: BACKEND=c # a secondary pypy tests which is allowed to fail and which specifically # tests known bugs - python: pypy env: BACKEND=c EXCLUDE="--listfile=tests/pypy_bugs.txt --listfile=tests/pypy2_bugs.txt bugs" - python: pypy3 env: BACKEND=c EXCLUDE="--listfile=tests/pypy_bugs.txt bugs" allow_failures: - python: 3.9-dev - env: BACKEND=c EXCLUDE="--listfile=tests/pypy_bugs.txt bugs" - env: BACKEND=c EXCLUDE="--listfile=tests/pypy_bugs.txt --listfile=tests/pypy2_bugs.txt bugs" branches: only: - master - release before_install: - | if [ "$TRAVIS_OS_NAME" == "linux" ]; then # adding apt repos in travis is really fragile => retry a couple of times. for i in {1..10}; do travis_retry sudo apt-add-repository --yes 'ppa:ubuntu-toolchain-r/test' && break; sleep 2; done for i in {1..10}; do travis_retry sudo apt-get update && travis_retry sudo apt-get install --yes gcc-8 $(if [ -z "${BACKEND##*cpp*}" ]; then echo -n "g++-8"; fi ) && break; sleep 2; done sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 60 $(if [ -z "${BACKEND##*cpp*}" ]; then echo " --slave /usr/bin/g++ g++ /usr/bin/g++-8"; fi) sudo update-alternatives --set gcc /usr/bin/gcc-8 export CC=gcc if [ -z "${BACKEND##*cpp*}" ]; then sudo update-alternatives --set g++ /usr/bin/g++-8; export CXX=g++; fi fi - | if [ "$TRAVIS_OS_NAME" == "osx" -o "$STACKLESS" == "true" ]; then echo "Installing Miniconda" if [ "$TRAVIS_OS_NAME" == "osx" ]; then CONDA_PLATFORM=MacOSX; else CONDA_PLATFORM=Linux; fi travis_retry curl -s -o miniconda.sh https://repo.continuum.io/miniconda/Miniconda$PY-latest-${CONDA_PLATFORM}-x86_64.sh bash miniconda.sh -b -p $HOME/miniconda && rm miniconda.sh #conda install --quiet --yes nomkl --file=test-requirements.txt --file=test-requirements-cpython.txt if [ "$TRAVIS_OS_NAME" == "osx" ]; then which clang && clang --version && export CC=clang || true which clang++ && clang++ --version && export CXX=clang++ || true fi fi - if [ -n "$CC" ]; then which $CC; $CC --version; fi - if [ -n "$CXX" ]; then which $CXX; $CXX --version; fi - if [ "$STACKLESS" == "true" ]; then conda config --add channels stackless; travis_retry conda install --quiet --yes stackless; fi install: - python -c 'import sys; print("Python %s" % (sys.version,))' - if [ -n "${TRAVIS_PYTHON_VERSION##*-dev}" ]; then pip install -r test-requirements.txt $( [ -z "${TRAVIS_PYTHON_VERSION##pypy*}" -o -z "${TRAVIS_PYTHON_VERSION##3.[4789]*}" ] || echo " -r test-requirements-cpython.txt" ) ; fi # - CFLAGS="-O2 -ggdb -Wall -Wextra $(python -c 'import sys; print("-fno-strict-aliasing" if sys.version_info[0] == 2 else "")')" python setup.py build before_script: ccache -s || true script: - PYTHON_DBG="python$( python -c 'import sys; print("%d.%d" % sys.version_info[:2])' )-dbg" - if [ "$TEST_CODE_STYLE" = "1" ]; then STYLE_ARGS="--no-unit --no-doctest --no-file --no-pyregr --no-examples"; else STYLE_ARGS=--no-code-style; if $PYTHON_DBG -V >&2; then CFLAGS="-O0 -ggdb" $PYTHON_DBG runtests.py -vv --no-code-style Debugger --backends=$BACKEND; fi; if [ -z "${BACKEND##*cpp*}" -a -n "${TRAVIS_PYTHON_VERSION##*-dev}" ]; then pip install pythran; fi; if [ "$BACKEND" != "cpp" -a -n "${TRAVIS_PYTHON_VERSION##2*}" -a -n "${TRAVIS_PYTHON_VERSION##pypy*}" -a -n "${TRAVIS_PYTHON_VERSION##*-dev}" -a -n "${TRAVIS_PYTHON_VERSION##*3.4}" ]; then pip install mypy; fi; fi # Need to clear the ccache? Try something like this: # - if [ -n "${BACKEND##*cpp*}" -a -z "${TRAVIS_PYTHON_VERSION##*3.4}" ]; then ccache -C || true; fi - if [ "$COVERAGE" != "1" ]; then CFLAGS="-O2 -ggdb -Wall -Wextra $(python -c 'import sys; print("-fno-strict-aliasing" if sys.version_info[0] == 2 else "")')" python setup.py build_ext -i; fi - CFLAGS="-O0 -ggdb -Wall -Wextra" python runtests.py -vv $STYLE_ARGS -x Debugger --backends=$BACKEND $LIMITED_API $EXCLUDE $(if [ "$COVERAGE" == "1" ]; then echo " --coverage"; fi) $(if [ -z "$TEST_CODE_STYLE" ]; then echo " -j7 "; fi) - ccache -s || true