.test-jobs-common:
  stage: test
  image: ${XEN_REGISTRY}/${CONTAINER}
  rules:
  - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY
    when: on_success

.arm64-test-needs: &arm64-test-needs
  - project: $ARTIFACTS_REPO
    job: $LINUX_JOB_ARM64
    ref: $ARTIFACTS_BRANCH
  - project: $ARTIFACTS_REPO
    job: alpine-3.24-arm64-rootfs
    ref: $ARTIFACTS_BRANCH

.arm32-test-needs: &arm32-test-needs
  -

.x86_64-test-needs: &x86_64-test-needs
  - project: $ARTIFACTS_REPO
    job: $LINUX_JOB_X86_64
    ref: $ARTIFACTS_BRANCH
  - project: $ARTIFACTS_REPO
    job: alpine-3.24-x86_64-rootfs
    ref: $ARTIFACTS_BRANCH
  - project: $ARTIFACTS_REPO
    job: microcode-x86
    ref: $ARTIFACTS_BRANCH

.qemu-arm64:
  extends: .test-jobs-common
  variables:
    CONTAINER: debian:13-arm64v8
    LOGFILE: qemu-smoke-arm64.log
  artifacts:
    paths:
      - smoke.serial
      - '*.log'
    when: always
  tags:
    - arm64

.qemu-arm32:
  extends: .test-jobs-common
  variables:
    CONTAINER: debian:13-arm64v8
    LOGFILE: qemu-smoke-arm32.log
  artifacts:
    paths:
      - smoke.serial
      - '*.log'
    when: always
  tags:
    - arm64

.qemu-x86_64:
  extends: .test-jobs-common
  variables:
    CONTAINER: debian:13-x86_64
    LOGFILE: qemu-smoke-x86_64.log
  artifacts:
    paths:
      - smoke.serial
      - '*.log'
    when: always
  tags:
    - x86_64

.qemu-smoke-x86_64:
  extends: .qemu-x86_64
  variables:
    TEST_TIMEOUT_OVERRIDE: 120

.qemu-riscv64:
  extends: .test-jobs-common
  variables:
    CONTAINER: debian:13-riscv64
    LOGFILE: qemu-smoke-riscv64.log
  artifacts:
    paths:
      - smoke.serial
      - '*.log'
    when: always
  tags:
    - x86_64

.qemu-ppc64le:
  extends: .test-jobs-common
  variables:
    CONTAINER: debian:13-ppc64le
    LOGFILE: qemu-smoke-ppc64le.log
  artifacts:
    paths:
      - smoke.serial
      - '*.log'
    when: always
  tags:
    - x86_64

.xilinx-arm64:
  extends: .test-jobs-common
  variables:
    CONTAINER: ubuntu:xilinx-hw-runner
    LOGFILE: qemu-smoke-xilinx.log
    TEST_TIMEOUT_OVERRIDE: 120
  artifacts:
    paths:
      - smoke.serial
      - '*.log'
      - '*.dtb'
    when: always
  rules:
    - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY && $XILINX_JOBS == "true"
          && $CI_COMMIT_REF_PROTECTED == "true"
      when: on_success
  tags:
    - xilinx-zynq-423

.xilinx-x86_64:
  extends: .test-jobs-common
  variables:
    CONTAINER: ubuntu:xilinx-hw-runner
    LOGFILE: xilinx-smoke-x86_64.log
    XEN_CMD_CONSOLE: "console=com2 com2=57600,8n1,0x2F8,4"
    TEST_BOARD: "crater"
    TEST_TIMEOUT_OVERRIDE: 1000
  artifacts:
    paths:
      - smoke.serial
      - '*.log'
    when: always
  rules:
    - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY && $XILINX_JOBS == "true"
          && $CI_COMMIT_REF_PROTECTED == "true"
      when: on_success
  tags:
    - xilinx-crater-001

.adl-x86_64:
  extends: .test-jobs-common
  variables:
    # the test controller runs on RPi4
    CONTAINER: alpine:qubes-hw-runner
    LOGFILE: smoke-test.log
    PCIDEV: "03:00.0"
    PCIDEV_INTR: "MSI-X"
    CONSOLE_OPTS: "console=com1 com1=115200,8n1"
    SUT_ADDR: test-2.testnet
  artifacts:
    paths:
      - smoke.serial
      - '*.log'
      - tests-junit.xml
    when: always
  rules:
    - if: $CI_JOB_NAME =~ $SELECTED_JOBS_ONLY && $QUBES_JOBS == "true"
          && $CI_COMMIT_REF_PROTECTED == "true"
      when: on_success
  tags:
    - qubes-hw2

