# SPDX-License-Identifier: GPL-2.0+
# Copyright Roger Meier <r.meier@siemens.com>

# build U-Boot on Travis CI - https://travis-ci.org/

sudo: required
dist: bionic

language: c

addons:
  apt:
    update: true
    sources:
    - sourceline: 'deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main'
      key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
    packages:
    - autopoint
    - cppcheck
    - sloccount
    - sparse
    - bc
    - build-essential
    - libsdl2-dev
    - python
    - python-pyelftools
    - python3-sphinx
    - python3-virtualenv
    - python3-pip
    - swig
    - libpython-dev
    - iasl
    - grub-efi-ia32-bin
    - grub-efi-amd64-bin
    - rpm2cpio
    - wget
    - device-tree-compiler
    - lzop
    - liblz4-tool
    - lzma-alone
    - libisl15
    - clang-10
    - srecord
    - graphviz
    - coreutils
    - util-linux
    - dosfstools
    - gdisk
    - mount
    - mtools
    - openssl
    - sbsigntool
    - fakeroot
    - mtd-utils

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 "arc = /tmp/arc_gnu_2019.09_prebuilt_uclibc_le_archs_linux_install" >> ~/.buildman
 - echo -e "\n[toolchain-alias]\nsh = sh2" >> ~/.buildman
 - echo -e "x86 = i386" >> ~/.buildman;
 - echo -e "riscv = riscv64" >> ~/.buildman;
 - cat ~/.buildman
 - 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
 - wget http://mirrors.kernel.org/ubuntu/pool/main/m/mpfr4/libmpfr4_3.1.4-1_amd64.deb && sudo dpkg -i libmpfr4_3.1.4-1_amd64.deb && rm libmpfr4_3.1.4-1_amd64.deb
 - wget http://mirrors.kernel.org/ubuntu/pool/universe/e/efitools/efitools_1.8.1-0ubuntu2_amd64.deb && sudo dpkg -i efitools_1.8.1-0ubuntu2_amd64.deb && rm efitools_1.8.1-0ubuntu2_amd64.deb

