# The CI jobs defined here require GitLab runners installed and
# registered on machines that match their operating system names,
# versions and architectures.  This is in contrast to the other CI
# jobs that are intended to run on GitLab's "shared" runners.

# Different than the default approach on "shared" runners, based on
# containers, the custom runners have no such *requirement*, as those
# jobs should be capable of running on operating systems with no
# compatible container implementation, or no support from
# gitlab-runner.  To avoid problems that gitlab-runner can cause while
# reusing the GIT repository, let's enable the clone strategy, which
# guarantees a fresh repository on each job run.
variables:
  GIT_STRATEGY: clone

# All ubuntu-18.04 jobs should run successfully in an environment
# setup by the scripts/ci/setup/build-environment.yml task
# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
ubuntu-18.04-s390x-all-linux-static:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_18.04
 - s390x
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
 - if: "$S390X_RUNNER_AVAILABLE"
 script:
 # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
 # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
 - mkdir build
 - cd build
 - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1
 - make --output-sync -j`nproc` check-tcg V=1

ubuntu-18.04-s390x-all:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_18.04
 - s390x
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
 - if: "$S390X_RUNNER_AVAILABLE"
 script:
 - mkdir build
 - cd build
 - ../configure --disable-libssh
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1

ubuntu-18.04-s390x-alldbg:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_18.04
 - s390x
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
 - if: "$S390X_RUNNER_AVAILABLE"
 script:
 - mkdir build
 - cd build
 - ../configure --enable-debug --disable-libssh
 - make clean
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1

ubuntu-18.04-s390x-clang:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_18.04
 - s390x
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
   when: manual
 - if: "$S390X_RUNNER_AVAILABLE"
   when: manual
 script:
 - mkdir build
 - cd build
 - ../configure --disable-libssh --cc=clang --cxx=clang++ --enable-sanitizers
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1

ubuntu-18.04-s390x-tci:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_18.04
 - s390x
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
 - if: "$S390X_RUNNER_AVAILABLE"
 script:
 - mkdir build
 - cd build
 - ../configure --disable-libssh --enable-tcg-interpreter
 - make --output-sync -j`nproc`

ubuntu-18.04-s390x-notcg:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_18.04
 - s390x
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
   when: manual
 - if: "$S390X_RUNNER_AVAILABLE"
   when: manual
 script:
 - mkdir build
 - cd build
 - ../configure --disable-libssh --disable-tcg
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1

# All ubuntu-20.04 jobs should run successfully in an environment
# setup by the scripts/ci/setup/qemu/build-environment.yml task
# "Install basic packages to build QEMU on Ubuntu 18.04/20.04"
ubuntu-20.04-aarch64-all-linux-static:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_20.04
 - aarch64
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
 - if: "$S390X_RUNNER_AVAILABLE"
 script:
 # --disable-libssh is needed because of https://bugs.launchpad.net/qemu/+bug/1838763
 # --disable-glusterfs is needed because there's no static version of those libs in distro supplied packages
 - mkdir build
 - cd build
 - ../configure --enable-debug --static --disable-system --disable-glusterfs --disable-libssh
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1
 - make --output-sync -j`nproc` check-tcg V=1

ubuntu-20.04-aarch64-all:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_20.04
 - aarch64
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
 - if: "$S390X_RUNNER_AVAILABLE"
 script:
 - mkdir build
 - cd build
 - ../configure --disable-libssh
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1

ubuntu-20.04-aarch64-alldbg:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_20.04
 - aarch64
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
 - if: "$S390X_RUNNER_AVAILABLE"
 script:
 - mkdir build
 - cd build
 - ../configure --enable-debug --disable-libssh
 - make clean
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1

ubuntu-20.04-aarch64-clang:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_20.04
 - aarch64
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
   when: manual
 - if: "$S390X_RUNNER_AVAILABLE"
   when: manual
 script:
 - mkdir build
 - cd build
 - ../configure --disable-libssh --cc=clang-10 --cxx=clang++-10 --enable-sanitizers
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1

ubuntu-20.04-aarch64-tci:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_20.04
 - aarch64
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
 - if: "$S390X_RUNNER_AVAILABLE"
 script:
 - mkdir build
 - cd build
 - ../configure --disable-libssh --enable-tcg-interpreter
 - make --output-sync -j`nproc`

ubuntu-20.04-aarch64-notcg:
 allow_failure: true
 needs: []
 stage: build
 tags:
 - ubuntu_20.04
 - aarch64
 rules:
 - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
   when: manual
 - if: "$S390X_RUNNER_AVAILABLE"
   when: manual
 script:
 - mkdir build
 - cd build
 - ../configure --disable-libssh --disable-tcg
 - make --output-sync -j`nproc`
 - make --output-sync -j`nproc` check V=1