.kbl-x86_64:
  # it's really similar to the ADL one
  extends: .adl-x86_64
  variables:
    PCIDEV: "00:1f.6"
    PCIDEV_INTR: "MSI"
    CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,0"
    SUT_ADDR: test-3.testnet
  tags:
    - qubes-hw3

.zen2-x86_64:
  # it's really similar to the above
  extends: .adl-x86_64
  variables:
    PCIDEV: "01:00.0"
    PCIDEV_INTR: "MSI-X"
    CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,msi,04:00.0"
    SUT_ADDR: test-1.testnet
  tags:
    - qubes-hw1

.zen3p-x86_64:
  # it's really similar to the above
  extends: .adl-x86_64
  variables:
    PCIDEV: "01:00.0"
    PCIDEV_INTR: "MSI-X"
    CONSOLE_OPTS: "console=com1 com1=115200,8n1,pci,msi"
    SUT_ADDR: test-11.testnet
  tags:
    - qubes-hw11

# Test jobs
build-each-commit-gcc:
  extends: .test-jobs-common
  variables:
    CONTAINER: debian:12-x86_64
    XEN_TARGET_ARCH: x86_64
    CC: gcc
  script:
    - BASE=${BASE_SHA:-${CI_COMMIT_BEFORE_SHA}} TIP=${TIP_SHA:-${CI_COMMIT_SHA}} ./automation/gitlab-ci/build-each-commit.sh 2>&1 | tee build-each-commit-gcc.log
  artifacts:
    paths:
      - '*.log'
    when: always
  needs: []
  tags:
    - x86_64

xilinx-smoke-dom0less-arm64-gcc-debug:
  extends: .xilinx-arm64
  script:
    - ./automation/scripts/xilinx-smoke-dom0less-arm64.sh 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug

xilinx-smoke-dom0less-arm64-gcc-debug-gem-passthrough:
  extends: .xilinx-arm64
  script:
    - ./automation/scripts/xilinx-smoke-dom0less-arm64.sh gem-passthrough 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug

xilinx-smoke-dom0-x86_64-gcc-debug:
  extends: .xilinx-x86_64
  script:
    - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh ping 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

xilinx-smoke-dom0-x86_64-gcc-debug-argo:
  extends: .xilinx-x86_64
  script:
    - ./automation/scripts/xilinx-smoke-dom0-x86_64.sh argo 2>&1 | tee ${LOGFILE}
  needs:
    - alpine-3.24-x86_64-gcc-debug
    - project: xen-project/hardware/test-artifacts
      job: linux-6.6.56-x86_64
      ref: master
    - project: xen-project/hardware/test-artifacts
      job: alpine-3.24-x86_64-rootfs
      ref: master
    - project: xen-project/hardware/test-artifacts
      job: microcode-x86
      ref: master

adl-smoke-x86_64-gcc-debug:
  extends: .adl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pv 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

adl-smoke-x86_64-dom0pvh-gcc-debug:
  extends: .adl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pvh 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

adl-smoke-x86_64-dom0pvh-hvm-gcc-debug:
  extends: .adl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pvh-hvm 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

adl-suspend-x86_64-gcc-debug:
  extends: .adl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh s3 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

adl-pci-pv-x86_64-gcc-debug:
  extends: .adl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh pci-pv 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

adl-pci-hvm-x86_64-gcc-debug:
  extends: .adl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh pci-hvm 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

adl-pvshim-x86_64-gcc-debug:
  extends: .adl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh pvshim 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

adl-tools-tests-pv-x86_64-gcc-debug:
  extends: .adl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh tools-tests-pv 2>&1 | tee ${LOGFILE}
  artifacts:
    reports:
      junit: tests-junit.xml
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

adl-tools-tests-pvh-x86_64-gcc-debug:
  extends: .adl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh tools-tests-pvh 2>&1 | tee ${LOGFILE}
  artifacts:
    reports:
      junit: tests-junit.xml
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

kbl-smoke-x86_64-gcc-debug:
  extends: .kbl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pv 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

kbl-smoke-x86_64-dom0pvh-gcc-debug:
  extends: .kbl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pvh 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

kbl-smoke-x86_64-dom0pvh-hvm-gcc-debug:
  extends: .kbl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pvh-hvm 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