env:
  global:
    - PATH=/tmp/qemu-install/bin:/tmp/uboot-test-hooks/bin:/sbin:/usr/bin:/bin:/usr/local/bin
    - PYTHONPATH=/tmp/uboot-test-hooks/py/travis-ci
    - BUILD_DIR=build
    - HOSTCC="cc"
    - HOSTCXX="c++"
    - QEMU_VERSION="v4.2.0"

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}" == *sh* ]]; then ./tools/buildman/buildman --fetch-arch sh2 ; fi
  - if [[ "${TOOLCHAIN}" == *i386* ]]; then
      ./tools/buildman/buildman --fetch-arch i386;
    fi
  - if [[ "${TOOLCHAIN}" == arc ]]; then
       wget https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/download/arc-2019.09-release/arc_gnu_2019.09_prebuilt_uclibc_le_archs_linux_install.tar.gz &&
       tar -C /tmp -xf arc_gnu_2019.09_prebuilt_uclibc_le_archs_linux_install.tar.gz;
    fi
  - if [[ "${TOOLCHAIN}" == "nds32" ]]; then
       wget https://github.com/vincentzwc/prebuilt-nds32-toolchain/releases/download/20180521/nds32le-linux-glibc-v3-upstream.tar.gz &&
       tar -C /tmp -xf nds32le-linux-glibc-v3-upstream.tar.gz &&
       echo -e "\n[toolchain-prefix]\nnds32 = /tmp/nds32le-linux-glibc-v3-upstream/bin/nds32le-linux-" >> ~/.buildman;
    fi
  - if [[ "${TOOLCHAIN}" == *xtensa* ]]; then
       wget https://github.com/foss-xtensa/toolchain/releases/download/2018.02/x86_64-2018.02-${TOOLCHAIN}.tar.gz &&
       tar -C /tmp -xf x86_64-2018.02-${TOOLCHAIN}.tar.gz &&
       echo -e "\n[toolchain-prefix]\nxtensa = /tmp/2018.02/${TOOLCHAIN}/bin/${TOOLCHAIN}-" >> ~/.buildman;
    fi
  # If TOOLCHAIN is unset, we're on some flavour of ARM.
  - if [[ "${TOOLCHAIN}" == "" ]]; then
       ./tools/buildman/buildman --fetch-arch arm &&
       ./tools/buildman/buildman --fetch-arch aarch64;
    fi
  - if [[ "${TOOLCHAIN}" == "powerpc" ]]; then ./tools/buildman/buildman --fetch-arch powerpc; fi
  - if [[ "${TOOLCHAIN}" == "riscv" ]]; then
       ./tools/buildman/buildman --fetch-arch riscv32 &&
       ./tools/buildman/buildman --fetch-arch riscv64;
    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 ${QEMU_VERSION} &&
       ./configure --prefix=/tmp/qemu-install --target-list=${QEMU_TARGET} &&
       make -j4 all install;
       popd;
    fi

  # Build GRUB UEFI targets
  - if [[ "${QEMU_TARGET}" == "arm-softmmu" ]]; then
       git clone git://git.savannah.gnu.org/grub.git /tmp/grub &&
       pushd /tmp/grub &&
       git checkout grub-2.04 &&
       ./bootstrap &&
       ./configure --target=arm --with-platform=efi
       CC=gcc
       TARGET_CC=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
       TARGET_OBJCOPY=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-objcopy
       TARGET_STRIP=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-strip
       TARGET_NM=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-nm
       TARGET_RANLIB=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/arm-linux-gnueabi-ranlib &&
       make -j4 &&
       ./grub-mkimage -O arm-efi -o ~/grub_arm.efi --prefix= -d
       grub-core cat chain configfile echo efinet ext2 fat halt help linux
       lsefisystab loadenv lvm minicmd normal part_msdos part_gpt reboot
       search search_fs_file search_fs_uuid search_label serial sleep test
       true &&
       popd;
    fi
  - if [[ "${QEMU_TARGET}" == "aarch64-softmmu" ]]; then
       git clone git://git.savannah.gnu.org/grub.git /tmp/grub &&
       pushd /tmp/grub &&
       git checkout grub-2.04 &&
       ./bootstrap &&
       ./configure --target=aarch64 --with-platform=efi
       CC=gcc
       TARGET_CC=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-gcc
       TARGET_OBJCOPY=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-objcopy
       TARGET_STRIP=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-strip
       TARGET_NM=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-nm
       TARGET_RANLIB=~/.buildman-toolchains/gcc-9.2.0-nolibc/aarch64-linux/bin/aarch64-linux-ranlib &&
       make -j4 &&
       ./grub-mkimage -O arm64-efi -o ~/grub_arm64.efi --prefix= -d
       grub-core cat chain configfile echo efinet ext2 fat halt help linux
       lsefisystab loadenv lvm minicmd normal part_msdos part_gpt reboot
       search search_fs_file search_fs_uuid search_label serial sleep test
       true &&
       popd;
    fi
  - if [[ "${QEMU_TARGET}" == "riscv32-softmmu" ]]; then
       git clone git://git.savannah.gnu.org/grub.git /tmp/grub &&
       pushd /tmp/grub &&
       git checkout grub-2.04 &&
       ./bootstrap &&
       ./configure --target=riscv32 --with-platform=efi
       CC=gcc
       TARGET_CC=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-gcc
       TARGET_OBJCOPY=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-objcopy
       TARGET_STRIP=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-strip
       TARGET_NM=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-nm
       TARGET_RANLIB=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv32-linux/bin/riscv32-linux-ranlib &&
       make -j4 &&
       ./grub-mkimage -O riscv32-efi -o ~/grub_riscv32.efi --prefix= -d
       grub-core cat chain configfile echo efinet ext2 fat halt help linux
       lsefisystab loadenv lvm minicmd normal part_msdos part_gpt reboot
       search search_fs_file search_fs_uuid search_label serial sleep test
       true &&
       popd;
    fi
  - if [[ "${QEMU_TARGET}" == "riscv64-softmmu" ]]; then
       git clone git://git.savannah.gnu.org/grub.git /tmp/grub &&
       pushd /tmp/grub &&
       git checkout grub-2.04 &&
       ./bootstrap &&
       ./configure --target=riscv64 --with-platform=efi
       CC=gcc
       TARGET_CC=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-gcc
       TARGET_OBJCOPY=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-objcopy
       TARGET_STRIP=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-strip
       TARGET_NM=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-nm
       TARGET_RANLIB=~/.buildman-toolchains/gcc-9.2.0-nolibc/riscv64-linux/bin/riscv64-linux-ranlib &&
       make -j4 &&
       ./grub-mkimage -O riscv64-efi -o ~/grub_riscv64.efi --prefix= -d
       grub-core cat chain configfile echo efinet ext2 fat halt help linux
       lsefisystab loadenv lvm minicmd normal part_msdos part_gpt reboot
       search search_fs_file search_fs_uuid search_label serial sleep test
       true &&
       popd;
    fi
  - if [[ "${TEST_PY_BD}" == "qemu-riscv32_spl" ]]; then
       wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv32-bin.tar.xz | tar -C /tmp -xJ;
       export OPENSBI=/tmp/opensbi-0.6-rv32-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
    fi
  - if [[ "${TEST_PY_BD}" == "qemu-riscv64_spl" ]]; then
       wget -O - https://github.com/riscv/opensbi/releases/download/v0.6/opensbi-0.6-rv64-bin.tar.xz | tar -C /tmp -xJ;
       export OPENSBI=/tmp/opensbi-0.6-rv64-bin/platform/qemu/virt/firmware/fw_dynamic.bin;
    fi

