# Currently we have two build stages after our containers are built:
#  - build (for traditional build and test or first stage build)
#  - test (for test stages, using build artefacts from a build stage)
stages:
  - containers
  - containers-layer2
  - build
  - test

# We assume GitLab has it's own caching set up for RPM/APT repositories so we
# just take care of avocado assets here.
cache:
  paths:
    - $HOME/avocado/data/cache

include:
  - local: '/.gitlab-ci.d/edk2.yml'
  - local: '/.gitlab-ci.d/opensbi.yml'
  - local: '/.gitlab-ci.d/containers.yml'
  - local: '/.gitlab-ci.d/crossbuilds.yml'

.native_build_job_template: &native_build_job_definition
  stage: build
  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
  before_script:
    - JOBS=$(expr $(nproc) + 1)
    - sed -i s,git.qemu.org/git,gitlab.com/qemu-project, .gitmodules
  script:
    - mkdir build
    - cd build
    - if test -n "$TARGETS";
      then
        ../configure --enable-werror $CONFIGURE_ARGS --target-list="$TARGETS" ;
      else
        ../configure --enable-werror $CONFIGURE_ARGS ;
      fi || { cat config.log meson-logs/meson-log.txt && exit 1; }
    - make -j"$JOBS"
    - if test -n "$MAKE_CHECK_ARGS";
      then
        make -j"$JOBS" $MAKE_CHECK_ARGS ;
      fi

.native_test_job_template: &native_test_job_definition
  stage: test
  image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
  script:
    - cd build
    - find . -type f -exec touch {} +
    - make $MAKE_CHECK_ARGS

.acceptance_template: &acceptance_definition
  cache:
    key: "${CI_JOB_NAME}-cache"
    paths:
      - ${CI_PROJECT_DIR}/avocado-cache
    policy: pull-push
  artifacts:
    paths:
      - build/tests/results/latest/results.xml
    reports:
      junit: build/tests/results/latest/results.xml
  before_script:
    - mkdir -p ~/.config/avocado
    - echo "[datadir.paths]" > ~/.config/avocado/avocado.conf
    - echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']"
           >> ~/.config/avocado/avocado.conf
    - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then
        du -chs ${CI_PROJECT_DIR}/avocado-cache ;
      fi
    - export AVOCADO_ALLOW_UNTRUSTED_CODE=1
  after_script:
    - cd build
    - python3 -c 'import json; r = json.load(open("tests/results/latest/results.json")); [print(t["logfile"]) for t in r["tests"] if t["status"] not in ("PASS", "SKIP", "CANCEL")]' | xargs cat
    - du -chs ${CI_PROJECT_DIR}/avocado-cache

build-system-ubuntu:
  <<: *native_build_job_definition
  variables:
    IMAGE: ubuntu2004
    TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu
      moxie-softmmu microblazeel-softmmu mips64el-softmmu
    MAKE_CHECK_ARGS: check-build
  artifacts:
    expire_in: 2 days
    paths:
      - build

check-system-ubuntu:
  <<: *native_test_job_definition
  needs:
    - job: build-system-ubuntu
      artifacts: true
  variables:
    IMAGE: ubuntu2004
    MAKE_CHECK_ARGS: check

acceptance-system-ubuntu:
  <<: *native_test_job_definition
  needs:
    - job: build-system-ubuntu
      artifacts: true
  variables:
    IMAGE: ubuntu2004
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition

build-system-debian:
  <<: *native_build_job_definition
  variables:
    IMAGE: debian-amd64
    TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu
      riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu
    MAKE_CHECK_ARGS: check-build
  artifacts:
    expire_in: 2 days
    paths:
      - build

check-system-debian:
  <<: *native_test_job_definition
  needs:
    - job: build-system-debian
      artifacts: true
  variables:
    IMAGE: debian-amd64
    MAKE_CHECK_ARGS: check

acceptance-system-debian:
  <<: *native_test_job_definition
  needs:
    - job: build-system-debian
      artifacts: true
  variables:
    IMAGE: debian-amd64
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition

