36dd5f1b8a
This makes us act like the Linux Kernel does and allow for dtc to be provided externally but otherwise we use the version of dtc that is included in the sources. This in turn means that we can drop the checkdtc logic. We select DTC in the cases where we will need the dtc tool provided. Signed-off-by: Tom Rini <trini@konsulko.com>
332 lines
10 KiB
YAML
332 lines
10 KiB
YAML
# Copyright Roger Meier <r.meier@siemens.com>
|
|
# SPDX-License-Identifier: GPL-2.0+
|
|
|
|
# build U-Boot on Travis CI - https://travis-ci.org/
|
|
|
|
sudo: required
|
|
dist: trusty
|
|
|
|
language: c
|
|
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- cppcheck
|
|
- sloccount
|
|
- sparse
|
|
- bc
|
|
- build-essential
|
|
- libsdl1.2-dev
|
|
- python
|
|
- python-virtualenv
|
|
- swig
|
|
- libpython-dev
|
|
- gcc-powerpc-linux-gnu
|
|
- iasl
|
|
- grub-efi-ia32-bin
|
|
- rpm2cpio
|
|
- wget
|
|
- device-tree-compiler
|
|
|
|
install:
|
|
# Clone uboot-test-hooks
|
|
- git clone --depth=1 git://github.com/swarren/uboot-test-hooks.git /tmp/uboot-test-hooks
|
|
- ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
|
|
- ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
|
|
# prepare buildman environment
|
|
- echo -e "[toolchain]\nroot = /usr" > ~/.buildman
|
|
- echo -e "aarch64 = /tmp/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu" >> ~/.buildman
|
|
- echo -e "arm = /tmp/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf" >> ~/.buildman
|
|
- echo -e "arc = /tmp/arc_gnu_2016.09_prebuilt_uclibc_le_archs_linux_install" >> ~/.buildman
|
|
- echo -e "\n[toolchain-alias]\nsh = sh4\nopenrisc = or32" >> ~/.buildman
|
|
- cat ~/.buildman
|
|
- virtualenv /tmp/venv
|
|
- . /tmp/venv/bin/activate
|
|
- pip install pytest
|
|
- grub-mkimage -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
|
|
- mkdir ~/grub2-arm
|
|
- ( cd ~/grub2-arm; wget -O - http://download.opensuse.org/ports/armv7hl/distribution/leap/42.2/repo/oss/suse/armv7hl/grub2-arm-efi-2.02~beta2-87.1.armv7hl.rpm | rpm2cpio | cpio -di )
|
|
|
|
env:
|
|
global:
|
|
- PATH=/tmp/qemu-install/bin:/tmp/uboot-test-hooks/bin:/usr/bin:/bin
|
|
- PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci
|
|
- BUILD_DIR=build
|
|
- HOSTCC="cc"
|
|
- HOSTCXX="c++"
|
|
|
|
before_script:
|
|
# install toolchains based on TOOLCHAIN} variable
|
|
- if [[ "${TOOLCHAIN}" == *m68k* ]]; then ./tools/buildman/buildman --fetch-arch m68k ; fi
|
|
- if [[ "${TOOLCHAIN}" == *microblaze* ]]; then ./tools/buildman/buildman --fetch-arch microblaze ; fi
|
|
- if [[ "${TOOLCHAIN}" == *mips* ]]; then ./tools/buildman/buildman --fetch-arch mips ; fi
|
|
- if [[ "${TOOLCHAIN}" == *or32* ]]; then ./tools/buildman/buildman --fetch-arch or32 ; fi
|
|
- if [[ "${TOOLCHAIN}" == *sh4* ]]; then ./tools/buildman/buildman --fetch-arch sh4 ; fi
|
|
- if [[ "${TOOLCHAIN}" == *x86_64* ]]; then
|
|
./tools/buildman/buildman --fetch-arch x86_64;
|
|
echo -e "\n[toolchain-prefix]\nx86 = ${HOME}/.buildman-toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-" >> ~/.buildman;
|
|
fi
|
|
- if [[ "${TOOLCHAIN}" == arc ]]; then
|
|
wget https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-2016.09-release/arc_gnu_2016.09_prebuilt_uclibc_le_archs_linux_install.tar.gz &&
|
|
tar -C /tmp -xf arc_gnu_2016.09_prebuilt_uclibc_le_archs_linux_install.tar.gz;
|
|
fi
|
|
- if [[ "${TOOLCHAIN}" == *xtensa* ]]; then ./tools/buildman/buildman --fetch-arch xtensa ; fi
|
|
# If TOOLCHAIN is unset, we're on some flavour of ARM.
|
|
- if [[ "${TOOLCHAIN}" == "" ]]; then
|
|
wget http://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz &&
|
|
wget http://releases.linaro.org/components/toolchain/binaries/6.3-2017.02/arm-linux-gnueabihf/gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz &&
|
|
tar -C /tmp -xf gcc-linaro-6.3.1-2017.02-x86_64_aarch64-linux-gnu.tar.xz &&
|
|
tar -C /tmp -xf gcc-linaro-6.3.1-2017.02-x86_64_arm-linux-gnueabihf.tar.xz;
|
|
fi
|
|
- if [[ "${QEMU_TARGET}" != "" ]]; then
|
|
git clone git://git.qemu.org/qemu.git /tmp/qemu;
|
|
pushd /tmp/qemu;
|
|
git submodule update --init dtc &&
|
|
git checkout v2.8.0-rc3 &&
|
|
./configure --prefix=/tmp/qemu-install --target-list=${QEMU_TARGET} &&
|
|
make -j4 all install;
|
|
popd;
|
|
fi
|
|
|
|
script:
|
|
# Comments must be outside the command strings below, or the Travis parser
|
|
# will get confused.
|
|
#
|
|
# Exit code 129 means warnings only.
|
|
- if [[ "${BUILDMAN}" != "" ]]; then
|
|
set +e;
|
|
tools/buildman/buildman -P ${BUILDMAN};
|
|
ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
tools/buildman/buildman -sdeP ${BUILDMAN};
|
|
exit $ret;
|
|
fi;
|
|
fi
|
|
# "not a_test_which_does_not_exist" is a dummy -k parameter which will
|
|
# never prevent any test from running. That way, we can always pass
|
|
# "-k something" even when $TEST_PY_TEST_SPEC doesnt need a custom
|
|
# value.
|
|
- export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/${TEST_PY_BD};
|
|
cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/;
|
|
cp ~/grub2-arm/usr/lib/grub2/arm-efi/grub.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi;
|
|
if [[ "${TEST_PY_BD}" != "" ]]; then
|
|
./test/py/test.py --bd ${TEST_PY_BD} ${TEST_PY_ID}
|
|
-k "${TEST_PY_TEST_SPEC:-not a_test_which_does_not_exist}"
|
|
--build-dir "$UBOOT_TRAVIS_BUILD_DIR";
|
|
fi
|
|
|
|
matrix:
|
|
include:
|
|
# we need to build by vendor due to 50min time limit for builds
|
|
# each env setting here is a dedicated build
|
|
- env:
|
|
- BUILDMAN="arc"
|
|
TOOLCHAIN="arc"
|
|
- env:
|
|
- BUILDMAN="arm11"
|
|
- env:
|
|
- BUILDMAN="arm7"
|
|
- env:
|
|
- BUILDMAN="arm920t"
|
|
- env:
|
|
- JOB="arm926ejs"
|
|
BUILDMAN="arm926ejs -x mx,siemens,atmel"
|
|
- env:
|
|
- BUILDMAN="arm946es"
|
|
- env:
|
|
- BUILDMAN="atmel"
|
|
- env:
|
|
- BUILDMAN="aries"
|
|
- env:
|
|
- JOB="Freescale ARM32"
|
|
BUILDMAN="freescale -x powerpc,m68k,aarch64"
|
|
- env:
|
|
- JOB="Freescale AArch64"
|
|
BUILDMAN="freescale&aarch64"
|
|
- env:
|
|
- JOB="i.MX6 (non-Freescale)"
|
|
BUILDMAN="mx6 -x freescale"
|
|
- env:
|
|
- JOB="i.MX (non-Freescale, non-i.MX6)"
|
|
BUILDMAN="mx -x freescale,mx6"
|
|
- env:
|
|
- BUILDMAN="samsung"
|
|
- env:
|
|
- BUILDMAN="sun4i"
|
|
- env:
|
|
- BUILDMAN="sun5i"
|
|
- env:
|
|
- BUILDMAN="sun6i"
|
|
- env:
|
|
- BUILDMAN="sun7i"
|
|
- env:
|
|
- BUILDMAN="sun8i"
|
|
- env:
|
|
- BUILDMAN="sun9i"
|
|
- env:
|
|
- BUILDMAN="sun50i"
|
|
- env:
|
|
- JOB="Catch-all ARM"
|
|
BUILDMAN="arm -x arm11,arm7,arm9,aarch64,atmel,aries,freescale,kirkwood,mvebu,siemens,tegra,uniphier,mx,samsung,sunxi,am33xx,omap3,omap4,omap5,pxa,rockchip"
|
|
- env:
|
|
- BUILDMAN="sandbox x86"
|
|
TOOLCHAIN="x86_64"
|
|
- env:
|
|
- BUILDMAN="kirkwood"
|
|
- env:
|
|
- BUILDMAN="mvebu"
|
|
- env:
|
|
- BUILDMAN="pxa"
|
|
- env:
|
|
- BUILDMAN="m68k"
|
|
TOOLCHAIN="m68k"
|
|
- env:
|
|
- BUILDMAN="microblaze"
|
|
TOOLCHAIN="microblaze"
|
|
- env:
|
|
- BUILDMAN="mips"
|
|
TOOLCHAIN="mips"
|
|
- env:
|
|
- BUILDMAN="mpc83xx"
|
|
- env:
|
|
- BUILDMAN="mpc85xx -x freescale"
|
|
- env:
|
|
- BUILDMAN="mpc85xx -x t208xrdb -x t4qds -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x b4860qds -x sbc8548 -x bsc91*"
|
|
- env:
|
|
- BUILDMAN="t208xrdb t4qds t102*"
|
|
- env:
|
|
- BUILDMAN="p1_p2_rdb_pc"
|
|
- env:
|
|
- BUILDMAN="p1010rdb"
|
|
- env:
|
|
- BUILDMAN="corenet_ds b4860qds sbc8548 bsc91*"
|
|
- env:
|
|
- BUILDMAN="mpc86xx"
|
|
- env:
|
|
- BUILDMAN="mpc8xx"
|
|
- env:
|
|
- BUILDMAN="siemens"
|
|
- env:
|
|
- BUILDMAN="tegra"
|
|
- env:
|
|
- JOB="am33xx"
|
|
BUILDMAN="am33xx -x siemens"
|
|
- env:
|
|
- BUILDMAN="omap3"
|
|
- env:
|
|
- BUILDMAN="omap4"
|
|
- env:
|
|
- BUILDMAN="omap5"
|
|
- env:
|
|
- BUILDMAN="uniphier"
|
|
- env:
|
|
- BUILDMAN="aarch64 -x tegra,freescale,mvebu,uniphier,sunxi,samsung,rockchip"
|
|
- env:
|
|
- BUILDMAN="rockchip"
|
|
- env:
|
|
- BUILDMAN="sh4"
|
|
TOOLCHAIN="sh4"
|
|
- env:
|
|
- BUILDMAN="xtensa"
|
|
TOOLCHAIN="xtensa"
|
|
|
|
# QA jobs for code analytics
|
|
# static code analysis with cppcheck (we can add --enable=all later)
|
|
- env:
|
|
- JOB="cppcheck"
|
|
script:
|
|
- cppcheck --force --quiet --inline-suppr .
|
|
# search for TODO within source tree
|
|
- env:
|
|
- JOB="grep TODO"
|
|
script:
|
|
- grep -r TODO .
|
|
# search for FIXME within source tree
|
|
- env:
|
|
- JOB="grep FIXME HACK"
|
|
script:
|
|
- grep -r FIXME .
|
|
# search for HACK within source tree and ignore HACKKIT board
|
|
script:
|
|
- grep -r HACK . | grep -v HACKKIT
|
|
# some statistics about the code base
|
|
- env:
|
|
- JOB="sloccount"
|
|
script:
|
|
- sloccount .
|
|
|
|
# test/py
|
|
- env:
|
|
- TEST_PY_BD="sandbox"
|
|
BUILDMAN="^sandbox$"
|
|
TOOLCHAIN="x86_64"
|
|
- env:
|
|
- TEST_PY_BD="sandbox_spl"
|
|
TEST_PY_TEST_SPEC="test_ofplatdata"
|
|
BUILDMAN="^sandbox$"
|
|
TOOLCHAIN="x86_64"
|
|
- env:
|
|
- TEST_PY_BD="sandbox_flattree"
|
|
BUILDMAN="^sandbox_flattree$"
|
|
TOOLCHAIN="x86_64"
|
|
- env:
|
|
- TEST_PY_BD="vexpress_ca15_tc2"
|
|
TEST_PY_ID="--id qemu"
|
|
QEMU_TARGET="arm-softmmu"
|
|
BUILDMAN="^vexpress_ca15_tc2$"
|
|
- env:
|
|
- TEST_PY_BD="vexpress_ca9x4"
|
|
TEST_PY_ID="--id qemu"
|
|
QEMU_TARGET="arm-softmmu"
|
|
BUILDMAN="^vexpress_ca9x4$"
|
|
- env:
|
|
- TEST_PY_BD="integratorcp_cm926ejs"
|
|
TEST_PY_TEST_SPEC="not sleep"
|
|
TEST_PY_ID="--id qemu"
|
|
QEMU_TARGET="arm-softmmu"
|
|
BUILDMAN="^integratorcp_cm926ejs$"
|
|
- env:
|
|
- TEST_PY_BD="qemu_mips"
|
|
TEST_PY_TEST_SPEC="not sleep"
|
|
QEMU_TARGET="mips-softmmu"
|
|
BUILDMAN="^qemu_mips$"
|
|
TOOLCHAIN="mips"
|
|
- env:
|
|
- TEST_PY_BD="qemu_mipsel"
|
|
TEST_PY_TEST_SPEC="not sleep"
|
|
QEMU_TARGET="mipsel-softmmu"
|
|
BUILDMAN="^qemu_mipsel$"
|
|
TOOLCHAIN="mips"
|
|
- env:
|
|
- TEST_PY_BD="qemu_mips64"
|
|
TEST_PY_TEST_SPEC="not sleep"
|
|
QEMU_TARGET="mips64-softmmu"
|
|
BUILDMAN="^qemu_mips64$"
|
|
TOOLCHAIN="mips"
|
|
- env:
|
|
- TEST_PY_BD="qemu_mips64el"
|
|
TEST_PY_TEST_SPEC="not sleep"
|
|
QEMU_TARGET="mips64el-softmmu"
|
|
BUILDMAN="^qemu_mips64el$"
|
|
TOOLCHAIN="mips"
|
|
- env:
|
|
- TEST_PY_BD="qemu-ppce500"
|
|
TEST_PY_TEST_SPEC="not sleep"
|
|
QEMU_TARGET="ppc-softmmu"
|
|
BUILDMAN="^qemu-ppce500$"
|
|
- env:
|
|
- TEST_PY_BD="qemu-x86"
|
|
TEST_PY_TEST_SPEC="not sleep"
|
|
QEMU_TARGET="i386-softmmu"
|
|
BUILDMAN="^qemu-x86$"
|
|
TOOLCHAIN="x86_64"
|
|
BUILD_ROM="yes"
|
|
- env:
|
|
- TEST_PY_BD="zynq_zc702"
|
|
TEST_PY_TEST_SPEC="not sleep"
|
|
QEMU_TARGET="arm-softmmu"
|
|
TEST_PY_ID="--id qemu"
|
|
BUILDMAN="^zynq_zc702$"
|
|
|
|
# TODO make it perfect ;-r
|