kbl-suspend-x86_64-gcc-debug:
  extends: .kbl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh s3 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

kbl-pci-pv-x86_64-gcc-debug:
  extends: .kbl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh pci-pv 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

kbl-pci-hvm-x86_64-gcc-debug:
  extends: .kbl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh pci-hvm 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

kbl-pvshim-x86_64-gcc-debug:
  extends: .kbl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh pvshim 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

kbl-tools-tests-pv-x86_64-gcc-debug:
  extends: .kbl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh tools-tests-pv 2>&1 | tee ${LOGFILE}
  artifacts:
    reports:
      junit: tests-junit.xml
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

kbl-tools-tests-pvh-x86_64-gcc-debug:
  extends: .kbl-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh tools-tests-pvh 2>&1 | tee ${LOGFILE}
  artifacts:
    reports:
      junit: tests-junit.xml
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

zen2-smoke-x86_64-gcc-debug:
  extends: .zen2-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pv 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

zen2-suspend-x86_64-gcc-debug:
  extends: .zen2-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh s3 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

zen3p-smoke-x86_64-gcc-debug:
  extends: .zen3p-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pv 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

zen3p-smoke-x86_64-dom0pvh-gcc-debug:
  extends: .zen3p-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pvh 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

zen3p-smoke-x86_64-dom0pvh-hvm-gcc-debug:
  extends: .zen3p-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh dom0pvh-hvm 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

zen3p-pci-hvm-x86_64-gcc-debug:
  extends: .zen3p-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh pci-hvm 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

zen3p-pvshim-x86_64-gcc-debug:
  extends: .zen3p-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh pvshim 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

zen3p-tools-tests-pv-x86_64-gcc-debug:
  extends: .zen3p-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh tools-tests-pv 2>&1 | tee ${LOGFILE}
  artifacts:
    reports:
      junit: tests-junit.xml
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

zen3p-tools-tests-pvh-x86_64-gcc-debug:
  extends: .zen3p-x86_64
  script:
    - ./automation/scripts/qubes-x86_64.sh tools-tests-pvh 2>&1 | tee ${LOGFILE}
  artifacts:
    reports:
      junit: tests-junit.xml
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc-debug

qemu-smoke-dom0-arm64-gcc:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-smoke-dom0-arm64.sh 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc

qemu-smoke-dom0-arm64-gcc-debug:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-smoke-dom0-arm64.sh 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug

qemu-smoke-dom0less-arm64-gcc:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc

qemu-smoke-dom0less-arm64-gcc-debug:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug

qemu-smoke-dom0less-arm64-gcc-debug-gicv3:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh gicv3 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug

qemu-smoke-dom0less-arm64-gcc-debug-staticmem:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-mem 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug-staticmem

qemu-smoke-dom0less-arm64-gcc-debug-staticheap:
 extends: .qemu-arm64
 script:
   - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-heap 2>&1 | tee ${LOGFILE}
 needs:
   - *arm64-test-needs
   - alpine-3.24-arm64-gcc-debug

qemu-smoke-dom0less-arm64-gcc-debug-static-shared-mem:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh static-shared-mem 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug-static-shared-mem

qemu-smoke-dom0less-arm64-gcc-debug-boot-cpupools:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh boot-cpupools 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug-boot-cpupools

qemu-smoke-dom0less-arm64-gcc-debug-earlyprintk:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm64.sh earlyprintk 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug-earlyprintk

qemu-xtf-dom0less-arm64-gcc-hyp-xen-version:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-xtf.sh arm64 mmu64le hyp-xen-version 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc

qemu-xtf-dom0less-arm64-gcc-debug-hyp-xen-version:
  extends: .qemu-arm64
  script:
    - ./automation/scripts/qemu-xtf.sh arm64 mmu64le hyp-xen-version 2>&1 | tee ${LOGFILE}
  needs:
    - *arm64-test-needs
    - alpine-3.24-arm64-gcc-debug

qemu-smoke-dom0-arm32-gcc:
  extends: .qemu-arm32
  script:
    - ./automation/scripts/qemu-smoke-dom0-arm32.sh 2>&1 | tee ${LOGFILE}
  needs:
    - *arm32-test-needs
    - yocto-qemuarm

qemu-smoke-dom0less-arm32-gcc:
  extends: .qemu-arm32
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee ${LOGFILE}
  needs:
    - *arm32-test-needs
    - debian-12-arm32-gcc

