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 - iasl 31 32install: 33 # install latest device tree compiler 34 - git clone --depth=1 git://git.kernel.org/pub/scm/utils/dtc/dtc.git /tmp/dtc 35 - make -j4 -C /tmp/dtc 36 # Clone uboot-test-hooks 37 - git clone --depth=1 git://github.com/swarren/uboot-test-hooks.git /tmp/uboot-test-hooks 38 - ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname` 39 - ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname` 40 # prepare buildman environment 41 - echo -e "[toolchain]\nroot = /usr" > ~/.buildman 42 - echo -e "\n[toolchain-alias]\nblackfin = bfin\nsh = sh4\nopenrisc = or32" >> ~/.buildman 43 - cat ~/.buildman 44 - virtualenv /tmp/venv 45 - . /tmp/venv/bin/activate 46 - pip install pytest 47 48env: 49 global: 50 - PATH=/tmp/dtc:/tmp/uboot-test-hooks/bin:$PATH 51 - BUILD_DIR=build 52 - HOSTCC="cc" 53 - HOSTCXX="c++" 54 55before_script: 56 # install toolchains based on TOOLCHAIN} variable 57 - if [[ "${TOOLCHAIN}" == *aarch64* ]]; then ./tools/buildman/buildman --fetch-arch aarch64 ; fi 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 - BUILDMAN="freescale -x powerpc,m68k,aarch64" 117 - env: 118 - BUILDMAN="sandbox x86" 119 TOOLCHAIN="x86_64" 120 - env: 121 - BUILDMAN="kirkwood" 122 - env: 123 - BUILDMAN="m68k" 124 TOOLCHAIN="m68k" 125 - env: 126 - BUILDMAN="microblaze" 127 TOOLCHAIN="microblaze" 128 - env: 129 - BUILDMAN="mips" 130 TOOLCHAIN="mips" 131 - env: 132 - BUILDMAN="mpc512x" 133 - env: 134 - BUILDMAN="mpc5xx" 135 - env: 136 - BUILDMAN="mpc5xxx" 137 - env: 138 - BUILDMAN="mpc8260" 139 - env: 140 - BUILDMAN="mpc83xx" 141 - env: 142 - BUILDMAN="mpc85xx -x freescale" 143 - env: 144 - BUILDMAN="mpc85xx -x t208xrdb -x t4qds -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x b4860qds -x sbc8548 -x bsc91*" 145 - env: 146 - BUILDMAN="t208xrdb t4qds t102*" 147 - env: 148 - BUILDMAN="p1_p2_rdb_pc p1010rdb" 149 - env: 150 - BUILDMAN="corenet_ds b4860qds sbc8548 bsc91*" 151 - env: 152 - BUILDMAN="mpc86xx" 153 - env: 154 - BUILDMAN="mpc8xx" 155 - env: 156 - BUILDMAN="siemens" 157 - env: 158 - BUILDMAN="tegra -x aarch64" 159 - env: 160 - BUILDMAN="ti" 161 - env: 162 - BUILDMAN="aarch64" 163 TOOLCHAIN="aarch64" 164 - env: 165 - BUILDMAN="sh4" 166 TOOLCHAIN="sh4" 167 - env: 168 - BUILDMAN="xtensa" 169 TOOLCHAIN="xtensa" 170 171 # QA jobs for code analytics 172 # static code analysis with cppcheck (we can add --enable=all later) 173 - env: 174 - JOB="cppcheck" 175 script: 176 - cppcheck --force --quiet --inline-suppr . 177 # search for TODO within source tree 178 - env: 179 - JOB="grep TODO" 180 script: 181 - grep -r TODO . 182 # search for FIXME within source tree 183 - env: 184 - JOB="grep FIXME HACK" 185 script: 186 - grep -r FIXME . 187 # search for HACK within source tree and ignore HACKKIT board 188 script: 189 - grep -r HACK . | grep -v HACKKIT 190 # some statistics about the code base 191 - env: 192 - JOB="sloccount" 193 script: 194 - sloccount . 195 196 # test/py 197 - env: 198 - TEST_PY_BD="sandbox" 199 BUILDMAN="^sandbox$" 200 TOOLCHAIN="x86_64" 201 - env: 202 - TEST_PY_BD="vexpress_ca15_tc2" 203 TEST_PY_ID="--id qemu" 204 BUILDMAN="^vexpress_ca15_tc2$" 205 - env: 206 - TEST_PY_BD="vexpress_ca9x4" 207 TEST_PY_ID="--id qemu" 208 BUILDMAN="^vexpress_ca9x4$" 209 - env: 210 - TEST_PY_BD="integratorcp_cm926ejs" 211 TEST_PY_ID="--id qemu" 212 BUILDMAN="^integratorcp_cm926ejs$" 213 - env: 214 - TEST_PY_BD="qemu_mips" 215 TEST_PY_TEST_SPEC="not sleep" 216 BUILDMAN="^qemu_mips$" 217 TOOLCHAIN="mips" 218 - env: 219 - TEST_PY_BD="qemu_mipsel" 220 TEST_PY_TEST_SPEC="not sleep" 221 BUILDMAN="^qemu_mipsel$" 222 TOOLCHAIN="mips" 223 - env: 224 - TEST_PY_BD="qemu_mips64" 225 TEST_PY_TEST_SPEC="not sleep" 226 BUILDMAN="^qemu_mips64$" 227 TOOLCHAIN="mips" 228 - env: 229 - TEST_PY_BD="qemu_mips64el" 230 TEST_PY_TEST_SPEC="not sleep" 231 BUILDMAN="^qemu_mips64el$" 232 TOOLCHAIN="mips" 233 - env: 234 - TEST_PY_BD="qemu-ppce500" 235 TEST_PY_TEST_SPEC="not sleep" 236 BUILDMAN="^qemu-ppce500$" 237 - env: 238 - TEST_PY_BD="qemu-x86" 239 TEST_PY_TEST_SPEC="not sleep" 240 BUILDMAN="^qemu-x86$" 241 TOOLCHAIN="x86_64" 242 BUILD_ROM="yes" 243 244# TODO make it perfect ;-r 245