mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-26 21:54:37 +08:00
53cd5d921d
This class is the new way to handle arguments in Python. Convert binman over to use it. At the same time, introduce commands so that we can separate out the different parts of binman functionality. Signed-off-by: Simon Glass <sjg@chromium.org>
362 lines
10 KiB
YAML
362 lines
10 KiB
YAML
# SPDX-License-Identifier: GPL-2.0+
|
|
|
|
# Grab our configured image. The source for this is found at:
|
|
# https://gitlab.denx.de/u-boot/gitlab-ci-runner
|
|
image: trini/u-boot-gitlab-ci-runner:xenial-20190222-24April2019
|
|
|
|
# We run some tests in different order, to catch some failures quicker.
|
|
stages:
|
|
- test.py
|
|
- testsuites
|
|
- world build
|
|
|
|
.buildman_and_testpy_template: &buildman_and_testpy_dfn
|
|
tags: [ 'all' ]
|
|
stage: test.py
|
|
before_script:
|
|
# 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`
|
|
- virtualenv /tmp/venv
|
|
- . /tmp/venv/bin/activate
|
|
- pip install pytest==2.8.7
|
|
- pip install python-subunit
|
|
- grub-mkimage -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
|
|
- grub-mkimage -o ~/grub_x64.efi -O x86_64-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 )
|
|
- mkdir ~/grub2-arm64
|
|
- ( cd ~/grub2-arm64; wget -O - http://download.opensuse.org/ports/aarch64/distribution/leap/42.2/repo/oss/suse/aarch64/grub2-arm64-efi-2.02~beta2-87.1.aarch64.rpm | rpm2cpio | cpio -di )
|
|
- if [[ "${QEMU_TARGET}" != "" ]]; then
|
|
git clone git://git.qemu.org/qemu.git /tmp/qemu;
|
|
pushd /tmp/qemu;
|
|
git submodule update --init dtc &&
|
|
git checkout ${QEMU_VERSION} &&
|
|
./configure --prefix=/tmp/qemu-install --target-list=${QEMU_TARGET} &&
|
|
make -j$(nproc) all install;
|
|
popd;
|
|
fi
|
|
after_script:
|
|
- rm -rf ~/grub2* /tmp/uboot-test-hooks /tmp/qemu /tmp/venv
|
|
script:
|
|
# From buildman, exit code 129 means warnings only. If we've been asked to
|
|
# use clang only do one configuration.
|
|
- if [[ "${BUILDMAN}" != "" ]]; then
|
|
ret=0;
|
|
tools/buildman/buildman -P -E ${BUILDMAN} ${OVERRIDE}|| 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};
|
|
export PATH=/tmp/qemu-install/bin:/tmp/uboot-test-hooks/bin:/usr/bin:/bin;
|
|
export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
|
|
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";
|
|
ret=$?;
|
|
if [[ $ret -ne 0 ]]; then
|
|
exit $ret;
|
|
fi;
|
|
fi;
|
|
|
|
build all 32bit ARM plaforms:
|
|
tags: [ 'all' ]
|
|
stage: world build
|
|
script:
|
|
- ret=0;
|
|
./tools/buildman/buildman -P -E arm -x aarch64 || ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
./tools/buildman/buildman -sdeP;
|
|
exit $ret;
|
|
fi;
|
|
|
|
build all 64bit ARM plaforms:
|
|
tags: [ 'all' ]
|
|
stage: world build
|
|
script:
|
|
- virtualenv /tmp/venv
|
|
- . /tmp/venv/bin/activate
|
|
- pip install pyelftools
|
|
- ret=0;
|
|
./tools/buildman/buildman -P -E aarch64 || ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
./tools/buildman/buildman -sdeP;
|
|
exit $ret;
|
|
fi;
|
|
|
|
build all PowerPC plaforms:
|
|
tags: [ 'all' ]
|
|
stage: world build
|
|
script:
|
|
- ret=0;
|
|
./tools/buildman/buildman -P -E powerpc || ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
./tools/buildman/buildman -sdeP;
|
|
exit $ret;
|
|
fi;
|
|
|
|
build all other plaforms:
|
|
tags: [ 'all' ]
|
|
stage: world build
|
|
script:
|
|
- ret=0;
|
|
./tools/buildman/buildman -P -E -x arm,powerpc || ret=$?;
|
|
if [[ $ret -ne 0 && $ret -ne 129 ]]; then
|
|
./tools/buildman/buildman -sdeP;
|
|
exit $ret;
|
|
fi;
|
|
|
|
# QA jobs for code analytics
|
|
# static code analysis with cppcheck (we can add --enable=all later)
|
|
cppcheck:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- cppcheck --force --quiet --inline-suppr .
|
|
|
|
# search for TODO within source tree
|
|
grep TODO/FIXME/HACK:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- grep -r TODO .
|
|
- grep -r FIXME .
|
|
# search for HACK within source tree and ignore HACKKIT board
|
|
- grep -r HACK . | grep -v HACKKIT
|
|
|
|
# some statistics about the code base
|
|
sloccount:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- sloccount .
|
|
|
|
# ensure all configs have MAINTAINERS entries
|
|
Check for configs without MAINTAINERS entry:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- if [ `./tools/genboardscfg.py -f 2>&1 | wc -l` -ne 0 ]; then exit 1; fi
|
|
|
|
# Ensure host tools build
|
|
Build tools-only:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- make tools-only_config tools-only -j$(nproc)
|
|
|
|
# Run various tool tests
|
|
Run patman testsuite:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- git config --global user.name "GitLab CI Runner"
|
|
- git config --global user.email trini@konsulko.com
|
|
- ./tools/patman/patman --test
|
|
|
|
Run buildman testsuite:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- ./tools/buildman/buildman -t
|
|
|
|
Run binman and dtoc testsuite:
|
|
tags: [ 'all' ]
|
|
stage: testsuites
|
|
script:
|
|
- export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/.bm-work/sandbox_spl;
|
|
./tools/buildman/buildman -P sandbox_spl &&
|
|
export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
|
|
export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
|
|
./tools/binman/binman --toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools test &&
|
|
./tools/dtoc/dtoc -t
|
|
|
|
# Test sandbox with test.py
|
|
sandbox test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "sandbox"
|
|
BUILDMAN: "^sandbox$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox_spl test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "sandbox_spl"
|
|
BUILDMAN: "^sandbox_spl$"
|
|
TEST_PY_TEST_SPEC: "test_ofplatdata"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
evb-ast2500 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "evb-ast2500"
|
|
TEST_PY_ID: "--id qemu"
|
|
QEMU_TARGET: "arm-softmmu"
|
|
QEMU_VERSION: "506179e42112be77bfd071f050b15762d3b2cd43"
|
|
BUILDMAN: "^evb-ast2500$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox_flattree test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "sandbox_flattree"
|
|
BUILDMAN: "^sandbox_flattree$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
vexpress_ca15_tc2 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "vexpress_ca15_tc2"
|
|
TEST_PY_ID: "--id qemu"
|
|
QEMU_TARGET: "arm-softmmu"
|
|
QEMU_VERSION: "v3.0.0"
|
|
BUILDMAN: "^vexpress_ca15_tc2$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
vexpress_ca9x4 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "vexpress_ca9x4"
|
|
TEST_PY_ID: "--id qemu"
|
|
QEMU_TARGET: "arm-softmmu"
|
|
BUILDMAN: "^vexpress_ca9x4$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
integratorcp_cm926ejs test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "integratorcp_cm926ejs"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
QEMU_TARGET: "arm-softmmu"
|
|
BUILDMAN: "^integratorcp_cm926ejs$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_arm test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_arm"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "arm-softmmu"
|
|
BUILDMAN: "^qemu_arm$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_arm64 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_arm64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "aarch64-softmmu"
|
|
BUILDMAN: "^qemu_arm64$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_mips test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_mips"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "mips-softmmu"
|
|
BUILDMAN: "^qemu_mips$"
|
|
TOOLCHAIN: "mips"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_mipsel test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_mipsel"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "mipsel-softmmu"
|
|
BUILDMAN: "^qemu_mipsel$"
|
|
TOOLCHAIN: "mips"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_mips64 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_mips64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "mips64-softmmu"
|
|
BUILDMAN: "^qemu_mips64$"
|
|
TOOLCHAIN: "mips"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_mips64el test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu_mips64el"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "mips64el-softmmu"
|
|
BUILDMAN: "^qemu_mips64el$"
|
|
TOOLCHAIN: "mips"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-ppce500 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu-ppce500"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "ppc-softmmu"
|
|
BUILDMAN: "^qemu-ppce500$"
|
|
TOOLCHAIN: "powerpc"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-x86 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu-x86"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "i386-softmmu"
|
|
BUILDMAN: "^qemu-x86$"
|
|
TOOLCHAIN: "i386"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-x86_64 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "qemu-x86_64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "x86_64-softmmu"
|
|
BUILDMAN: "^qemu-x86_64$"
|
|
TOOLCHAIN: "i386"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
zynq_zc702 test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "zynq_zc702"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "arm-softmmu"
|
|
TEST_PY_ID: "--id qemu"
|
|
BUILDMAN: "^zynq_zc702$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
xilinx_versal_virt test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "xilinx_versal_virt"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "aarch64-softmmu"
|
|
TEST_PY_ID: "--id qemu"
|
|
BUILDMAN: "^xilinx_versal_virt$"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
xtfpga test.py:
|
|
tags: [ 'all' ]
|
|
variables:
|
|
TEST_PY_BD: "xtfpga"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
QEMU_TARGET: "xtensa-softmmu"
|
|
TEST_PY_ID: "--id qemu"
|
|
BUILDMAN: "^xtfpga$"
|
|
TOOLCHAIN: "xtensa-dc233c-elf"
|
|
<<: *buildman_and_testpy_dfn
|