1

Committer:
valeyev
Date:
Tue Mar 13 07:17:50 2018 +0000
Revision:
0:e056ac8fecf8
looking for...

Who changed what in which revision?

UserRevisionLine numberNew contents of line
valeyev 0:e056ac8fecf8 1 language: python
valeyev 0:e056ac8fecf8 2 python:
valeyev 0:e056ac8fecf8 3 '2.7'
valeyev 0:e056ac8fecf8 4
valeyev 0:e056ac8fecf8 5 env:
valeyev 0:e056ac8fecf8 6 global:
valeyev 0:e056ac8fecf8 7 - >
valeyev 0:e056ac8fecf8 8 STATUS=$'curl -so/dev/null --user "$MBED_BOT" --request POST
valeyev 0:e056ac8fecf8 9 https://api.github.com/repos/$TRAVIS_REPO_SLUG/statuses/${TRAVIS_PULL_REQUEST_SHA:-$TRAVIS_COMMIT}
valeyev 0:e056ac8fecf8 10 --data @- << DATA\n{
valeyev 0:e056ac8fecf8 11 "state": "$0",
valeyev 0:e056ac8fecf8 12 "description": "$1",
valeyev 0:e056ac8fecf8 13 "context": "travis-ci/$NAME",
valeyev 0:e056ac8fecf8 14 "target_url": "https://travis-ci.org/$TRAVIS_REPO_SLUG/jobs/$TRAVIS_JOB_ID"
valeyev 0:e056ac8fecf8 15 }\nDATA'
valeyev 0:e056ac8fecf8 16
valeyev 0:e056ac8fecf8 17 cache:
valeyev 0:e056ac8fecf8 18 pip: true
valeyev 0:e056ac8fecf8 19 directories:
valeyev 0:e056ac8fecf8 20 - $HOME/.cache/apt
valeyev 0:e056ac8fecf8 21 - $HOME/gcc-arm-none-eabi-6-2017-q2-update
valeyev 0:e056ac8fecf8 22
valeyev 0:e056ac8fecf8 23 before_install:
valeyev 0:e056ac8fecf8 24 - bash -c "$STATUS" pending "Local $NAME testing is in progress"
valeyev 0:e056ac8fecf8 25 # Make sure pipefail
valeyev 0:e056ac8fecf8 26 - set -o pipefail
valeyev 0:e056ac8fecf8 27 # Setup apt to cache
valeyev 0:e056ac8fecf8 28 - mkdir -p $HOME/.cache/apt/partial
valeyev 0:e056ac8fecf8 29 - sudo rm -rf /var/cache/apt/archives
valeyev 0:e056ac8fecf8 30 - sudo ln -s $HOME/.cache/apt /var/cache/apt/archives
valeyev 0:e056ac8fecf8 31 # Setup ppa to make sure arm-none-eabi-gcc is correct version
valeyev 0:e056ac8fecf8 32 - sudo add-apt-repository -y ppa:team-gcc-arm-embedded/ppa
valeyev 0:e056ac8fecf8 33 # Loop until update succeeds (timeouts can occur)
valeyev 0:e056ac8fecf8 34 - while [ -n "$(sudo apt-get update 2>&1 |grep Failed)" ]; do :; done
valeyev 0:e056ac8fecf8 35
valeyev 0:e056ac8fecf8 36 after_success:
valeyev 0:e056ac8fecf8 37 - bash -c "$STATUS" success "Local $NAME testing has passed"
valeyev 0:e056ac8fecf8 38
valeyev 0:e056ac8fecf8 39 after_failure:
valeyev 0:e056ac8fecf8 40 - bash -c "$STATUS" failure "Local $NAME testing has failed"
valeyev 0:e056ac8fecf8 41
valeyev 0:e056ac8fecf8 42 matrix:
valeyev 0:e056ac8fecf8 43 include:
valeyev 0:e056ac8fecf8 44 - env:
valeyev 0:e056ac8fecf8 45 - NAME=docs
valeyev 0:e056ac8fecf8 46 install:
valeyev 0:e056ac8fecf8 47 # Install dependencies
valeyev 0:e056ac8fecf8 48 - sudo apt-get install doxygen
valeyev 0:e056ac8fecf8 49 # Print versions we use
valeyev 0:e056ac8fecf8 50 - doxygen --version
valeyev 0:e056ac8fecf8 51 before_script:
valeyev 0:e056ac8fecf8 52 # Create BUILD directory for tests
valeyev 0:e056ac8fecf8 53 - mkdir BUILD
valeyev 0:e056ac8fecf8 54 script:
valeyev 0:e056ac8fecf8 55 # Assert that the Doxygen build produced no warnings.
valeyev 0:e056ac8fecf8 56 # The strange command below asserts that the Doxygen command had an
valeyev 0:e056ac8fecf8 57 # output of zero length
valeyev 0:e056ac8fecf8 58 - >
valeyev 0:e056ac8fecf8 59 doxygen doxyfile_options 2>&1 |
valeyev 0:e056ac8fecf8 60 tee BUILD/doxygen.out && [ ! -s BUILD/doxygen.out ]
valeyev 0:e056ac8fecf8 61 # Assert that all binary libraries are named correctly
valeyev 0:e056ac8fecf8 62 # The strange command below asserts that there are exactly 0 libraries
valeyev 0:e056ac8fecf8 63 # that do not start with lib
valeyev 0:e056ac8fecf8 64 - >
valeyev 0:e056ac8fecf8 65 find "(" -name "*.a" -or -name "*.ar" ")" -and -not -name "lib*" |
valeyev 0:e056ac8fecf8 66 tee BUILD/badlibs |
valeyev 0:e056ac8fecf8 67 sed -e "s/^/Bad library name found: /" && [ ! -s BUILD/badlibs ]
valeyev 0:e056ac8fecf8 68 # Assert that all assebler files are named correctly
valeyev 0:e056ac8fecf8 69 # The strange command below asserts that there are exactly 0 libraries
valeyev 0:e056ac8fecf8 70 # that do end with .s
valeyev 0:e056ac8fecf8 71 - >
valeyev 0:e056ac8fecf8 72 find -name "*.s" | tee BUILD/badasm |
valeyev 0:e056ac8fecf8 73 sed -e "s/^/Bad Assembler file name found: /" && [ ! -s BUILD/badasm ]
valeyev 0:e056ac8fecf8 74
valeyev 0:e056ac8fecf8 75 - env:
valeyev 0:e056ac8fecf8 76 - NAME=tools
valeyev 0:e056ac8fecf8 77 install:
valeyev 0:e056ac8fecf8 78 # Install dependencies
valeyev 0:e056ac8fecf8 79 - sudo apt-get install gcc-arm-embedded
valeyev 0:e056ac8fecf8 80 - pip install -r requirements.txt
valeyev 0:e056ac8fecf8 81 - pip install pytest pylint hypothesis mock coverage coveralls
valeyev 0:e056ac8fecf8 82 # Print versions we use
valeyev 0:e056ac8fecf8 83 - arm-none-eabi-gcc --version
valeyev 0:e056ac8fecf8 84 - python --version
valeyev 0:e056ac8fecf8 85 script:
valeyev 0:e056ac8fecf8 86 # Run local testing on tools
valeyev 0:e056ac8fecf8 87 - PYTHONPATH=. coverage run -a -m pytest tools/test
valeyev 0:e056ac8fecf8 88 - python tools/test/pylint.py
valeyev 0:e056ac8fecf8 89 - coverage run -a tools/project.py -S | sed -n '/^Total/p'
valeyev 0:e056ac8fecf8 90 - coverage html
valeyev 0:e056ac8fecf8 91 after_success:
valeyev 0:e056ac8fecf8 92 # Coverage for tools
valeyev 0:e056ac8fecf8 93 - coveralls
valeyev 0:e056ac8fecf8 94 # Report success since we have overridden default behaviour
valeyev 0:e056ac8fecf8 95 - bash -c "$STATUS" success "Local $NAME testing has passed"
valeyev 0:e056ac8fecf8 96
valeyev 0:e056ac8fecf8 97 - env:
valeyev 0:e056ac8fecf8 98 - NAME=events
valeyev 0:e056ac8fecf8 99 - EVENTS=events
valeyev 0:e056ac8fecf8 100 install:
valeyev 0:e056ac8fecf8 101 # Install dependencies
valeyev 0:e056ac8fecf8 102 - sudo apt-get install gcc-arm-embedded
valeyev 0:e056ac8fecf8 103 - pip install -r requirements.txt
valeyev 0:e056ac8fecf8 104 # Print versions we use
valeyev 0:e056ac8fecf8 105 - arm-none-eabi-gcc --version
valeyev 0:e056ac8fecf8 106 - gcc --version
valeyev 0:e056ac8fecf8 107 - python --version
valeyev 0:e056ac8fecf8 108 script:
valeyev 0:e056ac8fecf8 109 # Check that example compiles
valeyev 0:e056ac8fecf8 110 - sed -n '/``` cpp/,/```/{/```$/Q;/```/d;p;}' $EVENTS/README.md > main.cpp
valeyev 0:e056ac8fecf8 111 - python tools/make.py -t GCC_ARM -m K64F --source=. --build=BUILD/K64F/GCC_ARM -j0
valeyev 0:e056ac8fecf8 112 # Check that example compiles without rtos
valeyev 0:e056ac8fecf8 113 - sed -n '/``` cpp/,/```/{/```$/Q;/```/d;p;}' $EVENTS/README.md > main.cpp
valeyev 0:e056ac8fecf8 114 - rm -r rtos features/cellular features/netsocket features/frameworks BUILD
valeyev 0:e056ac8fecf8 115 - python tools/make.py -t GCC_ARM -m DISCO_F401VC --source=. --build=BUILD/DISCO_F401VC/GCC_ARM -j0
valeyev 0:e056ac8fecf8 116 # Run local equeue tests
valeyev 0:e056ac8fecf8 117 - make -C $EVENTS/equeue test
valeyev 0:e056ac8fecf8 118
valeyev 0:e056ac8fecf8 119 - env:
valeyev 0:e056ac8fecf8 120 - NAME=littlefs
valeyev 0:e056ac8fecf8 121 - LITTLEFS=features/filesystem/littlefs
valeyev 0:e056ac8fecf8 122 install:
valeyev 0:e056ac8fecf8 123 # Install dependencies
valeyev 0:e056ac8fecf8 124 - sudo apt-get install gcc-arm-embedded fuse libfuse-dev
valeyev 0:e056ac8fecf8 125 - pip install -r requirements.txt
valeyev 0:e056ac8fecf8 126 - git clone https://github.com/armmbed/spiflash-driver.git
valeyev 0:e056ac8fecf8 127 # Print versions
valeyev 0:e056ac8fecf8 128 - arm-none-eabi-gcc --version
valeyev 0:e056ac8fecf8 129 - gcc --version
valeyev 0:e056ac8fecf8 130 - python --version
valeyev 0:e056ac8fecf8 131 - fusermount --version
valeyev 0:e056ac8fecf8 132 before_script:
valeyev 0:e056ac8fecf8 133 # Setup and patch littlefs-fuse
valeyev 0:e056ac8fecf8 134 - git clone https://github.com/geky/littlefs-fuse littlefs_fuse
valeyev 0:e056ac8fecf8 135 - git -C littlefs_fuse checkout 3f1ed6e37799e49e3710830dc6abb926d5503cf2
valeyev 0:e056ac8fecf8 136 - echo '*' > littlefs_fuse/.mbedignore
valeyev 0:e056ac8fecf8 137 - rm -rf littlefs_fuse/littlefs/*
valeyev 0:e056ac8fecf8 138 - cp -r $(git ls-tree --name-only HEAD $LITTLEFS/littlefs/) littlefs_fuse/littlefs
valeyev 0:e056ac8fecf8 139 # Create file-backed disk
valeyev 0:e056ac8fecf8 140 - mkdir MOUNT
valeyev 0:e056ac8fecf8 141 - sudo chmod a+rw /dev/loop0
valeyev 0:e056ac8fecf8 142 - dd if=/dev/zero bs=512 count=2048 of=DISK
valeyev 0:e056ac8fecf8 143 - losetup /dev/loop0 DISK
valeyev 0:e056ac8fecf8 144 - CFLAGS="-Werror -Wno-format"
valeyev 0:e056ac8fecf8 145 script:
valeyev 0:e056ac8fecf8 146 # Check that example compiles
valeyev 0:e056ac8fecf8 147 - export CFLAGS="-Werror -Wno-format"
valeyev 0:e056ac8fecf8 148 - sed -n '/``` c++/,/```/{/```/d;p;}' $LITTLEFS/README.md > main.cpp
valeyev 0:e056ac8fecf8 149 - python tools/make.py -t GCC_ARM -m K82F --source=. --build=BUILD/K82F/GCC_ARM -j0
valeyev 0:e056ac8fecf8 150 # Run local littlefs tests
valeyev 0:e056ac8fecf8 151 - make -C$LITTLEFS/littlefs test QUIET=1
valeyev 0:e056ac8fecf8 152 # Run local littlefs tests with set of variations
valeyev 0:e056ac8fecf8 153 - make -C$LITTLEFS/littlefs test QUIET=1 CFLAGS+="-DLFS_READ_SIZE=64 -DLFS_PROG_SIZE=64"
valeyev 0:e056ac8fecf8 154 - make -C$LITTLEFS/littlefs test QUIET=1 CFLAGS+="-DLFS_READ_SIZE=1 -DLFS_PROG_SIZE=1"
valeyev 0:e056ac8fecf8 155 - make -C$LITTLEFS/littlefs test QUIET=1 CFLAGS+="-DLFS_READ_SIZE=512 -DLFS_PROG_SIZE=512"
valeyev 0:e056ac8fecf8 156 - make -C$LITTLEFS/littlefs test QUIET=1 CFLAGS+="-DLFS_BLOCK_COUNT=1023 -DLFS_LOOKAHEAD=2048"
valeyev 0:e056ac8fecf8 157 - make -C$LITTLEFS/littlefs clean test QUIET=1 CFLAGS+="-DLFS_NO_INTRINSICS"
valeyev 0:e056ac8fecf8 158 # Self-hosting littlefs fuzz test with littlefs-fuse
valeyev 0:e056ac8fecf8 159 - make -Clittlefs_fuse
valeyev 0:e056ac8fecf8 160 - littlefs_fuse/lfs --format /dev/loop0
valeyev 0:e056ac8fecf8 161 - littlefs_fuse/lfs /dev/loop0 MOUNT
valeyev 0:e056ac8fecf8 162 - ls MOUNT
valeyev 0:e056ac8fecf8 163 - mkdir MOUNT/littlefs
valeyev 0:e056ac8fecf8 164 - cp -r $(git ls-tree --name-only HEAD $LITTLEFS/littlefs/) MOUNT/littlefs
valeyev 0:e056ac8fecf8 165 - ls MOUNT/littlefs
valeyev 0:e056ac8fecf8 166 - CFLAGS="-Wno-format" make -CMOUNT/littlefs -B test_dirs test_files QUIET=1
valeyev 0:e056ac8fecf8 167 # Compile and find the code size with smallest configuration
valeyev 0:e056ac8fecf8 168 - cd $TRAVIS_BUILD_DIR/$LITTLEFS/littlefs
valeyev 0:e056ac8fecf8 169 - make clean size
valeyev 0:e056ac8fecf8 170 CC='arm-none-eabi-gcc -mthumb'
valeyev 0:e056ac8fecf8 171 OBJ="$(ls lfs*.o | tr '\n' ' ')"
valeyev 0:e056ac8fecf8 172 CFLAGS+="-DLFS_NO{ASSERT,DEBUG,WARN,ERROR}"
valeyev 0:e056ac8fecf8 173 | tee sizes
valeyev 0:e056ac8fecf8 174 after_success:
valeyev 0:e056ac8fecf8 175 # update status if we succeeded, compare with master if possible
valeyev 0:e056ac8fecf8 176 - |
valeyev 0:e056ac8fecf8 177 CURR=$(tail -n1 sizes | awk '{print $1}')
valeyev 0:e056ac8fecf8 178 PREV=$(curl https://api.github.com/repos/$TRAVIS_REPO_SLUG/status/master \
valeyev 0:e056ac8fecf8 179 | jq -re "select(.sha != \"$TRAVIS_COMMIT\")
valeyev 0:e056ac8fecf8 180 | .statuses[] | select(.context == \"travis-ci/$NAME\").description
valeyev 0:e056ac8fecf8 181 | capture(\"code size is (?<size>[0-9]+)\").size" \
valeyev 0:e056ac8fecf8 182 || echo 0)
valeyev 0:e056ac8fecf8 183
valeyev 0:e056ac8fecf8 184 STATUSM="Passed, code size is ${CURR}B"
valeyev 0:e056ac8fecf8 185 if [ "$PREV" -ne 0 ]
valeyev 0:e056ac8fecf8 186 then
valeyev 0:e056ac8fecf8 187 STATUSM="$STATUSM ($(python -c "print '%+.2f' % (100*($CURR-$PREV)/$PREV.0)")%)"
valeyev 0:e056ac8fecf8 188 fi
valeyev 0:e056ac8fecf8 189 - bash -c "$STATUS" success "$STATUSM"
valeyev 0:e056ac8fecf8 190
valeyev 0:e056ac8fecf8 191 - &mbed-2
valeyev 0:e056ac8fecf8 192 env: NAME=mbed2-NXP
valeyev 0:e056ac8fecf8 193 install:
valeyev 0:e056ac8fecf8 194 # Install dependencies
valeyev 0:e056ac8fecf8 195 - export GCC_DIR=$HOME/gcc-arm-none-eabi-6-2017-q2-update
valeyev 0:e056ac8fecf8 196 - export GCC_ARCHIVE=$HOME/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2
valeyev 0:e056ac8fecf8 197 - export GCC_URL=https://developer.arm.com/-/media/Files/downloads/gnu-rm/6-2017q2/gcc-arm-none-eabi-6-2017-q2-update-linux.tar.bz2?revision=2cc92fb5-3e0e-402d-9197-bdfc8224d8a5?product=GNU%20Arm%20Embedded%20Toolchain,64-bit,,Linux,6-2017-q2-update
valeyev 0:e056ac8fecf8 198 - if [ ! -e $GCC_DIR/bin/arm-none-eabi-gcc ]; then wget $GCC_URL -O $GCC_ARCHIVE; tar xfj $GCC_ARCHIVE -C $HOME; fi
valeyev 0:e056ac8fecf8 199 - export PATH=$PATH:$GCC_DIR/bin
valeyev 0:e056ac8fecf8 200 - pip install -r requirements.txt
valeyev 0:e056ac8fecf8 201 # Print versions we use
valeyev 0:e056ac8fecf8 202 - arm-none-eabi-gcc --version
valeyev 0:e056ac8fecf8 203 - python --version
valeyev 0:e056ac8fecf8 204 before_script:
valeyev 0:e056ac8fecf8 205 # Create BUILD directory for tests
valeyev 0:e056ac8fecf8 206 - mkdir BUILD
valeyev 0:e056ac8fecf8 207 script:
valeyev 0:e056ac8fecf8 208 # Run local mbed 2 testing
valeyev 0:e056ac8fecf8 209 - python -u tools/build_travis.py --vendor "${NAME#mbed2-}"
valeyev 0:e056ac8fecf8 210 - <<: *mbed-2
valeyev 0:e056ac8fecf8 211 env: NAME=mbed2-STM
valeyev 0:e056ac8fecf8 212 - <<: *mbed-2
valeyev 0:e056ac8fecf8 213 env: NAME=mbed2-NORDIC
valeyev 0:e056ac8fecf8 214 - <<: *mbed-2
valeyev 0:e056ac8fecf8 215 env: NAME=mbed2-SILICON_LABS
valeyev 0:e056ac8fecf8 216 - <<: *mbed-2
valeyev 0:e056ac8fecf8 217 env: NAME=mbed2-MAXIM
valeyev 0:e056ac8fecf8 218 - <<: *mbed-2
valeyev 0:e056ac8fecf8 219 env: NAME=mbed2-ATMEL
valeyev 0:e056ac8fecf8 220 - <<: *mbed-2
valeyev 0:e056ac8fecf8 221 env: NAME=mbed2-NUVOTON
valeyev 0:e056ac8fecf8 222 - <<: *mbed-2
valeyev 0:e056ac8fecf8 223 env: NAME=mbed2-RENESAS