sudo: required dist: xenial language: c compiler: - gcc git: depth: 1 # Each item under 'env' is a separate Travis job to execute. # They run in separate environments, so each one must take the time # to clone the repository and submodules; to download and install SDKs, # pip packages, and so forth. By gathering activities together in optimal # ways, the "run time" and "total time" of the travis jobs can be minimized. # # Since at the time of writing Travis generally starts 5 or 6 jobs, the # builds have been organized into 5 groups of *approximately* equal durations. # Additionally, the jobs that need extra SDKs are also organized together. # # When adding new boards, take a look on the travis CI page # https://travis-ci.org/adafruit/circuitpython to which build that installs # that SDK is shortest and add it there. In the case of major re-organizations, # just try to make the builds "about equal in run time" env: - TRAVIS_TESTS="unix docs translations" TRAVIS_BOARDS="feather_huzzah circuitplayground_express pca10056 pca10059 feather_nrf52832 feather_nrf52840_express makerdiary_nrf52840_mdk" TRAVIS_SDK=arm:nrf:esp8266 - TRAVIS_BOARDS="metro_m0_express metro_m4_express pirkey_m0 trellis_m4_express trinket_m0" TRAVIS_SDK=arm - TRAVIS_BOARDS="feather_radiofruit_zigbee gemma_m0 hallowing_m0_express itsybitsy_m0_express itsybitsy_m4_express meowmeow" TRAVIS_SDK=arm - TRAVIS_BOARDS="feather_m0_express_crickit feather_m0_rfm69 feather_m0_rfm9x feather_m4_express arduino_zero arduino_mkr1300" TRAVIS_SDK=arm - TRAVIS_BOARDS="circuitplayground_express_crickit feather_m0_adalogger feather_m0_basic feather_m0_express catwan_usbstick" TRAVIS_SDK=arm addons: artifacts: paths: - $(ls -d1 bin/*/* | tr "\n" ":") target_paths: / notifications: webhooks: urls: - https://rosie-ci.ngrok.io/travis on_success: always on_failure: always on_start: always on_cancel: always on_error: always before_script: # Expand the git tree back to the last tag. - LAST_TAG=`git ls-remote --quiet --tags --sort=version:refname | egrep -o "refs/tags/[0-9]+.*\$" | tail -n 1` - git fetch --shallow-exclude=$LAST_TAG - git fetch --depth 1 $LAST_TAG - git describe --dirty --always --tags - function var_search () { case "$1" in *$2*) true;; *) false;; esac; } - sudo dpkg --add-architecture i386 - (! var_search "${TRAVIS_SDK-}" arm || (wget https://s3.amazonaws.com/adafruit-circuit-python/gcc-arm-embedded_7-2018q2-1~xenial1_amd64.deb && sudo dpkg -i gcc-arm-embedded*_amd64.deb)) # For nrf builds - (! var_search "${TRAVIS_SDK-}" nrf || sudo ports/nrf/bluetooth/download_ble_stack.sh) # For huzzah builds - (! var_search "${TRAVIS_SDK-}" esp8266 || (wget https://github.com/jepler/esp-open-sdk/releases/download/2018-06-10/xtensa-lx106-elf-standalone.tar.gz && tar -C .. -xavf xtensa-lx106-elf-standalone.tar.gz)) - if var_search "${TRAVIS_SDK-}" esp8266 ; then PATH=$(readlink -f ../xtensa-lx106-elf/bin):$PATH; fi # For coverage testing (upgrade is used to get latest urllib3 version) - ([[ -z "$TRAVIS_TESTS" ]] || sudo apt-get install -y python3-pip) - ([[ -z "$TRAVIS_TESTS" ]] || sudo pip install --upgrade cpp-coveralls) - (! var_search "${TRAVIS_TESTS-}" docs || sudo pip install 'Sphinx<1.8.0' sphinx-rtd-theme recommonmark) - (! var_search "${TRAVIS_TESTS-}" translations || sudo pip3 install polib) # report some good version numbers to the build - gcc --version - (! var_search "${TRAVIS_SDK-}" arm || arm-none-eabi-gcc --version) - (! var_search "${TRAVIS_SDK-}" esp8266 || xtensa-lx106-elf-gcc --version) - python3 --version script: # Build mpy-cross first because other builds depend on it. - echo 'Building mpy-cross' && echo -en 'travis_fold:start:mpy-cross\\r' - make -C mpy-cross -j2 - echo -en 'travis_fold:end:mpy-cross\\r' - echo 'Building Adafruit binaries' && echo -en 'travis_fold:start:adafruit-bins\\r' - (for board in $TRAVIS_BOARDS; do TRAVIS_BOARD=$board tools/build_adafruit_bins.sh || exit $?; done) - echo -en 'travis_fold:end:adafruit-bins\\r' - echo 'Building unix' && echo -en 'travis_fold:start:unix\\r' - (! var_search "${TRAVIS_TESTS-}" unix || (make -C ports/unix deplibs -j2 && make -C ports/unix -j2 && make -C ports/unix coverage -j2)) - echo -en 'travis_fold:end:unix\\r' # run tests without coverage info #- (cd tests && MICROPY_CPYTHON3=python3.4 ./run-tests -j1) #- (cd tests && MICROPY_CPYTHON3=python3.4 ./run-tests -j1 --emit native) # run tests with coverage info - echo 'Test all' && echo -en 'travis_fold:start:test_all\\r' - (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1)) - echo -en 'travis_fold:end:test_all\\r' - echo 'Test threads' && echo -en 'travis_fold:start:test_threads\\r' - (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 -d thread)) - echo -en 'travis_fold:end:test_threads\\r' - echo 'Testing with native' && echo -en 'travis_fold:start:test_native\\r' - (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --emit native)) - echo -en 'travis_fold:end:test_native\\r' - (echo 'Testing with mpy' && echo -en 'travis_fold:start:test_mpy\\r') - (! var_search "${TRAVIS_TESTS-}" unix || (cd tests && MICROPY_CPYTHON3=python3.5 MICROPY_MICROPYTHON=../ports/unix/micropython_coverage ./run-tests -j1 --via-mpy -d basics float)) - echo -en 'travis_fold:end:test_mpy\\r' - (echo 'Building docs' && echo -en 'travis_fold:start:build_docs\\r') - (! var_search "${TRAVIS_TESTS-}" docs || sphinx-build -E -W -b html . _build/html) - echo -en 'travis_fold:end:build_docs\\r' - (echo 'Building translations' && echo -en 'travis_fold:start:build_translations\\r') - (! var_search "${TRAVIS_TESTS-}" translations || make check-translate) - echo -en 'travis_fold:end:build_translations\\r' # run coveralls coverage analysis (try to, even if some builds/tests failed) #- (cd ports/unix && coveralls --root ../.. --build-root . --gcov $(which gcov) --gcov-options '\-o build-coverage/' --include py --include extmod) after_failure: - (cd tests && for exp in *.exp; do testbase=$(basename $exp .exp); echo -e "\nFAILURE $testbase"; diff -u $testbase.exp $testbase.out; done)