build-system-fedora:
  <<: *native_build_job_definition
  variables:
    IMAGE: fedora
    CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
    TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu
      xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu
    MAKE_CHECK_ARGS: check-build
  artifacts:
    expire_in: 2 days
    paths:
      - build

check-system-fedora:
  <<: *native_test_job_definition
  needs:
    - job: build-system-fedora
      artifacts: true
  variables:
    IMAGE: fedora
    MAKE_CHECK_ARGS: check

acceptance-system-fedora:
  <<: *native_test_job_definition
  needs:
    - job: build-system-fedora
      artifacts: true
  variables:
    IMAGE: fedora
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition

build-system-centos:
  <<: *native_build_job_definition
  variables:
    IMAGE: centos8
    CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
    TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu
      x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
    MAKE_CHECK_ARGS: check-build
  artifacts:
    expire_in: 2 days
    paths:
      - build

check-system-centos:
  <<: *native_test_job_definition
  needs:
    - job: build-system-centos
      artifacts: true
  variables:
    IMAGE: centos8
    MAKE_CHECK_ARGS: check

acceptance-system-centos:
  <<: *native_test_job_definition
  needs:
    - job: build-system-centos
      artifacts: true
  variables:
    IMAGE: centos8
    MAKE_CHECK_ARGS: check-acceptance
  <<: *acceptance_definition

build-disabled:
  <<: *native_build_job_definition
  variables:
    IMAGE: fedora
    CONFIGURE_ARGS: --disable-attr --disable-avx2 --disable-bochs
      --disable-brlapi --disable-bzip2 --disable-cap-ng --disable-capstone
      --disable-cloop --disable-coroutine-pool --disable-curl --disable-curses
      --disable-dmg --disable-docs --disable-glusterfs --disable-gnutls
      --disable-gtk --disable-guest-agent --disable-iconv --disable-kvm
      --disable-libiscsi --disable-libpmem --disable-libssh --disable-libusb
      --disable-libxml2 --disable-linux-aio --disable-live-block-migration
      --disable-lzo --disable-malloc-trim --disable-mpath --disable-nettle
      --disable-numa --disable-parallels --disable-pie --disable-qcow1
      --disable-qed --disable-qom-cast-debug --disable-rbd --disable-rdma
      --disable-replication --disable-sdl --disable-seccomp --disable-sheepdog
      --disable-slirp --disable-smartcard --disable-snappy --disable-spice
      --disable-strip --disable-tpm --disable-usb-redir --disable-vdi
      --disable-vhost-crypto --disable-vhost-net --disable-vhost-scsi
      --disable-vhost-user --disable-vhost-vdpa --disable-vhost-vsock
      --disable-virglrenderer --disable-vnc --disable-vte --disable-vvfat
      --disable-xen --disable-zstd
    TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu
      s390x-softmmu i386-linux-user
    MAKE_CHECK_ARGS: check-qtest SPEED=slow

build-tcg-disabled:
  <<: *native_build_job_definition
  variables:
    IMAGE: centos8
  script:
    - mkdir build
    - cd build
    - ../configure --disable-tcg --audio-drv-list="" || { cat config.log meson-logs/meson-log.txt && exit 1; }
    - make -j"$JOBS"
    - make check-unit
    - make check-qapi-schema
    - cd tests/qemu-iotests/
    - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048
            052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163
            170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277
    - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122
            124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202
            208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258
            260 261 262 263 264 270 272 273 277 279

build-user:
  <<: *native_build_job_definition
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --disable-tools --disable-system
    MAKE_CHECK_ARGS: check-tcg

# Run check-tcg against linux-user (with plugins)
# we skip sparc64-linux-user until it has been fixed somewhat
# we skip cris-linux-user as it doesn't use the common run loop
build-user-plugins:
  <<: *native_build_job_definition
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user
    MAKE_CHECK_ARGS: check-tcg
  timeout: 1h 30m

build-clang:
  <<: *native_build_job_definition
  variables:
    IMAGE: fedora
    CONFIGURE_ARGS: --cc=clang --cxx=clang++
    TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu
      ppc-softmmu s390x-softmmu arm-linux-user
    MAKE_CHECK_ARGS: check

