-
Notifications
You must be signed in to change notification settings - Fork 176
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
ODROID-GO2: Add custom Travis script
Signed-off-by: Dongjin Kim <[email protected]> Change-Id: I00a210e990901ef1b9f63648dd58b5ab8c4d2934
- Loading branch information
Showing
1 changed file
with
38 additions
and
343 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,354 +1,49 @@ | ||
# Copyright Roger Meier <[email protected]> | ||
# SPDX-License-Identifier: GPL-2.0+ | ||
|
||
# build U-Boot on Travis CI - https://travis-ci.org/ | ||
|
||
sudo: required | ||
dist: trusty | ||
|
||
language: c | ||
|
||
env: | ||
global: | ||
- TARGET_BOARD=odroidgo2 | ||
- TRAVIS_SECURE_ENV_VARS=true | ||
- ARCH=arm64 | ||
- CROSS_COMPILE=aarch64-none-elf- | ||
|
||
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 ) | ||
git: | ||
depth: 1 | ||
|
||
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_install: | ||
- if [ `uname -m` = x86_64 ]; then sudo apt-get install lzop build-essential gcc bc libncurses5-dev libc6-i386 lib32stdc++6 zlib1g:i386; fi | ||
|
||
install: | ||
|
||
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 | ||
- mkdir -p /opt/toolchains | ||
- wget https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz | ||
- tar Jxf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz -C /opt/toolchains/ | ||
- export PATH=/opt/toolchains/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/:$PATH | ||
|
||
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="Boundary Devices" | ||
BUILDMAN="boundary" | ||
- env: | ||
- JOB="engicam" | ||
BUILDMAN="engicam" | ||
- 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,toradex,boundary,engicam" | ||
- env: | ||
- JOB="i.MX (non-Freescale, non-i.MX6)" | ||
BUILDMAN="mx -x freescale,mx6,toradex" | ||
- env: | ||
- BUILDMAN="k2" | ||
- env: | ||
- BUILDMAN="samsung" | ||
- env: | ||
- BUILDMAN="socfpga" | ||
- 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,toradex,socfpga,k2,xilinx" | ||
- env: | ||
- BUILDMAN="sandbox x86" | ||
TOOLCHAIN="x86_64" | ||
- env: | ||
- BUILDMAN="toradex" | ||
- env: | ||
- BUILDMAN="kirkwood" | ||
- env: | ||
- BUILDMAN="mvebu" | ||
- env: | ||
- JOB="PXA" | ||
- BUILDMAN="pxa -x toradex" | ||
- 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: | ||
- JOB="tegra" | ||
BUILDMAN="tegra -x toradex" | ||
- env: | ||
- JOB="am33xx" | ||
BUILDMAN="am33xx -x siemens" | ||
- env: | ||
- BUILDMAN="omap3" | ||
- env: | ||
- BUILDMAN="omap4" | ||
- env: | ||
- BUILDMAN="omap5" | ||
- env: | ||
- BUILDMAN="uniphier" | ||
- env: | ||
- JOB="aarch64" | ||
BUILDMAN="aarch64 -x tegra,freescale,mvebu,uniphier,sunxi,samsung,rockchip" | ||
- env: | ||
- BUILDMAN="rockchip" | ||
- env: | ||
- BUILDMAN="sh4" | ||
TOOLCHAIN="sh4" | ||
- env: | ||
- JOB="Xilinx (ARM)" | ||
BUILDMAN="xilinx -x microblaze" | ||
- 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_arm" | ||
TEST_PY_TEST_SPEC="not sleep" | ||
QEMU_TARGET="arm-softmmu" | ||
BUILDMAN="^qemu_arm$" | ||
- 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 | ||
- ./make.sh ${TARGET_BOARD} | ||
|
||
before_deploy: | ||
- export RELEASE_VERSION="${TARGET_BOARD}-${TRAVIS_BUILD_NUMBER}" | ||
- tar czf u-boot-${RELEASE_VERSION}.tar.gz sd_fuse/idbloader.img sd_fuse/uboot.img sd_fuse/trust.img sd_fuse/sd_fusing.sh | ||
- git config --global user.name ${GIT_USER_NAME} | ||
- git config --global user.email ${GIT_USER_EMAIL} | ||
- export REMOTE_URL=`git config --get remote.origin.url` | ||
- export GIT_TAG="travis/${RELEASE_VERSION}" | ||
- git tag ${GIT_TAG} -a -m "Tagged by Travis CI" | ||
- git push --quiet https://${PRIVATE_ACCESS_TOKEN}@${REMOTE_URL#$"https://"} ${GIT_TAG} | ||
|
||
deploy: | ||
provider: releases | ||
api_key: ${PRIVATE_ACCESS_TOKEN} | ||
file_glob: true | ||
file: u-boot-${RELEASE_VERSION}.tar.gz | ||
skip_cleanup: true | ||
on: | ||
tags: false | ||
all_branches: true |