2e8a820afd
#8223 replaced regex-based makefile target parsing with an invocation of "make -q". #8818 discovered that "make -q" can result in an error for some packages. Also, the "make -q" strategy relied on interpreting the error code, which only worked for GNU Make and not BSD Make (which was deemed acceptable at the time). As an added bonus, this implementation ignores the exit code and instead parses STDERR for any indications that the target does not exist; this works for both GNU Make and BSD Make. #8223 also updated ninja target detection to use "ninja -t targets". This does not change that behavior but makes it more-explicit with "ninja -t targets all" This also adds tests for detection of "make" and "ninja" targets.
192 lines
5.6 KiB
YAML
192 lines
5.6 KiB
YAML
#=============================================================================
|
|
# Project settings
|
|
#=============================================================================
|
|
# Only build master and develop on push; do not build every branch.
|
|
branches:
|
|
only:
|
|
- master
|
|
- develop
|
|
- /^releases\/.*$/
|
|
|
|
#=============================================================================
|
|
# Build matrix
|
|
#=============================================================================
|
|
|
|
# Adding the keyword dist to permit an `allow_failures` section
|
|
# under `matrix.include`. More information here:
|
|
#
|
|
# https://docs.travis-ci.com/user/customizing-the-build/#Rows-that-are-Allowed-to-Fail
|
|
dist: trusty
|
|
|
|
jobs:
|
|
fast_finish: true
|
|
include:
|
|
- stage: 'style checks'
|
|
python: '2.7'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=flake8
|
|
- stage: 'unit tests + documentation'
|
|
python: '2.6'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '2.7'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '3.3'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '3.4'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '3.5'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '3.6'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '3.7'
|
|
os: linux
|
|
dist: xenial
|
|
sudo: true
|
|
language: python
|
|
env: TEST_SUITE=unit
|
|
- python: '3.6'
|
|
os: linux
|
|
language: python
|
|
env: TEST_SUITE=doc
|
|
- stage: 'unit tests - osx'
|
|
os: osx
|
|
language: generic
|
|
env: [ TEST_SUITE=unit, PYTHON_VERSION=2.7 ]
|
|
# mpich (AutotoolsPackage)
|
|
- stage: 'build tests'
|
|
python: '2.7'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=build, 'SPEC=mpich' ]
|
|
# astyle (MakefilePackage)
|
|
- python: '2.7'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=build, 'SPEC=astyle' ]
|
|
# tut (WafPackage)
|
|
- python: '2.7'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=build, 'SPEC=tut' ]
|
|
# py-setuptools (PythonPackage)
|
|
- python: '2.7'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=build, 'SPEC=py-setuptools' ]
|
|
# perl-dbi (PerlPackage)
|
|
# - python: '2.7'
|
|
# os: linux
|
|
# language: python
|
|
# env: [ TEST_SUITE=build, 'SPEC=perl-dbi' ]
|
|
# openjpeg (CMakePackage + external cmake)
|
|
- python: '2.7'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=build, 'SPEC=openjpeg' ]
|
|
# r-rcpp (RPackage + external R)
|
|
- python: '2.7'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=build, 'SPEC=r-rcpp' ]
|
|
# mpich (AutotoolsPackage)
|
|
- python: '3.6'
|
|
os: linux
|
|
language: python
|
|
env: [ TEST_SUITE=build, 'SPEC=mpich' ]
|
|
allow_failures:
|
|
- dist: xenial
|
|
|
|
stages:
|
|
- 'style checks'
|
|
- 'unit tests + documentation'
|
|
- 'build tests'
|
|
- name: 'unit tests - osx'
|
|
if: type IN (cron)
|
|
|
|
|
|
#=============================================================================
|
|
# Environment
|
|
#=============================================================================
|
|
# Use new Travis infrastructure (Docker can't sudo yet)
|
|
sudo: false
|
|
|
|
# Docs need graphviz to build
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- gfortran
|
|
- mercurial
|
|
- graphviz
|
|
- gnupg2
|
|
- cmake
|
|
- ninja-build
|
|
- r-base
|
|
- r-base-core
|
|
- r-base-dev
|
|
- perl
|
|
- perl-base
|
|
|
|
cache:
|
|
pip: true
|
|
directories:
|
|
- ~/.mirror
|
|
|
|
# Work around Travis's lack of support for Python on OSX
|
|
before_install:
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew ls --versions python > /dev/null || brew install python; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then rm /usr/local/include/c++ ; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew ls --versions gcc > /dev/null || brew install gcc; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew ls --versions gnupg2 > /dev/null || brew install gnupg2; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then virtualenv venv; fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then source venv/bin/activate; fi
|
|
|
|
# Install various dependencies
|
|
install:
|
|
- pip install --upgrade pip
|
|
- pip install --upgrade six
|
|
- pip install --upgrade setuptools
|
|
- pip install --upgrade codecov
|
|
- pip install --upgrade flake8
|
|
- pip install --upgrade pep8-naming
|
|
- if [[ "$TEST_SUITE" == "doc" ]]; then pip install --upgrade -r lib/spack/docs/requirements.txt; fi
|
|
|
|
before_script:
|
|
# Need this for the git tests to succeed.
|
|
- git config --global user.email "spack@example.com"
|
|
- git config --global user.name "Test User"
|
|
|
|
# Need this to be able to compute the list of changed files
|
|
- git fetch origin develop:develop
|
|
|
|
# Set up external dependencies for build tests, because the take too long to compile
|
|
- if [[ "$TEST_SUITE" == "build" ]]; then cp share/spack/qa/configuration/packages.yaml etc/spack/packages.yaml; fi
|
|
|
|
#=============================================================================
|
|
# Building
|
|
#=============================================================================
|
|
script:
|
|
- share/spack/qa/run-$TEST_SUITE-tests
|
|
- if [[ "$TEST_SUITE" == "unit" || "$TEST_SUITE" == "build" ]]; then codecov --env PYTHON_VERSION --required --flags "${TEST_SUITE}${TRAVIS_OS_NAME}"; fi
|
|
|
|
#=============================================================================
|
|
# Notifications
|
|
#=============================================================================
|
|
notifications:
|
|
email:
|
|
recipients: tgamblin@llnl.gov
|
|
on_success: change
|
|
on_failure: always
|