# These targets are on the way out
build-deprecated:
  <<: *native_build_job_definition
  variables:
    IMAGE: debian-all-test-cross
    CONFIGURE_ARGS: --disable-docs --disable-tools
    MAKE_CHECK_ARGS: build-tcg
    TARGETS: ppc64abi32-linux-user tilegx-linux-user lm32-softmmu
      unicore32-softmmu
  artifacts:
    expire_in: 2 days
    paths:
      - build

# We split the check-tcg step as test failures are expected but we still
# want to catch the build breaking.
check-deprecated:
  <<: *native_test_job_definition
  needs:
    - job: build-deprecated
      artifacts: true
  variables:
    IMAGE: debian-all-test-cross
    MAKE_CHECK_ARGS: check-tcg
  allow_failure: true

build-oss-fuzz:
  <<: *native_build_job_definition
  variables:
    IMAGE: fedora
  script:
    - mkdir build-oss-fuzz
    - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address"
      ./scripts/oss-fuzz/build.sh
    - export ASAN_OPTIONS="fast_unwind_on_malloc=0"
    - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f
                      | grep -v slirp); do
        grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ;
        echo Testing ${fuzzer} ... ;
        "${fuzzer}" -runs=1 -seed=1 || exit 1 ;
      done
    # Unrelated to fuzzer: run some tests with -fsanitize=address
    - cd build-oss-fuzz && make check-qtest-i386 check-unit

build-tci:
  <<: *native_build_job_definition
  variables:
    IMAGE: fedora
  script:
    - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64"
    - mkdir build
    - cd build
    - ../configure --enable-tcg-interpreter
        --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; }
    - make -j"$JOBS"
    - make run-tcg-tests-x86_64-softmmu
    - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test
    - for tg in $TARGETS ; do
        export QTEST_QEMU_BINARY="./qemu-system-${tg}" ;
        ./tests/qtest/boot-serial-test || exit 1 ;
        ./tests/qtest/cdrom-test || exit 1 ;
      done
    - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test
    - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow

# Most jobs test latest gcrypt or nettle builds
#
# These jobs test old gcrypt and nettle from RHEL7
# which had some API differences.
build-crypto-old-nettle:
  <<: *native_build_job_definition
  variables:
    IMAGE: centos7
    TARGETS: x86_64-softmmu x86_64-linux-user
    CONFIGURE_ARGS: --disable-gcrypt --enable-nettle
    MAKE_CHECK_ARGS: check-build
  artifacts:
    paths:
      - build

check-crypto-old-nettle:
  <<: *native_test_job_definition
  needs:
    - job: build-crypto-old-nettle
      artifacts: true
  variables:
    IMAGE: centos7
    MAKE_CHECK_ARGS: check


build-crypto-old-gcrypt:
  <<: *native_build_job_definition
  variables:
    IMAGE: centos7
    TARGETS: x86_64-softmmu x86_64-linux-user
    CONFIGURE_ARGS: --disable-nettle --enable-gcrypt
    MAKE_CHECK_ARGS: check-build
  artifacts:
    paths:
      - build

check-crypto-old-gcrypt:
  <<: *native_test_job_definition
  needs:
    - job: build-crypto-old-gcrypt
      artifacts: true
  variables:
    IMAGE: centos7
    MAKE_CHECK_ARGS: check


build-crypto-only-gnutls:
  <<: *native_build_job_definition
  variables:
    IMAGE: centos7
    TARGETS: x86_64-softmmu x86_64-linux-user
    CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls
    MAKE_CHECK_ARGS: check-build
  artifacts:
    paths:
      - build

check-crypto-only-gnutls:
  <<: *native_test_job_definition
  needs:
    - job: build-crypto-only-gnutls
      artifacts: true
  variables:
    IMAGE: centos7
    MAKE_CHECK_ARGS: check


check-patch:
  stage: build
  image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
  script: .gitlab-ci.d/check-patch.py
  except:
    variables:
      - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
  variables:
    GIT_DEPTH: 1000
  allow_failure: true

check-dco:
  stage: build
  image: $CI_REGISTRY_IMAGE/qemu/centos8:latest
  script: .gitlab-ci.d/check-dco.py
  except:
    variables:
      - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master'
  variables:
    GIT_DEPTH: 1000