script:
 # Comments must be outside the command strings below, or the Travis parser
 # will get confused.
 #
 # If we've been asked to use clang only do one configuration.
 #
 # Build a selection of boards if TEST_PY_BD is empty
 - if [[ "${BUILDMAN}" != "" ]]; then
     ret=0
     tools/buildman/buildman -P -E -W ${BUILDMAN} ${OVERRIDE} || ret=$?;
     if [[ $ret -ne 0 ]]; then
       tools/buildman/buildman -seP ${BUILDMAN};
       exit $ret;
     fi;
   fi
 # Build just the one board needed for testing, if TEST_PY_BD is non-empty
 # Note: "${var:+"-k $var"}" expands to "" if $var is empty, "-k $var" if not
 - if [[ "${TEST_PY_BD}" != "" ]]; then
     export UBOOT_TRAVIS_BUILD_DIR=`cd .. && pwd`/${TEST_PY_BD};
     cp ~/grub_x86.efi $UBOOT_TRAVIS_BUILD_DIR/;
     cp ~/grub_x64.efi $UBOOT_TRAVIS_BUILD_DIR/;
     if [[ -e ~/grub_arm.efi ]]; then
       cp ~/grub_arm.efi $UBOOT_TRAVIS_BUILD_DIR/;
     fi;
     if [[ -e ~/grub_arm64.efi ]]; then
       cp ~/grub_arm64.efi $UBOOT_TRAVIS_BUILD_DIR/;
     fi;
     if [[ -e ~/grub_riscv32.efi ]]; then
       cp ~/grub_riscv32.efi $UBOOT_TRAVIS_BUILD_DIR/;
     fi;
     if [[ -e ~/grub_riscv64.efi ]]; then
       cp ~/grub_riscv64.efi $UBOOT_TRAVIS_BUILD_DIR/;
     fi;
     tools/buildman/buildman -o ${UBOOT_TRAVIS_BUILD_DIR} -w -E -W -e
       --board ${TEST_PY_BD} ${OVERRIDE} || exit;
     virtualenv -p /usr/bin/python3 /tmp/venv;
     . /tmp/venv/bin/activate;
     pip install -r test/py/requirements.txt;
     ./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" || exit;
     if [[ -n "${TEST_PY_TOOLS}" ]]; then
       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/patman/patman test &&
       ./tools/buildman/buildman -t &&
       ./tools/dtoc/dtoc -t &&
       make testconfig;
     fi;
   fi

