1c7cb334dSMeier, Roger# Copyright Roger Meier <r.meier@siemens.com> 2c7cb334dSMeier, Roger# SPDX-License-Identifier: GPL-2.0+ 3c7cb334dSMeier, Roger 4c7cb334dSMeier, Roger# build U-Boot on Travis CI - https://travis-ci.org/ 5c7cb334dSMeier, Roger 62bb76f33STom Rinisudo: required 72bb76f33STom Rinidist: trusty 8e4c1b4d8SStephen Warren 9c7cb334dSMeier, Rogerlanguage: c 10c7cb334dSMeier, Roger 11050c7569SRoger Meieraddons: 12050c7569SRoger Meier apt: 135ac5861cSTom Rini sources: 145ac5861cSTom Rini - sourceline: 'ppa:gns3/qemu' 15050c7569SRoger Meier packages: 16050c7569SRoger Meier - cppcheck 17050c7569SRoger Meier - sloccount 18050c7569SRoger Meier - sparse 19050c7569SRoger Meier - bc 20050c7569SRoger Meier - build-essential 21050c7569SRoger Meier - libsdl1.2-dev 2207bf2122SStephen Warren - python 2307bf2122SStephen Warren - python-virtualenv 245ac5861cSTom Rini - qemu-system-arm 255ac5861cSTom Rini - qemu-system-mips 265ac5861cSTom Rini - qemu-system-ppc 275ac5861cSTom Rini - qemu-system-x86 28cd402e01STom Rini - gcc-powerpc-linux-gnu 29cd402e01STom Rini - gcc-arm-linux-gnueabihf 30cd402e01STom Rini - iasl 31c7cb334dSMeier, Roger 32c7cb334dSMeier, Rogerinstall: 33c7cb334dSMeier, Roger # install latest device tree compiler 344084c7faSTom Rini - git clone --depth=1 git://git.kernel.org/pub/scm/utils/dtc/dtc.git /tmp/dtc 35c7cb334dSMeier, Roger - make -j4 -C /tmp/dtc 365ac5861cSTom Rini # Clone uboot-test-hooks 375ac5861cSTom Rini - git clone --depth=1 git://github.com/swarren/uboot-test-hooks.git /tmp/uboot-test-hooks 385ac5861cSTom Rini - ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname` 395ac5861cSTom Rini - ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname` 40c7cb334dSMeier, Roger # prepare buildman environment 4143a68e49SStephen Warren - echo -e "[toolchain]\nroot = /usr" > ~/.buildman 42cd402e01STom Rini - echo -e "\n[toolchain-alias]\nblackfin = bfin\nsh = sh4\nopenrisc = or32" >> ~/.buildman 43c7cb334dSMeier, Roger - cat ~/.buildman 4407bf2122SStephen Warren - virtualenv /tmp/venv 4507bf2122SStephen Warren - . /tmp/venv/bin/activate 4607bf2122SStephen Warren - pip install pytest 47c7cb334dSMeier, Roger 48c7cb334dSMeier, Rogerenv: 49c7cb334dSMeier, Roger global: 505ac5861cSTom Rini - PATH=/tmp/dtc:/tmp/uboot-test-hooks/bin:$PATH 51c7cb334dSMeier, Roger - BUILD_DIR=build 52c7cb334dSMeier, Roger - HOSTCC="cc" 53c7cb334dSMeier, Roger - HOSTCXX="c++" 54c7cb334dSMeier, Roger 55c7cb334dSMeier, Rogerbefore_script: 56050c7569SRoger Meier # install toolchains based on TOOLCHAIN} variable 57050c7569SRoger Meier - if [[ "${TOOLCHAIN}" == *aarch64* ]]; then ./tools/buildman/buildman --fetch-arch aarch64 ; fi 58050c7569SRoger Meier - if [[ "${TOOLCHAIN}" == *avr32* ]]; then ./tools/buildman/buildman --fetch-arch avr32 ; fi 59cd402e01STom Rini - if [[ "${TOOLCHAIN}" == *bfin* ]]; then ./tools/buildman/buildman --fetch-arch bfin ; fi 60050c7569SRoger Meier - if [[ "${TOOLCHAIN}" == *m68k* ]]; then ./tools/buildman/buildman --fetch-arch m68k ; fi 61cd402e01STom Rini - if [[ "${TOOLCHAIN}" == *microblaze* ]]; then ./tools/buildman/buildman --fetch-arch microblaze ; fi 62050c7569SRoger Meier - if [[ "${TOOLCHAIN}" == *mips* ]]; then ./tools/buildman/buildman --fetch-arch mips ; fi 63cd402e01STom Rini - if [[ "${TOOLCHAIN}" == *or32* ]]; then ./tools/buildman/buildman --fetch-arch or32 ; fi 64cd402e01STom Rini - if [[ "${TOOLCHAIN}" == *sh4* ]]; then ./tools/buildman/buildman --fetch-arch sh4 ; fi 652ded4bf9SStephen Warren - if [[ "${TOOLCHAIN}" == *x86_64* ]]; then 662ded4bf9SStephen Warren ./tools/buildman/buildman --fetch-arch x86_64; 672ded4bf9SStephen Warren echo -e "\n[toolchain-prefix]\nx86 = ${HOME}/.buildman-toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-" >> ~/.buildman; 682ded4bf9SStephen Warren fi 69cd402e01STom Rini - if [[ "${TOOLCHAIN}" == *xtensa* ]]; then ./tools/buildman/buildman --fetch-arch xtensa ; fi 70c7cb334dSMeier, Roger 71c7cb334dSMeier, Rogerscript: 728304f053SStephen Warren # Comments must be outside the command strings below, or the Travis parser 738304f053SStephen Warren # will get confused. 748304f053SStephen Warren # 754899210cSTom Rini # Exit code 129 means warnings only. 76050c7569SRoger Meier - if [[ "${BUILDMAN}" != "" ]]; then 774899210cSTom Rini set +e; 78440d8467SStephen Warren tools/buildman/buildman -P ${BUILDMAN}; 790c5145fcSStephen Warren ret=$?; 80bf1c0889SStephen Warren if [[ $ret -ne 0 && $ret -ne 129 ]]; then 810c5145fcSStephen Warren exit $ret; 820c5145fcSStephen Warren fi; 83050c7569SRoger Meier fi 848304f053SStephen Warren # "not a_test_which_does_not_exist" is a dummy -k parameter which will 858304f053SStephen Warren # never prevent any test from running. That way, we can always pass 868304f053SStephen Warren # "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom 878304f053SStephen Warren # value. 888304f053SStephen Warren - if [[ "${TEST_PY_BD}" != "" ]]; then 898304f053SStephen Warren ./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID} 908304f053SStephen Warren -k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}" 918304f053SStephen Warren --build-dir `cd .. && pwd`/.bm-work/${TEST_PY_BD}; 928304f053SStephen Warren fi 93c7cb334dSMeier, Roger 94c7cb334dSMeier, Rogermatrix: 95c7cb334dSMeier, Roger include: 96c7cb334dSMeier, Roger # we need to build by vendor due to 50min time limit for builds 97c7cb334dSMeier, Roger # each env setting here is a dedicated build 98c7cb334dSMeier, Roger - env: 99050c7569SRoger Meier - BUILDMAN="arm1136" 100c7cb334dSMeier, Roger - env: 101050c7569SRoger Meier - BUILDMAN="arm1176" 102c7cb334dSMeier, Roger - env: 103050c7569SRoger Meier - BUILDMAN="arm720t" 104c7cb334dSMeier, Roger - env: 105050c7569SRoger Meier - BUILDMAN="arm920t" 106c7cb334dSMeier, Roger - env: 107050c7569SRoger Meier - BUILDMAN="atmel -x avr32" 108c7cb334dSMeier, Roger - env: 109050c7569SRoger Meier - BUILDMAN="avr32" 110050c7569SRoger Meier TOOLCHAIN="avr32" 111c7cb334dSMeier, Roger - env: 112050c7569SRoger Meier - BUILDMAN="davinci" 113c7cb334dSMeier, Roger - env: 114050c7569SRoger Meier - BUILDMAN="denx" 115d9aa0197SHeiko Schocher - env: 116050c7569SRoger Meier - BUILDMAN="freescale -x powerpc,m68k,aarch64" 117d9aa0197SHeiko Schocher - env: 118050c7569SRoger Meier - BUILDMAN="sandbox x86" 119cd402e01STom Rini TOOLCHAIN="x86_64" 120d9aa0197SHeiko Schocher - env: 121050c7569SRoger Meier - BUILDMAN="kirkwood" 122d9aa0197SHeiko Schocher - env: 123050c7569SRoger Meier - BUILDMAN="m68k" 124050c7569SRoger Meier TOOLCHAIN="m68k" 1258cb2101bSHeiko Schocher - env: 12676761e7fSTom Rini - BUILDMAN="microblaze" 12776761e7fSTom Rini TOOLCHAIN="microblaze" 12876761e7fSTom Rini - env: 129050c7569SRoger Meier - BUILDMAN="mips" 130050c7569SRoger Meier TOOLCHAIN="mips" 1318cb2101bSHeiko Schocher - env: 132050c7569SRoger Meier - BUILDMAN="mpc512x" 133d9aa0197SHeiko Schocher - env: 134050c7569SRoger Meier - BUILDMAN="mpc5xx" 1358cb2101bSHeiko Schocher - env: 136050c7569SRoger Meier - BUILDMAN="mpc5xxx" 1378cb2101bSHeiko Schocher - env: 138050c7569SRoger Meier - BUILDMAN="mpc8260" 1398cb2101bSHeiko Schocher - env: 140050c7569SRoger Meier - BUILDMAN="mpc83xx" 1418cb2101bSHeiko Schocher - env: 142050c7569SRoger Meier - BUILDMAN="mpc85xx -x freescale" 143d9aa0197SHeiko Schocher - env: 144050c7569SRoger Meier - BUILDMAN="mpc85xx -x t208xrdb -x t4qds -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x b4860qds -x sbc8548 -x bsc91*" 1458cb2101bSHeiko Schocher - env: 146050c7569SRoger Meier - BUILDMAN="t208xrdb t4qds t102*" 147c7cb334dSMeier, Roger - env: 148050c7569SRoger Meier - BUILDMAN="p1_p2_rdb_pc p1010rdb" 1498cb2101bSHeiko Schocher - env: 150050c7569SRoger Meier - BUILDMAN="corenet_ds b4860qds sbc8548 bsc91*" 151c7cb334dSMeier, Roger - env: 152050c7569SRoger Meier - BUILDMAN="mpc86xx" 153c7cb334dSMeier, Roger - env: 154050c7569SRoger Meier - BUILDMAN="mpc8xx" 155c7cb334dSMeier, Roger - env: 156050c7569SRoger Meier - BUILDMAN="siemens" 157c7cb334dSMeier, Roger - env: 158*1fcf0ee9SStephen Warren - BUILDMAN="tegra -x aarch64" 159*1fcf0ee9SStephen Warren - env: 160050c7569SRoger Meier - BUILDMAN="ti" 161c7cb334dSMeier, Roger - env: 162050c7569SRoger Meier - BUILDMAN="aarch64" 163050c7569SRoger Meier TOOLCHAIN="aarch64" 16476761e7fSTom Rini - env: 16576761e7fSTom Rini - BUILDMAN="sh4" 16676761e7fSTom Rini TOOLCHAIN="sh4" 16776761e7fSTom Rini - env: 16876761e7fSTom Rini - BUILDMAN="xtensa" 16976761e7fSTom Rini TOOLCHAIN="xtensa" 170c7cb334dSMeier, Roger 171c7cb334dSMeier, Roger # QA jobs for code analytics 172c7cb334dSMeier, Roger # static code analysis with cppcheck (we can add --enable=all later) 173d7882210SStephen Warren - env: 174d7882210SStephen Warren - JOB="cppcheck" 175d7882210SStephen Warren script: 176c85b52e4STom Rini - cppcheck --force --quiet --inline-suppr . 177c7cb334dSMeier, Roger # search for TODO within source tree 178d7882210SStephen Warren - env: 179d7882210SStephen Warren - JOB="grep TODO" 180d7882210SStephen Warren script: 181c85b52e4STom Rini - grep -r TODO . 182c7cb334dSMeier, Roger # search for FIXME within source tree 183d7882210SStephen Warren - env: 184d7882210SStephen Warren - JOB="grep FIXME HACK" 185d7882210SStephen Warren script: 186c85b52e4STom Rini - grep -r FIXME . 187c7cb334dSMeier, Roger # search for HACK within source tree and ignore HACKKIT board 188c7cb334dSMeier, Roger script: 189c7cb334dSMeier, Roger - grep -r HACK . | grep -v HACKKIT 190c7cb334dSMeier, Roger # some statistics about the code base 191d7882210SStephen Warren - env: 192d7882210SStephen Warren - JOB="sloccount" 193d7882210SStephen Warren script: 194c85b52e4STom Rini - sloccount . 1958304f053SStephen Warren 19607bf2122SStephen Warren # test/py 197d7882210SStephen Warren - env: 1988304f053SStephen Warren - TEST_PY_BD="sandbox" 1998304f053SStephen Warren BUILDMAN="^sandbox$" 2008304f053SStephen Warren TOOLCHAIN="x86_64" 2015ac5861cSTom Rini - env: 2028304f053SStephen Warren - TEST_PY_BD="vexpress_ca15_tc2" 2038304f053SStephen Warren TEST_PY_ID="--id qemu" 2048304f053SStephen Warren BUILDMAN="^vexpress_ca15_tc2$" 2055ac5861cSTom Rini - env: 2068304f053SStephen Warren - TEST_PY_BD="vexpress_ca9x4" 2078304f053SStephen Warren TEST_PY_ID="--id qemu" 2088304f053SStephen Warren BUILDMAN="^vexpress_ca9x4$" 2095ac5861cSTom Rini - env: 2108304f053SStephen Warren - TEST_PY_BD="integratorcp_cm926ejs" 2118304f053SStephen Warren TEST_PY_ID="--id qemu" 2128304f053SStephen Warren BUILDMAN="^integratorcp_cm926ejs$" 2135ac5861cSTom Rini - env: 2148304f053SStephen Warren - TEST_PY_BD="qemu_mips" 2158304f053SStephen Warren TEST_PY_TEST_SPEC="not sleep" 2168304f053SStephen Warren BUILDMAN="^qemu_mips$" 2178304f053SStephen Warren TOOLCHAIN="mips" 2188304f053SStephen Warren - env: 2198304f053SStephen Warren - TEST_PY_BD="qemu_mipsel" 2208304f053SStephen Warren TEST_PY_TEST_SPEC="not sleep" 2218304f053SStephen Warren BUILDMAN="^qemu_mipsel$" 2228304f053SStephen Warren TOOLCHAIN="mips" 2238304f053SStephen Warren - env: 2248304f053SStephen Warren - TEST_PY_BD="qemu_mips64" 2258304f053SStephen Warren TEST_PY_TEST_SPEC="not sleep" 2268304f053SStephen Warren BUILDMAN="^qemu_mips64$" 2278304f053SStephen Warren TOOLCHAIN="mips" 2288304f053SStephen Warren - env: 2298304f053SStephen Warren - TEST_PY_BD="qemu_mips64el" 2308304f053SStephen Warren TEST_PY_TEST_SPEC="not sleep" 2318304f053SStephen Warren BUILDMAN="^qemu_mips64el$" 2328304f053SStephen Warren TOOLCHAIN="mips" 2338304f053SStephen Warren - env: 2348304f053SStephen Warren - TEST_PY_BD="qemu-ppce500" 2358304f053SStephen Warren TEST_PY_TEST_SPEC="not sleep" 2368304f053SStephen Warren BUILDMAN="^qemu-ppce500$" 2378304f053SStephen Warren - env: 2388304f053SStephen Warren - TEST_PY_BD="qemu-x86" 2398304f053SStephen Warren TEST_PY_TEST_SPEC="not sleep" 2408304f053SStephen Warren BUILDMAN="^qemu-x86$" 2418304f053SStephen Warren TOOLCHAIN="x86_64" 2428304f053SStephen Warren BUILD_ROM="yes" 243c7cb334dSMeier, Roger 244c7cb334dSMeier, Roger# TODO make it perfect ;-r 245