# 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

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 --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)

    # 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-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
