Now that we can have "make allyesconfig" build and link, add this type of build to the job which builds host tools as well. In GitLab, make this job rather than binman testsuite be the job which unblocks the next stage of the pipeline. This is because we had been using that job for "sandbox builds", and now that we have an explicit test for that, we should use it. Signed-off-by: Tom Rini <trini@konsulko.com>
794 lines
21 KiB
YAML
794 lines
21 KiB
YAML
# SPDX-License-Identifier: GPL-2.0+
|
|
|
|
variables:
|
|
DEFAULT_ALL_TAG: "all"
|
|
DEFAULT_AMD64_TAG: "amd64"
|
|
DEFAULT_FAST_TAG: "fast"
|
|
MIRROR_DOCKER: docker.io
|
|
SAGE_LAB: ""
|
|
SJG_LAB: ""
|
|
PLATFORM: linux/amd64,linux/arm64
|
|
|
|
default:
|
|
tags:
|
|
- ${DEFAULT_ALL_TAG}
|
|
|
|
workflow:
|
|
rules:
|
|
- when: always
|
|
|
|
# Grab our configured image. The source for this is found
|
|
# in the u-boot tree at tools/docker/Dockerfile
|
|
image: ${MIRROR_DOCKER}/trini/u-boot-gitlab-ci-runner:noble-20251013-30Nov2025
|
|
|
|
# We run some tests in different order, to catch some failures quicker.
|
|
stages:
|
|
- testsuites
|
|
- test.py
|
|
- sage-lab
|
|
- sjg-lab
|
|
- world build
|
|
|
|
.buildman_and_testpy_template: &buildman_and_testpy_dfn
|
|
stage: test.py
|
|
retry: 2 # QEMU may be too slow, etc.
|
|
needs: [ "Build allyesconfig, tools-only and envtools" ]
|
|
before_script:
|
|
# Clone uboot-test-hooks
|
|
- git config --global --add safe.directory "${CI_PROJECT_DIR}"
|
|
- git clone --depth=1 https://source.denx.de/u-boot/u-boot-test-hooks /tmp/uboot-test-hooks
|
|
# qemu_arm64_lwip_defconfig is the same as qemu_arm64 but with NET_LWIP enabled.
|
|
# The test config and the boardenv file from qemu_arm64 can be re-used so create symlinks
|
|
- ln -s conf.qemu_arm64 /tmp/uboot-test-hooks/bin/travis-ci/conf.qemu_arm64_lwip_na
|
|
- ln -s u_boot_boardenv_qemu_arm64_na.py /tmp/uboot-test-hooks/py/travis-ci/u_boot_boardenv_qemu_arm64_lwip_na.py
|
|
- ln -s travis-ci /tmp/uboot-test-hooks/bin/`hostname`
|
|
- ln -s travis-ci /tmp/uboot-test-hooks/py/`hostname`
|
|
- if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]] || [[ "${TEST_PY_BD}" == "xilinx_mbv32_smode" ]]; then
|
|
wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.3.1/opensbi-1.3.1-rv-bin.tar.xz | tar -C /tmp -xJ;
|
|
export OPENSBI=/tmp/opensbi-1.3.1-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin;
|
|
fi
|
|
- if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]] || [[ "${TEST_PY_BD}" == "sifive_unleashed" ]] || [[ "${TEST_PY_BD}" == "xilinx_mbv64_smode" ]]; then
|
|
wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.3.1/opensbi-1.3.1-rv-bin.tar.xz | tar -C /tmp -xJ;
|
|
export OPENSBI=/tmp/opensbi-1.3.1-rv-bin/share/opensbi/lp64/generic/firmware/fw_dynamic.bin;
|
|
fi
|
|
- if [[ "${TEST_PY_BD}" == "qemu-arm-sbsa" ]]; then
|
|
wget -O /tmp/bl1.bin https://artifacts.codelinaro.org/artifactory/linaro-419-sbsa-ref/latest/tf-a/bl1.bin;
|
|
wget -O /tmp/fip.bin https://artifacts.codelinaro.org/artifactory/linaro-419-sbsa-ref/latest/tf-a/fip.bin;
|
|
export BINMAN_INDIRS=/tmp;
|
|
fi
|
|
# Prepare python environment
|
|
- python3 -m venv /tmp/venv;
|
|
. /tmp/venv/bin/activate;
|
|
pip install -r test/py/requirements.txt -r tools/binman/requirements.txt
|
|
-r tools/buildman/requirements.txt -r tools/u_boot_pylib/requirements.txt
|
|
setuptools
|
|
|
|
after_script:
|
|
- cp -v /tmp/${TEST_PY_BD}/*.{html,css,xml} .
|
|
- rm -rf /tmp/uboot-test-hooks /tmp/venv
|
|
script:
|
|
# If we've been asked to use clang only do one configuration.
|
|
- export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD}
|
|
- echo BUILD_ENV ${BUILD_ENV}
|
|
- if [ -n "${BUILD_ENV}" ]; then
|
|
export ${BUILD_ENV};
|
|
fi
|
|
- tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e
|
|
--board ${TEST_PY_BD} ${OVERRIDE}
|
|
- cp /opt/grub/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/
|
|
- cp /opt/grub/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/
|
|
- cp /opt/grub/grubriscv64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_riscv64.efi
|
|
- cp /opt/grub/grubaa64.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm64.efi
|
|
- cp /opt/grub/grubarm.efi $UBOOT_TRAVIS_BUILD_DIR/grub_arm.efi
|
|
# create sdcard / spi-nor images for sifive unleashed using genimage
|
|
- if [[ "${TEST_PY_BD}" == "sifive_unleashed" ]]; then
|
|
mkdir -p root;
|
|
cp ${UBOOT_TRAVIS_BUILD_DIR}/spl/u-boot-spl.bin .;
|
|
cp ${UBOOT_TRAVIS_BUILD_DIR}/u-boot.itb .;
|
|
rm -rf tmp;
|
|
genimage --inputpath . --config board/sifive/unleashed/genimage_sdcard.cfg;
|
|
cp images/sdcard.img ${UBOOT_TRAVIS_BUILD_DIR}/;
|
|
rm -rf tmp;
|
|
genimage --inputpath . --config board/sifive/unleashed/genimage_spi-nor.cfg;
|
|
cp images/spi-nor.img ${UBOOT_TRAVIS_BUILD_DIR}/;
|
|
fi
|
|
- if [[ "${TEST_PY_BD}" == "coreboot" ]]; then
|
|
cp /opt/coreboot/coreboot.rom ${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom;
|
|
/opt/coreboot/cbfstool ${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom remove -n fallback/payload;
|
|
/opt/coreboot/cbfstool ${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom add-flat-binary -f ${UBOOT_TRAVIS_BUILD_DIR}/u-boot.bin -n fallback/payload -c LZMA -l 0x1110000 -e 0x1110000;
|
|
fi
|
|
# If we have TF-A binaries, we need to use them.
|
|
- tfa_dir=""
|
|
- rm -f /tmp/fip.bin
|
|
- rm -f /tmp/bl1.bin
|
|
- if [[ -d /opt/tf-a/"${TEST_PY_BD}${TEST_PY_ID//--id /_}" ]]; then
|
|
tfa_dir="/opt/tf-a/${TEST_PY_BD}${TEST_PY_ID//--id /_}";
|
|
elif [[ -d /opt/tf-a/"${TEST_PY_BD}" ]]; then
|
|
tfa_dir="/opt/tf-a/${TEST_PY_BD}";
|
|
fi
|
|
- if [[ -n "$tfa_dir" ]]; then
|
|
cp "$tfa_dir"/fip.bin "$tfa_dir"/bl1.bin /tmp/;
|
|
fi
|
|
- if [ -f /tmp/fip.bin ] && [ -f /tmp/bl1.bin ]; then
|
|
export fip=/tmp/fip.bin;
|
|
export bl1=/tmp/bl1.bin;
|
|
export PATH=/opt/Base_RevC_AEMvA_pkg/models/Linux64_GCC-9.3:${PATH};
|
|
fi
|
|
# "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not
|
|
- export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH};
|
|
export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
|
|
python3 -m http.server 80 --directory "${UBOOT_TRAVIS_BUILD_DIR}" > /dev/null 2>&1 &
|
|
HTTP_PID=$!;
|
|
sleep 1;
|
|
if ps -p ${HTTP_PID} > /dev/null; then
|
|
export HTTP_PID;
|
|
else
|
|
unset HTTP_PID;
|
|
fi;
|
|
./test/py/test.py -ra --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_EXTRA}
|
|
${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"}
|
|
--build-dir "$UBOOT_TRAVIS_BUILD_DIR"
|
|
--junitxml=/tmp/${TEST_PY_BD}/results.xml;
|
|
if [[ -n "${HTTP_PID}" ]]; then
|
|
kill ${HTTP_PID};
|
|
fi
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- "*.html"
|
|
- "*.css"
|
|
- results.xml
|
|
reports:
|
|
junit: results.xml
|
|
expire_in: 1 week
|
|
|
|
build all platforms in a single job:
|
|
stage: world build
|
|
dependencies: []
|
|
needs: [ "sandbox test.py" ]
|
|
tags:
|
|
- ${DEFAULT_FAST_TAG}
|
|
script:
|
|
# Prepare python environment
|
|
- python3 -m venv /tmp/venv;
|
|
. /tmp/venv/bin/activate;
|
|
pip install -r tools/binman/requirements.txt
|
|
-r tools/buildman/requirements.txt
|
|
setuptools
|
|
- ret=0;
|
|
git config --global --add safe.directory "${CI_PROJECT_DIR}";
|
|
./tools/buildman/buildman -o /tmp -PEWM -x xtensa || ret=$?;
|
|
if [[ $ret -ne 0 ]]; then
|
|
./tools/buildman/buildman -o /tmp -seP;
|
|
exit $ret;
|
|
fi;
|
|
|
|
.testsuites:
|
|
stage: testsuites
|
|
|
|
check for new CONFIG symbols outside Kconfig:
|
|
extends: .testsuites
|
|
script:
|
|
- git config --global --add safe.directory "${CI_PROJECT_DIR}"
|
|
# If grep succeeds and finds a match the test fails as we should
|
|
# have no matches.
|
|
- git grep -E '^#[[:blank:]]*(define|undef)[[:blank:]]*CONFIG_'
|
|
:^doc/ :^arch/arm/dts/ :^scripts/kconfig/lkc.h
|
|
:^include/linux/kconfig.h :^tools/ :^dts/upstream/
|
|
:^lib/mbedtls/external :^lib/mbedtls/mbedtls_def_config.h &&
|
|
exit 1 || exit 0
|
|
|
|
# build documentation
|
|
docs:
|
|
extends: .testsuites
|
|
script:
|
|
- python3 -m venv /tmp/venvhtml
|
|
- . /tmp/venvhtml/bin/activate
|
|
- pip install -r doc/sphinx/requirements.txt -r test/py/requirements.txt
|
|
- make htmldocs KDOC_WERROR=1
|
|
- make infodocs
|
|
|
|
# ensure all configs have MAINTAINERS entries
|
|
Check for configs without MAINTAINERS entry:
|
|
extends: .testsuites
|
|
script:
|
|
- ./tools/buildman/buildman --maintainer-check
|
|
|
|
# Ensure host tools build
|
|
Build allyesconfig, tools-only and envtools:
|
|
extends: .testsuites
|
|
script:
|
|
# Allow pipefail because of how we use 'yes' here.
|
|
- set +o pipefail;
|
|
yes 0 | make allyesconfig oldconfig all -j$(nproc);
|
|
make mrproper;
|
|
make tools-only_config tools-only -j$(nproc);
|
|
make mrproper;
|
|
make tools-only_config envtools -j$(nproc)
|
|
|
|
Run binman, buildman, dtoc, Kconfig and patman testsuites:
|
|
extends: .testsuites
|
|
tags:
|
|
- ${DEFAULT_AMD64_TAG}
|
|
script:
|
|
- git config --global user.name "GitLab CI Runner";
|
|
git config --global user.email trini@konsulko.com;
|
|
git config --global --add safe.directory "${CI_PROJECT_DIR}";
|
|
export USER=gitlab;
|
|
python3 -m venv /tmp/venv;
|
|
. /tmp/venv/bin/activate;
|
|
pip install -r test/py/requirements.txt -r tools/binman/requirements.txt
|
|
-r tools/buildman/requirements.txt -r tools/patman/requirements.txt
|
|
-r tools/u_boot_pylib/requirements.txt;
|
|
export UBOOT_TRAVIS_BUILD_DIR=/tmp/tools-only;
|
|
export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt";
|
|
export PATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}";
|
|
set +e;
|
|
./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w
|
|
--board tools-only;
|
|
set -e;
|
|
export TOOLPATH="--toolpath ${UBOOT_TRAVIS_BUILD_DIR}/tools --toolpath /opt/coreboot";
|
|
./tools/binman/binman ${TOOLPATH} tool -f missing;
|
|
./tools/binman/binman ${TOOLPATH} test;
|
|
./tools/binman/binman ${TOOLPATH} test -T;
|
|
./tools/buildman/buildman -t;
|
|
./tools/dtoc/dtoc -t;
|
|
./tools/patman/patman test;
|
|
make testconfig
|
|
|
|
# Check for any pylint regressions
|
|
Run pylint:
|
|
extends: .testsuites
|
|
script:
|
|
- git config --global --add safe.directory "${CI_PROJECT_DIR}"
|
|
- python3 -m venv /tmp/venv
|
|
- . /tmp/venv/bin/activate
|
|
- pip install -r test/py/requirements.txt -r tools/binman/requirements.txt
|
|
-r tools/buildman/requirements.txt -r tools/patman/requirements.txt
|
|
-r tools/u_boot_pylib/requirements.txt asteval pylint==3.3.4 pyopenssl
|
|
- export PATH=${PATH}:~/.local/bin
|
|
- echo "[MASTER]" >> .pylintrc
|
|
- echo "load-plugins=pylint.extensions.docparams" >> .pylintrc
|
|
- export UBOOT_TRAVIS_BUILD_DIR=/tmp/tools-only
|
|
- set +e
|
|
- ./tools/buildman/buildman -T0 -o ${UBOOT_TRAVIS_BUILD_DIR} -w
|
|
--board tools-only
|
|
- set -e
|
|
- pylint --version
|
|
- export PYTHONPATH="${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt"
|
|
- make pylint_err
|
|
|
|
# Check we can package the Python tools
|
|
Check packing of Python tools:
|
|
extends: .testsuites
|
|
script:
|
|
- make pip
|
|
|
|
# Test sandbox with test.py
|
|
sandbox test.py:
|
|
parallel:
|
|
matrix:
|
|
- HOST: "arm64"
|
|
- HOST: "amd64"
|
|
tags:
|
|
- ${HOST}
|
|
variables:
|
|
TEST_PY_BD: "sandbox"
|
|
TEST_PY_EXTRA: "--timing"
|
|
# addr2line in Ubuntu 'Noble' and later are broken.
|
|
TEST_PY_TEST_SPEC: "not event_dump"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox with clang test.py:
|
|
parallel:
|
|
matrix:
|
|
- HOST: "arm64"
|
|
- HOST: "amd64"
|
|
tags:
|
|
- ${HOST}
|
|
variables:
|
|
TEST_PY_BD: "sandbox"
|
|
OVERRIDE: "-O clang-20"
|
|
# addr2line in Ubuntu 'Noble' and later are broken.
|
|
TEST_PY_TEST_SPEC: "not event_dump"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox64 test.py:
|
|
parallel:
|
|
matrix:
|
|
- HOST: "arm64"
|
|
- HOST: "amd64"
|
|
tags:
|
|
- ${HOST}
|
|
variables:
|
|
TEST_PY_BD: "sandbox64"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox64 with clang test.py:
|
|
parallel:
|
|
matrix:
|
|
- HOST: "arm64"
|
|
- HOST: "amd64"
|
|
tags:
|
|
- ${HOST}
|
|
variables:
|
|
TEST_PY_BD: "sandbox64"
|
|
OVERRIDE: "-O clang-20"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox64_lwip test.py:
|
|
variables:
|
|
TEST_PY_BD: "sandbox64_lwip"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox_spl test.py:
|
|
variables:
|
|
TEST_PY_BD: "sandbox_spl"
|
|
TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox_noinst_test.py:
|
|
variables:
|
|
TEST_PY_BD: "sandbox_noinst"
|
|
TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox_noinst with LOAD_FIT_FULL test.py:
|
|
variables:
|
|
TEST_PY_BD: "sandbox_noinst"
|
|
TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
|
|
OVERRIDE: "-a CONFIG_SPL_LOAD_FIT_FULL=y"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox_vpl test.py:
|
|
variables:
|
|
TEST_PY_BD: "sandbox_vpl"
|
|
TEST_PY_TEST_SPEC: "vpl or test_spl"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
# Enable tracing and disable LTO, to ensure functions are not elided
|
|
sandbox trace_test.py:
|
|
variables:
|
|
TEST_PY_BD: "sandbox"
|
|
BUILD_ENV: "FTRACE=1 NO_LTO=1"
|
|
TEST_PY_TEST_SPEC: "trace"
|
|
OVERRIDE: "-a CONFIG_TRACE=y -a CONFIG_TRACE_EARLY=y -a CONFIG_TRACE_EARLY_SIZE=0x01000000 -a CONFIG_TRACE_BUFFER_SIZE=0x02000000"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
evb-ast2500 test.py:
|
|
variables:
|
|
TEST_PY_BD: "evb-ast2500"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
sandbox_flattree test.py:
|
|
variables:
|
|
TEST_PY_BD: "sandbox_flattree"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
vexpress_ca9x4 test.py:
|
|
variables:
|
|
TEST_PY_BD: "vexpress_ca9x4"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
integratorcp_cm926ejs test.py:
|
|
variables:
|
|
TEST_PY_BD: "integratorcp_cm926ejs"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_arm test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu_arm"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_arm64 test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu_arm64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
OVERRIDE: "-a CONFIG_SEMIHOSTING=y"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_arm64_lwip test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu_arm64_lwip"
|
|
TEST_PY_TEST_SPEC: "test_net_dhcp or test_net_ping or test_net_tftpboot"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_arm64_tfa_fw_handoff test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu_arm64"
|
|
TEST_PY_ID: "--id fw_handoff_tfa_optee"
|
|
TEST_PY_TEST_SPEC: "test_fw_handoff"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_arm_sbsa test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-arm-sbsa"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_m68k test.py:
|
|
variables:
|
|
TEST_PY_BD: "M5208EVBE"
|
|
TEST_PY_ID: "--id qemu"
|
|
TEST_PY_TEST_SPEC: "not sleep and not efi"
|
|
OVERRIDE: "-a CONFIG_M68K_QEMU=y -a ~CONFIG_MCFTMR"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_malta test.py:
|
|
variables:
|
|
TEST_PY_BD: "malta"
|
|
TEST_PY_TEST_SPEC: "not sleep and not efi"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_maltael test.py:
|
|
variables:
|
|
TEST_PY_BD: "maltael"
|
|
TEST_PY_TEST_SPEC: "not sleep and not efi"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_malta64 test.py:
|
|
variables:
|
|
TEST_PY_BD: "malta64"
|
|
TEST_PY_TEST_SPEC: "not sleep and not efi"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu_malta64el test.py:
|
|
variables:
|
|
TEST_PY_BD: "malta64el"
|
|
TEST_PY_TEST_SPEC: "not sleep and not efi"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-ppce500 test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-ppce500"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv32 test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv32"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv64 test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv32_spl test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv32_spl"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv64_spl test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv64_spl"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv64_smode test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv64_smode"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-riscv64_smode_acpi test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-riscv64_smode_acpi"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-x86 test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-x86"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-x86_64 test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-x86_64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
qemu-xtensa-dc233c test.py:
|
|
variables:
|
|
TEST_PY_BD: "qemu-xtensa-dc233c"
|
|
TEST_PY_TEST_SPEC: "not sleep and not efi"
|
|
tags:
|
|
- ${DEFAULT_AMD64_TAG}
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
r2dplus_i82557c test.py:
|
|
variables:
|
|
TEST_PY_BD: "r2dplus"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id i82557c_qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
r2dplus_pcnet test.py:
|
|
variables:
|
|
TEST_PY_BD: "r2dplus"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id pcnet_qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
r2dplus_rtl8139 test.py:
|
|
variables:
|
|
TEST_PY_BD: "r2dplus"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id rtl8139_qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
r2dplus_tulip test.py:
|
|
variables:
|
|
TEST_PY_BD: "r2dplus"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id tulip_qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
# This is broken upsteam: https://gitlab.com/qemu-project/qemu/-/issues/2945
|
|
#sifive_unleashed_sdcard test.py:
|
|
# variables:
|
|
# TEST_PY_BD: "sifive_unleashed"
|
|
# TEST_PY_TEST_SPEC: "not sleep"
|
|
# TEST_PY_ID: "--id sdcard_qemu"
|
|
# <<: *buildman_and_testpy_dfn
|
|
|
|
sifive_unleashed_spi-nor test.py:
|
|
variables:
|
|
TEST_PY_BD: "sifive_unleashed"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id spi-nor_qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
xilinx_mbv32 test.py:
|
|
variables:
|
|
TEST_PY_BD: "xilinx_mbv32"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
xilinx_mbv32_smode test.py:
|
|
variables:
|
|
TEST_PY_BD: "xilinx_mbv32_smode"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
xilinx_mbv64 test.py:
|
|
variables:
|
|
TEST_PY_BD: "xilinx_mbv64"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
xilinx_mbv64_smode test.py:
|
|
variables:
|
|
TEST_PY_BD: "xilinx_mbv64_smode"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
xilinx_zynq_virt test.py:
|
|
variables:
|
|
TEST_PY_BD: "xilinx_zynq_virt"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
xilinx_versal_virt test.py:
|
|
variables:
|
|
TEST_PY_BD: "xilinx_versal_virt"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
OVERRIDE: "-a ~CONFIG_USB_DWC3"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
xtfpga test.py:
|
|
variables:
|
|
TEST_PY_BD: "xtfpga"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
tags:
|
|
- ${DEFAULT_AMD64_TAG}
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
coreboot test.py:
|
|
variables:
|
|
TEST_PY_BD: "coreboot"
|
|
TEST_PY_TEST_SPEC: "not sleep"
|
|
TEST_PY_ID: "--id qemu"
|
|
<<: *buildman_and_testpy_dfn
|
|
|
|
# Add sage-lab stage
|
|
include: .gitlab-ci-sage-lab.yml
|
|
|
|
.sjg_lab_template: &sjg_lab_dfn
|
|
stage: sjg-lab
|
|
rules:
|
|
- if: $SJG_LAB == "1"
|
|
when: always
|
|
- if: $SJG_LAB != "1"
|
|
when: manual
|
|
allow_failure: true
|
|
dependencies: []
|
|
needs: [ "sandbox test.py" ]
|
|
tags: [ 'lab' ]
|
|
script:
|
|
# Environment:
|
|
# SRC - source tree
|
|
# OUT - output directory for builds
|
|
- export SRC="$(pwd)"
|
|
- export OUT="${SRC}/build/${BOARD}"
|
|
- export PATH=$PATH:~/bin
|
|
- export PATH=$PATH:/vid/software/devel/ubtest/u-boot-test-hooks/bin
|
|
|
|
# Load it on the device
|
|
- ret=0
|
|
- echo "role ${ROLE}"
|
|
- export strategy="-s uboot -e off"
|
|
- export USE_LABGRID_SJG=1
|
|
# export verbose="-v"
|
|
- ${SRC}/test/py/test.py -ra --role ${ROLE} ${TEST_PY_EXTRA:-"--capture=tee-sys"}
|
|
--build-dir "${OUT}"
|
|
${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"}
|
|
--junitxml=${OUT}/results.xml || ret=$?
|
|
- U_BOOT_BOARD_IDENTITY="${ROLE}" u-boot-test-release || true
|
|
- if [[ $ret -ne 0 ]]; then
|
|
exit $ret;
|
|
fi
|
|
artifacts:
|
|
when: always
|
|
paths:
|
|
- "build/${BOARD}/test-log.html"
|
|
- "build/${BOARD}/multiplexed_log.css"
|
|
- "build/${BOARD}/results.xml"
|
|
reports:
|
|
junit: "build/${BOARD}/results.xml"
|
|
expire_in: 1 week
|
|
|
|
rpi3:
|
|
variables:
|
|
ROLE: rpi3
|
|
<<: *sjg_lab_dfn
|
|
|
|
opi_pc:
|
|
variables:
|
|
ROLE: opi_pc
|
|
<<: *sjg_lab_dfn
|
|
|
|
pcduino3_nano:
|
|
variables:
|
|
ROLE: pcduino3_nano
|
|
<<: *sjg_lab_dfn
|
|
|
|
samus:
|
|
variables:
|
|
ROLE: samus
|
|
<<: *sjg_lab_dfn
|
|
|
|
link:
|
|
variables:
|
|
ROLE: link
|
|
<<: *sjg_lab_dfn
|
|
|
|
jerry:
|
|
variables:
|
|
ROLE: jerry
|
|
<<: *sjg_lab_dfn
|
|
|
|
minnowmax:
|
|
variables:
|
|
ROLE: minnowmax
|
|
<<: *sjg_lab_dfn
|
|
|
|
opi_pc2:
|
|
variables:
|
|
ROLE: opi_pc2
|
|
<<: *sjg_lab_dfn
|
|
|
|
bpi:
|
|
variables:
|
|
ROLE: bpi
|
|
<<: *sjg_lab_dfn
|
|
|
|
rpi2:
|
|
variables:
|
|
ROLE: rpi2
|
|
<<: *sjg_lab_dfn
|
|
|
|
bob:
|
|
variables:
|
|
ROLE: bob
|
|
<<: *sjg_lab_dfn
|
|
|
|
ff3399:
|
|
variables:
|
|
ROLE: ff3399
|
|
<<: *sjg_lab_dfn
|
|
|
|
coral:
|
|
variables:
|
|
ROLE: coral
|
|
<<: *sjg_lab_dfn
|
|
|
|
rpi3z:
|
|
variables:
|
|
ROLE: rpi3z
|
|
<<: *sjg_lab_dfn
|
|
|
|
bbb:
|
|
variables:
|
|
ROLE: bbb
|
|
<<: *sjg_lab_dfn
|
|
|
|
kevin:
|
|
variables:
|
|
ROLE: kevin
|
|
<<: *sjg_lab_dfn
|
|
|
|
pine64:
|
|
variables:
|
|
ROLE: pine64
|
|
<<: *sjg_lab_dfn
|
|
|
|
c4:
|
|
variables:
|
|
ROLE: c4
|
|
<<: *sjg_lab_dfn
|
|
|
|
rpi4:
|
|
variables:
|
|
ROLE: rpi4
|
|
<<: *sjg_lab_dfn
|
|
|
|
rpi0:
|
|
variables:
|
|
ROLE: rpi0
|
|
<<: *sjg_lab_dfn
|
|
|
|
snow:
|
|
variables:
|
|
ROLE: snow
|
|
<<: *sjg_lab_dfn
|
|
|
|
pcduino3:
|
|
variables:
|
|
ROLE: pcduino3
|
|
<<: *sjg_lab_dfn
|
|
|
|
nyan-big:
|
|
variables:
|
|
ROLE: nyan-big
|
|
<<: *sjg_lab_dfn
|
|
|
|
rpi:
|
|
variables:
|
|
ROLE: rpi
|
|
<<: *sjg_lab_dfn
|
|
|
|
# StarFive VisionFive 2
|
|
vf2:
|
|
variables:
|
|
ROLE: vf2
|
|
<<: *sjg_lab_dfn
|
|
|
|
qemu-x86_64:
|
|
variables:
|
|
ROLE: qemu-x86_64
|
|
TEST_PY_TEST_SPEC: "and not sleep"
|
|
<<: *sjg_lab_dfn
|