1# Copyright Roger Meier <r.meier@siemens.com> 2# SPDX-License-Identifier: GPL-2.0+ 3 4# build U-Boot on Travis CI - https://travis-ci.org/ 5 6sudo: required 7dist: trusty 8 9language: c 10 11addons: 12 apt: 13 sources: 14 - sourceline: 'ppa:gns3/qemu' 15 packages: 16 - cppcheck 17 - sloccount 18 - sparse 19 - bc 20 - build-essential 21 - libsdl1.2-dev 22 - python 23 - python-virtualenv 24 - qemu-system-arm 25 - qemu-system-mips 26 - qemu-system-ppc 27 - qemu-system-x86 28 - gcc-powerpc-linux-gnu 29 - gcc-arm-linux-gnueabihf 30 - gcc-aarch64-linux-gnu 31 - iasl 32 33install: 34 # install latest device tree compiler 35 - git clone --depth=1 git://git.kernel.org/pub/scm/utils/dtc/dtc.git /tmp/dtc 36 - make -j4 -C /tmp/dtc 37 # Clone uboot-test-hooks 38 - git clone --depth=1 git://github.com/swarren/uboot-test-hooks.git /tmp/uboot-test-hooks 39 - ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname` 40 - ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname` 41 # prepare buildman environment 42 - echo -e "[toolchain]\nroot = /usr" > ~/.buildman 43 - echo -e "\n[toolchain-alias]\nblackfin = bfin\nsh = sh4\nopenrisc = or32" >> ~/.buildman 44 - cat ~/.buildman 45 - virtualenv /tmp/venv 46 - . /tmp/venv/bin/activate 47 - pip install pytest 48 49env: 50 global: 51 - PATH=/tmp/dtc:/tmp/uboot-test-hooks/bin:$PATH 52 - BUILD_DIR=build 53 - HOSTCC="cc" 54 - HOSTCXX="c++" 55 56before_script: 57 # install toolchains based on TOOLCHAIN} variable 58 - if [[ "${TOOLCHAIN}" == *avr32* ]]; then ./tools/buildman/buildman --fetch-arch avr32 ; fi 59 - if [[ "${TOOLCHAIN}" == *bfin* ]]; then ./tools/buildman/buildman --fetch-arch bfin ; fi 60 - if [[ "${TOOLCHAIN}" == *m68k* ]]; then ./tools/buildman/buildman --fetch-arch m68k ; fi 61 - if [[ "${TOOLCHAIN}" == *microblaze* ]]; then ./tools/buildman/buildman --fetch-arch microblaze ; fi 62 - if [[ "${TOOLCHAIN}" == *mips* ]]; then ./tools/buildman/buildman --fetch-arch mips ; fi 63 - if [[ "${TOOLCHAIN}" == *or32* ]]; then ./tools/buildman/buildman --fetch-arch or32 ; fi 64 - if [[ "${TOOLCHAIN}" == *sh4* ]]; then ./tools/buildman/buildman --fetch-arch sh4 ; fi 65 - if [[ "${TOOLCHAIN}" == *x86_64* ]]; then 66 ./tools/buildman/buildman --fetch-arch x86_64; 67 echo -e "\n[toolchain-prefix]\nx86 = ${HOME}/.buildman-toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-" >> ~/.buildman; 68 fi 69 - if [[ "${TOOLCHAIN}" == *xtensa* ]]; then ./tools/buildman/buildman --fetch-arch xtensa ; fi 70 71script: 72 # Comments must be outside the command strings below, or the Travis parser 73 # will get confused. 74 # 75 # Exit code 129 means warnings only. 76 - if [[ "${BUILDMAN}" != "" ]]; then 77 set +e; 78 tools/buildman/buildman -P ${BUILDMAN}; 79 ret=$?; 80 if [[ $ret -ne 0 && $ret -ne 129 ]]; then 81 exit $ret; 82 fi; 83 fi 84 # "not a_test_which_does_not_exist" is a dummy -k parameter which will 85 # never prevent any test from running. That way, we can always pass 86 # "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom 87 # value. 88 - if [[ "${TEST_PY_BD}" != "" ]]; then 89 ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} 90 -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" 91 --build-dir `cd .. && pwd`/.bm-work/${TEST_PY_BD}; 92 fi 93 94matrix: 95 include: 96 # we need to build by vendor due to 50min time limit for builds 97 # each env setting here is a dedicated build 98 - env: 99 - BUILDMAN="arm1136" 100 - env: 101 - BUILDMAN="arm1176" 102 - env: 103 - BUILDMAN="arm720t" 104 - env: 105 - BUILDMAN="arm920t" 106 - env: 107 - BUILDMAN="atmel -x avr32" 108 - env: 109 - BUILDMAN="avr32" 110 TOOLCHAIN="avr32" 111 - env: 112 - BUILDMAN="davinci" 113 - env: 114 - BUILDMAN="denx" 115 - env: 116 - JOB="Freescale ARM" 117 BUILDMAN="freescale -x powerpc,m68k" 118 - env: 119 - BUILDMAN="sandbox x86" 120 TOOLCHAIN="x86_64" 121 - env: 122 - BUILDMAN="kirkwood" 123 - env: 124 - BUILDMAN="m68k" 125 TOOLCHAIN="m68k" 126 - env: 127 - BUILDMAN="microblaze" 128 TOOLCHAIN="microblaze" 129 - env: 130 - BUILDMAN="mips" 131 TOOLCHAIN="mips" 132 - env: 133 - BUILDMAN="mpc512x" 134 - env: 135 - BUILDMAN="mpc5xx" 136 - env: 137 - BUILDMAN="mpc5xxx" 138 - env: 139 - BUILDMAN="mpc8260" 140 - env: 141 - BUILDMAN="mpc83xx" 142 - env: 143 - BUILDMAN="mpc85xx -x freescale" 144 - env: 145 - BUILDMAN="mpc85xx -x t208xrdb -x t4qds -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x b4860qds -x sbc8548 -x bsc91*" 146 - env: 147 - BUILDMAN="t208xrdb t4qds t102*" 148 - env: 149 - BUILDMAN="p1_p2_rdb_pc p1010rdb" 150 - env: 151 - BUILDMAN="corenet_ds b4860qds sbc8548 bsc91*" 152 - env: 153 - BUILDMAN="mpc86xx" 154 - env: 155 - BUILDMAN="mpc8xx" 156 - env: 157 - BUILDMAN="siemens" 158 - env: 159 - BUILDMAN="tegra" 160 - env: 161 - BUILDMAN="ti" 162 - env: 163 - BUILDMAN="uniphier" 164 - env: 165 - BUILDMAN="aarch64 -x tegra,freescale,uniphier" 166 TOOLCHAIN="aarch64" 167 - env: 168 - BUILDMAN="sh4" 169 TOOLCHAIN="sh4" 170 - env: 171 - BUILDMAN="xtensa" 172 TOOLCHAIN="xtensa" 173 174 # QA jobs for code analytics 175 # static code analysis with cppcheck (we can add --enable=all later) 176 - env: 177 - JOB="cppcheck" 178 script: 179 - cppcheck --force --quiet --inline-suppr . 180 # search for TODO within source tree 181 - env: 182 - JOB="grep TODO" 183 script: 184 - grep -r TODO . 185 # search for FIXME within source tree 186 - env: 187 - JOB="grep FIXME HACK" 188 script: 189 - grep -r FIXME . 190 # search for HACK within source tree and ignore HACKKIT board 191 script: 192 - grep -r HACK . | grep -v HACKKIT 193 # some statistics about the code base 194 - env: 195 - JOB="sloccount" 196 script: 197 - sloccount . 198 199 # test/py 200 - env: 201 - TEST_PY_BD="sandbox" 202 BUILDMAN="^sandbox$" 203 TOOLCHAIN="x86_64" 204 - env: 205 - TEST_PY_BD="vexpress_ca15_tc2" 206 TEST_PY_ID="--id qemu" 207 BUILDMAN="^vexpress_ca15_tc2$" 208 - env: 209 - TEST_PY_BD="vexpress_ca9x4" 210 TEST_PY_ID="--id qemu" 211 BUILDMAN="^vexpress_ca9x4$" 212 - env: 213 - TEST_PY_BD="integratorcp_cm926ejs" 214 TEST_PY_ID="--id qemu" 215 BUILDMAN="^integratorcp_cm926ejs$" 216 - env: 217 - TEST_PY_BD="qemu_mips" 218 TEST_PY_TEST_SPEC="not sleep" 219 BUILDMAN="^qemu_mips$" 220 TOOLCHAIN="mips" 221 - env: 222 - TEST_PY_BD="qemu_mipsel" 223 TEST_PY_TEST_SPEC="not sleep" 224 BUILDMAN="^qemu_mipsel$" 225 TOOLCHAIN="mips" 226 - env: 227 - TEST_PY_BD="qemu_mips64" 228 TEST_PY_TEST_SPEC="not sleep" 229 BUILDMAN="^qemu_mips64$" 230 TOOLCHAIN="mips" 231 - env: 232 - TEST_PY_BD="qemu_mips64el" 233 TEST_PY_TEST_SPEC="not sleep" 234 BUILDMAN="^qemu_mips64el$" 235 TOOLCHAIN="mips" 236 - env: 237 - TEST_PY_BD="qemu-ppce500" 238 TEST_PY_TEST_SPEC="not sleep" 239 BUILDMAN="^qemu-ppce500$" 240 - env: 241 - TEST_PY_BD="qemu-x86" 242 TEST_PY_TEST_SPEC="not sleep" 243 BUILDMAN="^qemu-x86$" 244 TOOLCHAIN="x86_64" 245 BUILD_ROM="yes" 246 247# TODO make it perfect ;-r 248