From ea49c03313af014cbc0b3ec184c7e3731ea21aaf Mon Sep 17 00:00:00 2001 From: Zachary Ware Date: Sun, 18 Feb 2018 15:44:49 -0600 Subject: [PATCH] [3.6] Clean up Travis config (GH-5727) (cherry picked from commit 7eb3f8226ea7b79dae4e4e8b05730cfe0d9af7c1) --- .travis.yml | 85 +++++++++++++++++++++++++++-------------------------- 1 file changed, 44 insertions(+), 41 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2bed281035..7d92c2e2f8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,13 +5,14 @@ group: beta # To cache doc-building dependencies and C compiler output. cache: - - pip - - ccache + - pip + - ccache branches: only: - master - /^\d\.\d$/ + - buildbot-custom matrix: fast_finish: true @@ -41,19 +42,12 @@ matrix: compiler: gcc env: OPTIONAL=true before_script: - - | - if ! git diff --name-only $TRAVIS_COMMIT_RANGE | grep -qvE '(\.rst$)|(^Doc)|(^Misc)' - then - echo "Only docs were updated, stopping build process." - exit - fi - # Build in release mode - ./configure PYTHON_FOR_REGEN=python3 - make -s -j4 - # Need a venv that can parse covered code. - ./python -m venv venv - ./venv/bin/python -m pip install -U coverage - ./venv/bin/python -m test.pythoninfo + - ./configure PYTHON_FOR_REGEN=python3 + - make -s -j4 + # Need a venv that can parse covered code. + - ./python -m venv venv + - ./venv/bin/python -m pip install -U coverage + - ./venv/bin/python -m test.pythoninfo script: # Skip tests that re-run the entire test suite. - ./venv/bin/python -m coverage run --pylib -m test -uall,-cpu -x test_multiprocessing_fork -x test_multiprocessing_forkserver -x test_multiprocessing_spawn @@ -62,41 +56,48 @@ matrix: - source ./venv/bin/activate - bash <(curl -s https://codecov.io/bash) -# Travis provides only 2 cores, so don't overdo the parallelism and waste memory. -before_script: - - | - set -e - if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then - files_changed=$(git diff --name-only $TRAVIS_COMMIT_RANGE) - else - # Pull requests are slightly complicated because merging the PR commit without - # rebasing causes it to retain its old commit date. Meaning in history if any - # commits have been made on master that post-date it, they will be accidentally - # included in the diff if we use the TRAVIS_COMMIT_RANGE variable. - files_changed=$(git diff --name-only HEAD $(git merge-base HEAD $TRAVIS_BRANCH)) - fi - - # Prints changed files in this commit to help debug doc-only build issues. - echo "Files changed: " - echo $files_changed - if ! echo "$files_changed" | grep -qvE '(\.rst$)|(^Doc)|(^Misc)' +before_install: + - set -e + - | + # Check short-circuit conditions + if [ "${TESTING}" != "docs" ] then - echo "Only docs were updated, stopping build process." - exit + if [ "$TRAVIS_PULL_REQUEST" = "false" ] + then + echo "Not a PR, doing full build." + else + # Pull requests are slightly complicated because $TRAVIS_COMMIT_RANGE + # may include more changes than desired if the history is convoluted. + # Instead, explicitly fetch the base branch and compare against the + # merge-base commit. + git fetch -q origin +refs/heads/$TRAVIS_BRANCH + changes=$(git diff --name-only HEAD $(git merge-base HEAD FETCH_HEAD)) + echo "Files changed:" + echo "$changes" + if ! echo "$changes" | grep -qvE '(\.rst$)|(^Doc)|(^Misc)' + then + echo "Only docs were updated, stopping build process." + exit + fi + fi fi - # Build in debug mode - ./configure --with-pydebug PYTHON_FOR_REGEN=python3 - make -j4 regen-all - changes=`git status --porcelain` + +# Travis provides only 2 cores, so don't overdo the parallelism and waste memory. +before_script: + - ./configure --with-pydebug PYTHON_FOR_REGEN=python3 + - make -j4 regen-all + - changes=`git status --porcelain` + - | + # Check for changes in regenerated files if ! test -z "$changes" then echo "Generated files not up to date" echo "$changes" exit 1 fi - make -j4 - make pythoninfo + - make -j4 + - make pythoninfo script: # Using the built Python as patchcheck.py is built around the idea of using @@ -104,6 +105,8 @@ script: # should be compared against. # Only run on Linux as the check only needs to be run once. - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then ./python Tools/scripts/patchcheck.py --travis $TRAVIS_PULL_REQUEST; fi + # Check that all symbols exported by libpython start with "Py" or "_Py" + - make smelly # `-r -w` implicitly provided through `make buildbottest`. - make buildbottest TESTOPTS="-j4 -uall,-cpu" -- 2.40.0