windows_vm: windows-2019
ubuntu_vm: ubuntu-22.04
macos_vm: macOS-12
- ci_runner_image: trini/u-boot-gitlab-ci-runner:jammy-20221130-11Jan2023
+ ci_runner_image: trini/u-boot-gitlab-ci-runner:jammy-20230624-20Jul2023
# Add '-u 0' options for Azure pipelines, otherwise we get "permission
# denied" error when it tries to "useradd -m -u 1001 vsts_azpcontainer",
# since our $(ci_runner_image) user is not root.
virtualenv -p /usr/bin/python3 /tmp/venvhtml
. /tmp/venvhtml/bin/activate
pip install -r doc/sphinx/requirements.txt
- make htmldocs
+ make htmldocs KDOC_WERROR=1
make infodocs
- job: todo
options: $(container_option)
steps:
- script: |
- ./tools/buildman/buildman -R
+ ./tools/buildman/buildman --maintainer-check || exit 0
- job: tools_only
displayName: 'Ensure host tools build'
virtualenv -p /usr/bin/python3 /tmp/venv
. /tmp/venv/bin/activate
pip install -r test/py/requirements.txt
+ pip install -r tools/buildman/requirements.txt
export UBOOT_TRAVIS_BUILD_DIR=/tmp/sandbox_spl
export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt
export PATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc:${PATH}
# seems to hang forever with pre-configured "container" environment
docker run -v $PWD:$(work_dir) $(ci_runner_image) /bin/bash $(work_dir)/build.sh
- - job: nokia_rx51_test
- displayName: 'Run tests for Nokia RX-51 (aka N900)'
- pool:
- vmImage: $(ubuntu_vm)
- container:
- image: $(ci_runner_image)
- options: $(container_option)
- steps:
- - script: |
- export PATH=/opt/gcc-12.2.0-nolibc/arm-linux-gnueabi/bin:$PATH
- test/nokia_rx51_test.sh
-
- job: pylint
displayName: Check for any pylint regressions
pool:
git config --global --add safe.directory $(work_dir)
export USER=azure
pip install -r test/py/requirements.txt
+ pip install -r tools/buildman/requirements.txt
pip install asteval pylint==2.12.2 pyopenssl
export PATH=${PATH}:~/.local/bin
echo "[MASTER]" >> .pylintrc
export PYTHONPATH=${UBOOT_TRAVIS_BUILD_DIR}/scripts/dtc/pylibfdt
make pylint_err
+ - job: check_for_pre_schema_tags
+ displayName: 'Check for pre-schema driver model tags'
+ pool:
+ vmImage: $(ubuntu_vm)
+ container:
+ image: $(ci_runner_image)
+ options: $(container_option)
+ steps:
+ # If grep succeeds and finds a match the test fails as we should
+ # have no matches.
+ - script: git grep u-boot,dm- -- '*.dts*' && exit 1 || exit 0
+
+ - job: check_packing_of_python_tools
+ displayName: 'Check we can package the Python tools'
+ pool:
+ vmImage: $(ubuntu_vm)
+ container:
+ image: $(ci_runner_image)
+ options: $(container_option)
+ steps:
+ - script: make pip
+
- stage: test_py
jobs:
- job: test_py
TEST_PY_BD: "sandbox"
sandbox_clang:
TEST_PY_BD: "sandbox"
- OVERRIDE: "-O clang-14"
+ OVERRIDE: "-O clang-16"
sandbox_nolto:
TEST_PY_BD: "sandbox"
BUILD_ENV: "NO_LTO=1"
TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
sandbox_vpl:
TEST_PY_BD: "sandbox_vpl"
- TEST_PY_TEST_SPEC: "test_vpl_help or test_spl"
+ TEST_PY_TEST_SPEC: "vpl or test_spl"
sandbox_noinst:
TEST_PY_BD: "sandbox_noinst"
TEST_PY_TEST_SPEC: "test_ofplatdata or test_handoff or test_spl"
sandbox_flattree:
TEST_PY_BD: "sandbox_flattree"
+ sandbox_trace:
+ 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"
coreboot:
TEST_PY_BD: "coreboot"
TEST_PY_ID: "--id qemu"
qemu_arm64:
TEST_PY_BD: "qemu_arm64"
TEST_PY_TEST_SPEC: "not sleep"
+ qemu_m68k:
+ 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"
qemu_malta:
TEST_PY_BD: "malta"
TEST_PY_ID: "--id qemu"
grub-mkimage --prefix=\"\" -o ~/grub_x86.efi -O i386-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
grub-mkimage --prefix=\"\" -o ~/grub_x64.efi -O x86_64-efi normal echo lsefimmap lsefi lsefisystab efinet tftp minicmd
if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then
- wget -O - https://github.com/riscv/opensbi/releases/download/v0.9/opensbi-0.9-rv-bin.tar.xz | tar -C /tmp -xJ;
- export OPENSBI=/tmp/opensbi-0.9-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin;
+ wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.2/opensbi-1.2-rv-bin.tar.xz | tar -C /tmp -xJ;
+ export OPENSBI=/tmp/opensbi-1.2-rv-bin/share/opensbi/ilp32/generic/firmware/fw_dynamic.bin;
fi
if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]] || [[ "${TEST_PY_BD}" == "sifive_unleashed" ]]; then
- wget -O - https://github.com/riscv/opensbi/releases/download/v0.9/opensbi-0.9-rv-bin.tar.xz | tar -C /tmp -xJ;
- export OPENSBI=/tmp/opensbi-0.9-rv-bin/share/opensbi/lp64/generic/firmware/fw_dynamic.bin;
+ wget -O - https://github.com/riscv-software-src/opensbi/releases/download/v1.2/opensbi-1.2-rv-bin.tar.xz | tar -C /tmp -xJ;
+ export OPENSBI=/tmp/opensbi-1.2-rv-bin/share/opensbi/lp64/generic/firmware/fw_dynamic.bin;
fi
# the below corresponds to .gitlab-ci.yml "script"
cd ${WORK_DIR}
export UBOOT_TRAVIS_BUILD_DIR=/tmp/${TEST_PY_BD};
+ if [ -n "${BUILD_ENV}" ]; then
+ export ${BUILD_ENV};
+ fi
+ pip install -r tools/buildman/requirements.txt
tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e --board ${TEST_PY_BD} ${OVERRIDE}
cp ~/grub_x86.efi ${UBOOT_TRAVIS_BUILD_DIR}/
cp ~/grub_x64.efi ${UBOOT_TRAVIS_BUILD_DIR}/
cp images/spi-nor.img ${UBOOT_TRAVIS_BUILD_DIR}/;
fi
if [[ "${TEST_PY_BD}" == "coreboot" ]]; then
- wget -O - "https://drive.google.com/uc?id=1x6nrtWIyIRPLS2cQBwYTnT2TbOI8UjmM&export=download" |xz -dc >${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom;
+ wget -O - "https://drive.google.com/uc?id=1uJ2VkUQ8czWFZmhJQ90Tp8V_zrJ6BrBH&export=download" |xz -dc >${UBOOT_TRAVIS_BUILD_DIR}/coreboot.rom;
wget -O - "https://drive.google.com/uc?id=149Cz-5SZXHNKpi9xg6R_5XITWohu348y&export=download" >cbfstool;
chmod a+x cbfstool;
./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;
virtualenv -p /usr/bin/python3 /tmp/venv
. /tmp/venv/bin/activate
pip install -r test/py/requirements.txt
+ pip install pytest-azurepipelines
export PATH=/opt/qemu/bin:/tmp/uboot-test-hooks/bin:${PATH};
export PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci;
# "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not
- ./test/py/test.py -ra --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} --build-dir "$UBOOT_TRAVIS_BUILD_DIR";
+ ./test/py/test.py -ra -o cache_dir="$UBOOT_TRAVIS_BUILD_DIR"/.pytest_cache --bd ${TEST_PY_BD} ${TEST_PY_ID} ${TEST_PY_TEST_SPEC:+"-k ${TEST_PY_TEST_SPEC}"} --build-dir "$UBOOT_TRAVIS_BUILD_DIR" --report-dir "$UBOOT_TRAVIS_BUILD_DIR";
# the below corresponds to .gitlab-ci.yml "after_script"
rm -rf /tmp/uboot-test-hooks /tmp/venv
EOF
fi
# Some tests using libguestfs-tools need the fuse device to run
docker run "$@" --device /dev/fuse:/dev/fuse -v $PWD:$(work_dir) $(ci_runner_image) /bin/bash $(work_dir)/test.sh
+ retryCountOnTaskFailure: 2 # QEMU may be too slow, etc.
- stage: world_build
jobs:
- job: build_the_world
+ timeoutInMinutes: 0 # Use the maximum allowed
displayName: 'Build the World'
pool:
vmImage: $(ubuntu_vm)
# Use almost the same target division in .travis.yml, only merged
# 3 small build jobs (arc/microblaze/xtensa) into one.
matrix:
- arc_microblaze_xtensa:
- BUILDMAN: "arc microblaze xtensa"
+ arc_nios2_m68k_microblaze_xtensa:
+ BUILDMAN: "arc nios2 microblaze m68k xtensa"
amlogic:
BUILDMAN: "amlogic"
arm11_arm7_arm920t_arm946es:
BUILDMAN: "bcm -x mips"
nxp_arm32:
BUILDMAN: "freescale -x powerpc,m68k,aarch64,ls101,ls102,ls104,ls108,ls20,lx216"
- nxp_ls101x:
- BUILDMAN: "freescale&ls101"
+ nxp_ls101x_ls108x:
+ BUILDMAN: "freescale&ls101 freescale&ls108"
nxp_ls102x:
- BUILDMAN: "freescale&ls102"
+ BUILDMAN: "freescale&ls102 -x keymile"
nxp_ls104x:
BUILDMAN: "freescale&ls104"
- nxp_ls108x:
- BUILDMAN: "freescale&ls108"
- nxp_ls20xx:
- BUILDMAN: "freescale&ls20"
- nxp_lx216x:
- BUILDMAN: "freescale&lx216"
+ nxp_ls20xx_lx216x:
+ BUILDMAN: "freescale&ls20 freescale&lx216"
imx6:
BUILDMAN: "mx6 -x boundary,engicam,freescale,technexion,toradex"
imx:
BUILDMAN: "mx -x mx6,imx8,freescale,technexion,toradex"
imx8_imx9:
- BUILDMAN: "imx8 imx9"
+ BUILDMAN: "imx8 imx9 -x engicam,technexion,toradex"
+ keymiles_siemens_technexion:
+ BUILDMAN: "keymile siemens technexion"
keystone2_keystone3:
- BUILDMAN: "k2 k3"
+ BUILDMAN: "k2 k3 -x siemens,toradex"
sandbox_asan:
BUILDMAN: "sandbox"
OVERRIDE: "-a ASAN"
sandbox_clang_asan:
BUILDMAN: "sandbox"
- OVERRIDE: "-O clang-14 -a ASAN"
- samsung_socfpga:
- BUILDMAN: "samsung socfpga"
- sun4i:
- BUILDMAN: "sun4i"
- sun5i:
- BUILDMAN: "sun5i"
- sun6i:
- BUILDMAN: "sun6i"
+ OVERRIDE: "-O clang-16 -a ASAN"
+ samsung_socfpga_renesas:
+ BUILDMAN: "samsung socfpga renesas"
+ sun4i_sun9i:
+ BUILDMAN: "sun4i sun9i"
+ sun5i_sun6i:
+ BUILDMAN: "sun5i sun6i"
sun7i:
BUILDMAN: "sun7i"
- sun8i_32bit:
- BUILDMAN: "sun8i&armv7"
- sun8i_64bit:
- BUILDMAN: "sun8i&aarch64"
- sun9i:
- BUILDMAN: "sun9i"
+ sun8i:
+ BUILDMAN: "sun8i"
sun50i:
BUILDMAN: "sun50i"
arm_catch_all:
- BUILDMAN: "arm -x arm11,arm7,arm9,aarch64,at91,bcm,freescale,kirkwood,mvebu,renesas,siemens,tegra,uniphier,mx,samsung,sunxi,am33xx,omap,rk,toradex,socfpga,k2,k3,zynq"
+ BUILDMAN: "arm -x arm11,arm7,arm9,aarch64,at91,bcm,freescale,kirkwood,mvebu,renesas,siemens,tegra,uniphier,mx,samsung,sunxi,am33xx,omap,toradex,socfpga,k2,k3,zynq"
sandbox_x86:
BUILDMAN: "sandbox x86"
- technexion:
- BUILDMAN: "technexion"
- kirkwood:
- BUILDMAN: "kirkwood"
- mvebu:
- BUILDMAN: "mvebu"
- m68k:
- BUILDMAN: "m68k"
+ kirkwood_mvebu_uniphier:
+ BUILDMAN: "kirkwood mvebu uniphier"
mips:
BUILDMAN: "mips"
powerpc:
- BUILDMAN: "powerpc"
- siemens:
- BUILDMAN: "siemens"
+ BUILDMAN: "powerpc -x keymile"
tegra:
BUILDMAN: "tegra -x toradex"
- am33xx_no_siemens:
- BUILDMAN: "am33xx -x siemens"
- omap:
- BUILDMAN: "omap"
- uniphier:
- BUILDMAN: "uniphier"
+ am33xx_omap:
+ BUILDMAN: "am33xx omap -x siemens"
aarch64_catch_all:
BUILDMAN: "aarch64 -x amlogic,bcm,imx8,imx9,k3,tegra,ls1,ls2,lx216,mvebu,uniphier,renesas,sunxi,samsung,socfpga,rk,versal,zynq"
- rockchip_32bit:
- BUILDMAN: "rk -x aarch64"
- rockchip_64bit:
- BUILDMAN: "rk&aarch64"
- renesas:
- BUILDMAN: "renesas"
- zynq:
- BUILDMAN: "zynq&armv7"
- zynqmp_versal:
- BUILDMAN: "versal|zynqmp&aarch64"
+ rk_non_rockchip_64bit:
+ BUILDMAN: "rk&aarch64 -x rockchip"
+ rk_rockchip_64bit:
+ BUILDMAN: "rk&aarch64&rockchip"
+ zynq_zynqmp_versal:
+ BUILDMAN: "zynq&armv7 versal zynqmp&aarch64"
riscv:
BUILDMAN: "riscv"
steps:
# make environment variables available as tests are running inside a container
export BUILDMAN="${BUILDMAN}"
git config --global --add safe.directory ${WORK_DIR}
+ pip install -r tools/buildman/requirements.txt
EOF
cat << "EOF" >> build.sh
if [[ "${BUILDMAN}" != "" ]]; then