qemu-smoke-dom0less-arm32-gcc-debug:
  extends: .qemu-arm32
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh 2>&1 | tee ${LOGFILE}
  needs:
    - *arm32-test-needs
    - debian-12-arm32-gcc-debug

qemu-smoke-dom0less-arm32-gcc-debug-staticmem:
  extends: .qemu-arm32
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh static-mem 2>&1 | tee ${LOGFILE}
  needs:
    - *arm32-test-needs
    - debian-12-arm32-gcc-debug-staticmem

qemu-smoke-dom0less-arm32-gcc-debug-gzip:
  extends: .qemu-arm32
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh gzip 2>&1 | tee ${LOGFILE}
  needs:
    - *arm32-test-needs
    - debian-12-arm32-gcc-debug

qemu-smoke-dom0less-arm32-gcc-without-dom0:
  extends: .qemu-arm32
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh without-dom0 2>&1 | tee ${LOGFILE}
  needs:
    - *arm32-test-needs
    - debian-12-arm32-gcc

qemu-smoke-dom0less-arm32-gcc-debug-without-dom0:
  extends: .qemu-arm32
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh without-dom0 2>&1 | tee ${LOGFILE}
  needs:
    - *arm32-test-needs
    - debian-12-arm32-gcc-debug

qemu-smoke-dom0less-arm32-gcc-debug-earlyprintk:
  extends: .qemu-arm32
  script:
    - ./automation/scripts/qemu-smoke-dom0less-arm32.sh earlyprintk 2>&1 | tee ${LOGFILE}
  needs:
    - *arm32-test-needs
    - debian-12-arm32-gcc-debug-earlyprintk

qemu-alpine-x86_64-gcc:
  extends: .qemu-x86_64
  script:
    - ./automation/scripts/qemu-alpine-x86_64.sh 2>&1 | tee ${LOGFILE}
  needs:
    - *x86_64-test-needs
    - alpine-3.24-x86_64-gcc

qemu-smoke-x86_64-gcc:
  extends: .qemu-smoke-x86_64
  script:
    - ./automation/scripts/qemu-xtf.sh x86_64 pv64 example 2>&1 | tee ${LOGFILE}
  needs:
    - debian-13-x86_64-gcc-debug

qemu-smoke-x86_64-clang:
  extends: .qemu-smoke-x86_64
  script:
    - ./automation/scripts/qemu-xtf.sh x86_64 pv64 example 2>&1 | tee ${LOGFILE}
  needs:
    - debian-13-x86_64-clang-debug

qemu-smoke-x86_64-gcc-pvh:
  extends: .qemu-smoke-x86_64
  script:
    - ./automation/scripts/qemu-xtf.sh x86_64 hvm64 example 2>&1 | tee ${LOGFILE}
  needs:
    - debian-13-x86_64-gcc-debug

qemu-smoke-x86_64-clang-pvh:
  extends: .qemu-smoke-x86_64
  script:
    - ./automation/scripts/qemu-xtf.sh x86_64 hvm64 example 2>&1 | tee ${LOGFILE}
  needs:
    - debian-13-x86_64-clang-debug

qemu-smoke-x86_64-gcc-efi:
  extends: .qemu-smoke-x86_64
  script:
    - ./automation/scripts/qemu-xtf.sh x86_64-efi pv64 example 2>&1 | tee ${LOGFILE}
  needs:
    - debian-13-x86_64-gcc-debug

qemu-xtf-argo-x86_64-gcc-debug:
  extends: .qemu-smoke-x86_64
  variables:
    TEST_TIMEOUT_OVERRIDE: 60
  script:
    - ./automation/scripts/qemu-xtf.sh x86_64 pv64 argo 2>&1 | tee ${LOGFILE}
  needs:
    - alpine-3.24-x86_64-gcc-debug

qemu-smoke-riscv64-gcc:
  extends: .qemu-riscv64
  script:
    - ./automation/scripts/qemu-smoke-riscv64.sh 2>&1 | tee ${LOGFILE}
  needs:
    - debian-13-riscv64-gcc-debug

qemu-smoke-ppc64le-powernv9-gcc:
  extends: .qemu-ppc64le
  script:
    - ./automation/scripts/qemu-smoke-ppc64le.sh powernv9 2>&1 | tee ${LOGFILE}
  needs:
    - debian-13-ppc64le-gcc-debug