matrix:
  include:
  # we need to build by vendor due to 50min time limit for builds
  # each env setting here is a dedicated build
    - name: "buildman arc"
      env:
        - BUILDMAN="arc"
          TOOLCHAIN="arc"
    - name: "buildman arm11 arm7 arm920t arm946es"
      env:
        - BUILDMAN="arm11 arm7 arm920t arm946es"
    - name: "buildman arm926ejs (non-NXP,siemens,at91,kirkwood,spear)"
      env:
        - JOB="arm926ejs"
          BUILDMAN="arm926ejs -x freescale,siemens,at91,kirkwood,spear,omap"
    - name: "buildman at91 (non arm v7)"
      env:
        - BUILDMAN="at91 -x armv7"
    - name: "buildman at91 (non arm926ejs)"
      env:
        - BUILDMAN="at91 -x arm926ejs"
    - name: "buildman boundary engicam toradex"
      env:
        - BUILDMAN="boundary engicam toradex"
    - name: "buildman ARM bcm"
      env:
        - BUILDMAN="bcm -x mips"
    - name: "buildman NXP ARM32 (catch-all)"
      env:
        - BUILDMAN="freescale -x powerpc,m68k,aarch64,ls101,ls102,ls104,ls108,ls20,lx216"
    - name: "buildman NXP LS101x"
      env:
        - BUILDMAN="freescale&ls101"
    - name: "buildman NXP LS102x"
      env:
        - BUILDMAN="freescale&ls102"
    - name: "buildman NXP LS104x"
      env:
        - BUILDMAN="freescale&ls104"
    - name: "buildman NXP LS108x"
      env:
        - BUILDMAN="freescale&ls108"
    - name: "buildman NXP LS20xx"
      env:
        - BUILDMAN="freescale&ls20"
    - name: "buildman NXP LX216x"
      env:
        - BUILDMAN="freescale&lx216"
    - name: "buildman i.MX6 tqc"
      env:
        - BUILDMAN="mx6&tqc"
    - name: "buildman i.MX6 (catch-all)"
      env:
        - BUILDMAN="mx6 -x boundary,engicam,freescale,technexion,toradex,tqc"
    - name: "buildman i.MX (non-i.MX6 catch-all)"
      env:
        - BUILDMAN="mx -x freescale,mx6,toradex,technexion"
    - name: "buildman keystone 2/3"
      env:
        - BUILDMAN="k2 k3"
    - name: "buildman samsung socfpga"
      env:
        - BUILDMAN="samsung socfpga"
    - name: "buildman spear"
      env:
        - BUILDMAN="spear"
    - name: "buildman sun4i"
      env:
        - BUILDMAN="sun4i"
    - name: "buildman sun5i"
      env:
        - BUILDMAN="sun5i"
    - name: "buildman sun6i"
      env:
        - BUILDMAN="sun6i"
    - name: "buildman sun7i"
      env:
        - BUILDMAN="sun7i"
    - name: "buildman 64bit sun8i"
      env:
        - BUILDMAN="sun8i&aarch64 -x orangepi"
    - name: "buildman 32bit sun8i"
      env:
        - BUILDMAN="sun8i&armv7 -x orangepi"
    - name: "buildman sun9i"
      env:
        - BUILDMAN="sun9i"
    - name: "buildman sun50i"
      env:
        - BUILDMAN="sun50i -x orangepi"
    - name: "buildman catch-all ARM"
      env:
        - BUILDMAN="arm -x arm11,arm7,arm9,aarch64,at91,bcm,freescale,kirkwood,mvebu,siemens,tegra,uniphier,mx,samsung,sunxi,am33xx,omap,rk,toradex,socfpga,k2,k3,zynq"
    - name: "buildman sandbox x86"
      env:
        - BUILDMAN="sandbox x86"
          TOOLCHAIN="i386"
    - name: "buildman technexion"
      env:
        - BUILDMAN="technexion"
    - name: "buildman kirkwood"
      env:
        - BUILDMAN="kirkwood"
    - name: "buildman mvebu"
      env:
        - BUILDMAN="mvebu"
    - name: "buildman m68k"
      env:
        - BUILDMAN="m68k"
          TOOLCHAIN="m68k"
    - name: "buildman microblaze"
      env:
        - BUILDMAN="microblaze"
          TOOLCHAIN="microblaze"
    - name: "buildman mips"
      env:
        - BUILDMAN="mips"
          TOOLCHAIN="mips"
    - name: "buildman non-Freescale PowerPC"
      env:
        - BUILDMAN="powerpc -x freescale"
          TOOLCHAIN="powerpc"
    - name: "buildman mpc85xx&freescale (excluding many)"
      env:
        - BUILDMAN="mpc85xx&freescale -x t208xrdb -x t4qds -x t102* -x p1_p2_rdb_pc -x p1010rdb -x corenet_ds -x b4860qds -x bsc91*"
          TOOLCHAIN="powerpc"
    - name: "buildman t208xrdb corenet_ds"
      env:
        - BUILDMAN="t208xrdb corenet_ds"
          TOOLCHAIN="powerpc"
    - name: "buildman Freescale PowerPC"
      env:
        - BUILDMAN="t4qds b4860qds mpc83xx&freescale mpc86xx&freescale"
          TOOLCHAIN="powerpc"
    - name: "buildman t102*"
      env:
        - BUILDMAN="t102*"
          TOOLCHAIN="powerpc"
    - name: "buildman p1_p2_rdb_pc"
      env:
        - BUILDMAN="p1_p2_rdb_pc"
          TOOLCHAIN="powerpc"
    - name: "buildman p1010rdb bsc91"
      env:
        - BUILDMAN="p1010rdb bsc91"
          TOOLCHAIN="powerpc"
    - name: "buildman siemens"
      env:
        - BUILDMAN="siemens"
    - name: "buildman tegra"
      env:
        - BUILDMAN="tegra -x toradex"
    - name: "buildman am33xx (no siemens)"
      env:
        - BUILDMAN="am33xx -x siemens"
    - name: "buildman omap"
      env:
        - BUILDMAN="omap"
    - name: "buildman orangepi"
      env:
        - BUILDMAN="orangepi"
    - name: "buildman uniphier"
      env:
        - BUILDMAN="uniphier"
    - name: "buildman catch-all AArch64"
      env:
        - BUILDMAN="aarch64 -x bcm,k3,tegra,ls1,ls2,lx216,mvebu,uniphier,sunxi,samsung,socfpga,rk,versal,zynq"
    - name: "buildman rockchip"
      env:
        - BUILDMAN="rk -x orangepi"
    - name: "buildman sh"
      env:
        - BUILDMAN="sh -x arm"
          TOOLCHAIN="sh"
    - name: "buildman Zynq* (ARMv7)"
      env:
        - BUILDMAN="zynq&armv7"
    - name: "buildman ZynqMP and Versal"
      env:
        - BUILDMAN="versal|zynqmp&aarch64"
    - name: "buildman xtensa"
      env:
        - BUILDMAN="xtensa"
          TOOLCHAIN="xtensa-dc233c-elf"
    - name: "buildman riscv"
      env:
        - BUILDMAN="riscv"
          TOOLCHAIN="riscv"
    - name: "buildman nds32"
      env:
        - BUILDMAN="nds32"
          TOOLCHAIN="nds32"

    # QA jobs for code analytics
    # static code analysis with cppcheck (we can add --enable=all later)
    - name: "cppcheck"
      script:
        - cppcheck -j$(nproc) --force --quiet --inline-suppr .
    # build HTML documentation
    - name: "htmldocs"
      script:
        - make htmldocs
    # search for TODO within source tree
    - name: "grep TODO"
      script:
        - grep -r TODO .
    # search for FIXME within source tree
    - name: "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
    - name: "sloccount"
      script:
        - sloccount .
    # ensure all configs have MAINTAINERS entries
    - name: "Check for configs without MAINTAINERS entry"
      script:
        - if [ `./tools/genboardscfg.py -f 2>&1 | wc -l` -ne 0 ]; then exit 1; fi
    # Ensure host tools build
    - name: "Build tools-only"
      script:
        - make tools-only_config tools-only -j$(nproc)
    # Ensure env tools build
    - name: "Build envtools"
      script:
        - make tools-only_config envtools -j$(nproc)

    - name: "Run tests for Nokia RX-51 (aka N900)"
      script:
        - export PATH=~/.buildman-toolchains/gcc-9.2.0-nolibc/arm-linux-gnueabi/bin/:$PATH
        - test/nokia_rx51_test.sh

    # test/py
    - name: "test/py sandbox"
      env:
        - TEST_PY_BD="sandbox"
          TOOLCHAIN="i386"
    - name: "test/py sandbox with clang"
      env:
        - TEST_PY_BD="sandbox"
          OVERRIDE="-O clang-10"
    - name: "test/py sandbox_spl"
      env:
        - TEST_PY_BD="sandbox_spl"
          TEST_PY_TEST_SPEC="test_ofplatdata or test_handoff"
          TOOLCHAIN="i386"
          TEST_PY_TOOLS="yes"
    - name: "test/py sandbox_flattree"
      env:
        - TEST_PY_BD="sandbox_flattree"
          TOOLCHAIN="i386"
    - name: "test/py evb-ast2500"
      env:
        - TEST_PY_BD="evb-ast2500"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
    - name: "test/py vexpress_ca15_tc2"
      env:
        - TEST_PY_BD="vexpress_ca15_tc2"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
    - name: "test/py vexpress_ca9x4"
      env:
        - TEST_PY_BD="vexpress_ca9x4"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
    - name: "test/py integratorcp_cm926ejs"
      env:
        - TEST_PY_BD="integratorcp_cm926ejs"
          TEST_PY_TEST_SPEC="not sleep"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="arm-softmmu"
    - name: "test/py qemu_arm"
      env:
        - TEST_PY_BD="qemu_arm"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="arm-softmmu"
    - name: "test/py qemu_arm64"
      env:
        - TEST_PY_BD="qemu_arm64"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="aarch64-softmmu"
    - name: "test/py qemu_mips"
      env:
        - TEST_PY_BD="qemu_mips"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mips-softmmu"
          TOOLCHAIN="mips"
    - name: "test/py qemu_mipsel"
      env:
        - TEST_PY_BD="qemu_mipsel"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mipsel-softmmu"
          TOOLCHAIN="mips"
    - name: "test/py qemu_mips64"
      env:
        - TEST_PY_BD="qemu_mips64"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mips64-softmmu"
          TOOLCHAIN="mips"
    - name: "test/py qemu_mips64el"
      env:
        - TEST_PY_BD="qemu_mips64el"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="mips64el-softmmu"
          TOOLCHAIN="mips"
    - name: "test/py qemu-malta"
      env:
        - TEST_PY_BD="malta"
          TEST_PY_TEST_SPEC="not sleep and not efi"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="mips-softmmu"
          TOOLCHAIN="mips"
    - name: "test/py qemu-maltael"
      env:
        - TEST_PY_BD="maltael"
          TEST_PY_TEST_SPEC="not sleep and not efi"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="mipsel-softmmu"
          TOOLCHAIN="mips"
    - name: "test/py qemu-malta64"
      env:
        - TEST_PY_BD="malta64"
          TEST_PY_TEST_SPEC="not sleep and not efi"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="mips64-softmmu"
          TOOLCHAIN="mips"
    - name: "test/py qemu-malta64el"
      env:
        - TEST_PY_BD="malta64el"
          TEST_PY_TEST_SPEC="not sleep and not efi"
          TEST_PY_ID="--id qemu"
          QEMU_TARGET="mips64el-softmmu"
          TOOLCHAIN="mips"
    - name: "test/py qemu-ppce500"
      env:
        - TEST_PY_BD="qemu-ppce500"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="ppc-softmmu"
          TOOLCHAIN="powerpc"
    - name: "test/py qemu-riscv32"
      env:
        - TEST_PY_BD="qemu-riscv32"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="riscv32-softmmu"
          TOOLCHAIN="riscv"
    - name: "test/py qemu-riscv64"
      env:
        - TEST_PY_BD="qemu-riscv64"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="riscv64-softmmu"
          TOOLCHAIN="riscv"
    - name: "test/py qemu-riscv32_spl"
      env:
        - TEST_PY_BD="qemu-riscv32_spl"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="riscv32-softmmu"
          TOOLCHAIN="riscv"
    - name: "test/py qemu-riscv64_spl"
      env:
        - TEST_PY_BD="qemu-riscv64_spl"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="riscv64-softmmu"
          TOOLCHAIN="riscv"
    - name: "test/py qemu-x86"
      env:
        - TEST_PY_BD="qemu-x86"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="i386-softmmu"
          TOOLCHAIN="i386"
          BUILD_ROM="yes"
    - name: "test/py qemu-x86_64"
      env:
        - TEST_PY_BD="qemu-x86_64"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="x86_64-softmmu"
          TOOLCHAIN="i386"
          BUILD_ROM="yes"
    - name: "test/py xilinx_zynq_virt"
      env:
        - TEST_PY_BD="xilinx_zynq_virt"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="arm-softmmu"
          TEST_PY_ID="--id qemu"
    - name: "test/py xilinx_versal_virt"
      env:
        - TEST_PY_BD="xilinx_versal_virt"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="aarch64-softmmu"
          TEST_PY_ID="--id qemu"
    - name: "test/py xtfpga"
      env:
        - TEST_PY_BD="xtfpga"
          TEST_PY_TEST_SPEC="not sleep"
          QEMU_TARGET="xtensa-softmmu"
          TEST_PY_ID="--id qemu"
          TOOLCHAIN="xtensa-dc233c-elf"

# TODO make it perfect ;-r
