1# Currently we have two build stages after our containers are built: 2# - build (for traditional build and test or first stage build) 3# - test (for test stages, using build artefacts from a build stage) 4stages: 5 - containers 6 - containers-layer2 7 - build 8 - test 9 10include: 11 - local: '/.gitlab-ci.d/edk2.yml' 12 - local: '/.gitlab-ci.d/opensbi.yml' 13 - local: '/.gitlab-ci.d/containers.yml' 14 - local: '/.gitlab-ci.d/crossbuilds.yml' 15 - local: '/.gitlab-ci.d/static_checks.yml' 16 17.native_build_job_template: 18 stage: build 19 image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest 20 before_script: 21 - JOBS=$(expr $(nproc) + 1) 22 script: 23 - if test -n "$LD_JOBS"; 24 then 25 scripts/git-submodule.sh update meson ; 26 fi 27 - mkdir build 28 - cd build 29 - if test -n "$TARGETS"; 30 then 31 ../configure --enable-werror --disable-docs ${LD_JOBS:+--meson=git} $CONFIGURE_ARGS --target-list="$TARGETS" ; 32 else 33 ../configure --enable-werror --disable-docs ${LD_JOBS:+--meson=git} $CONFIGURE_ARGS ; 34 fi || { cat config.log meson-logs/meson-log.txt && exit 1; } 35 - if test -n "$LD_JOBS"; 36 then 37 ../meson/meson.py configure . -Dbackend_max_links="$LD_JOBS" ; 38 fi || exit 1; 39 - make -j"$JOBS" 40 - if test -n "$MAKE_CHECK_ARGS"; 41 then 42 make -j"$JOBS" $MAKE_CHECK_ARGS ; 43 fi 44 45.native_test_job_template: 46 stage: test 47 image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest 48 script: 49 - scripts/git-submodule.sh update 50 $(sed -n '/GIT_SUBMODULES=/ s/.*=// p' build/config-host.mak) 51 - cd build 52 - find . -type f -exec touch {} + 53 # Avoid recompiling by hiding ninja with NINJA=":" 54 - make NINJA=":" $MAKE_CHECK_ARGS 55 56.acceptance_test_job_template: 57 extends: .native_test_job_template 58 cache: 59 key: "${CI_JOB_NAME}-cache" 60 paths: 61 - ${CI_PROJECT_DIR}/avocado-cache 62 policy: pull-push 63 artifacts: 64 name: "$CI_JOB_NAME-$CI_COMMIT_REF_SLUG" 65 when: always 66 expire_in: 2 days 67 paths: 68 - build/tests/results/latest/results.xml 69 - build/tests/results/latest/test-results 70 reports: 71 junit: build/tests/results/latest/results.xml 72 before_script: 73 - mkdir -p ~/.config/avocado 74 - echo "[datadir.paths]" > ~/.config/avocado/avocado.conf 75 - echo "cache_dirs = ['${CI_PROJECT_DIR}/avocado-cache']" 76 >> ~/.config/avocado/avocado.conf 77 - echo -e '[job.output.testlogs]\nstatuses = ["FAIL", "INTERRUPT"]' 78 >> ~/.config/avocado/avocado.conf 79 - if [ -d ${CI_PROJECT_DIR}/avocado-cache ]; then 80 du -chs ${CI_PROJECT_DIR}/avocado-cache ; 81 fi 82 - export AVOCADO_ALLOW_UNTRUSTED_CODE=1 83 after_script: 84 - cd build 85 - du -chs ${CI_PROJECT_DIR}/avocado-cache 86 87build-system-alpine: 88 extends: .native_build_job_template 89 needs: 90 - job: amd64-alpine-container 91 variables: 92 IMAGE: alpine 93 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu 94 microblazeel-softmmu mips64el-softmmu 95 MAKE_CHECK_ARGS: check-build 96 CONFIGURE_ARGS: --enable-docs --enable-trace-backends=log,simple,syslog 97 artifacts: 98 expire_in: 2 days 99 paths: 100 - .git-submodule-status 101 - build 102 103check-system-alpine: 104 extends: .native_test_job_template 105 needs: 106 - job: build-system-alpine 107 artifacts: true 108 variables: 109 IMAGE: alpine 110 MAKE_CHECK_ARGS: check 111 112acceptance-system-alpine: 113 extends: .acceptance_test_job_template 114 needs: 115 - job: build-system-alpine 116 artifacts: true 117 variables: 118 IMAGE: alpine 119 MAKE_CHECK_ARGS: check-acceptance 120 121build-system-ubuntu: 122 extends: .native_build_job_template 123 needs: 124 job: amd64-ubuntu2004-container 125 variables: 126 IMAGE: ubuntu2004 127 CONFIGURE_ARGS: --enable-docs --enable-fdt=system --enable-slirp=system 128 TARGETS: aarch64-softmmu alpha-softmmu cris-softmmu hppa-softmmu 129 microblazeel-softmmu mips64el-softmmu 130 MAKE_CHECK_ARGS: check-build 131 artifacts: 132 expire_in: 2 days 133 paths: 134 - build 135 136check-system-ubuntu: 137 extends: .native_test_job_template 138 needs: 139 - job: build-system-ubuntu 140 artifacts: true 141 variables: 142 IMAGE: ubuntu2004 143 MAKE_CHECK_ARGS: check 144 145acceptance-system-ubuntu: 146 extends: .acceptance_test_job_template 147 needs: 148 - job: build-system-ubuntu 149 artifacts: true 150 variables: 151 IMAGE: ubuntu2004 152 MAKE_CHECK_ARGS: check-acceptance 153 154build-system-debian: 155 extends: .native_build_job_template 156 needs: 157 job: amd64-debian-container 158 variables: 159 IMAGE: debian-amd64 160 CONFIGURE_ARGS: --enable-fdt=system 161 TARGETS: arm-softmmu avr-softmmu i386-softmmu mipsel-softmmu 162 riscv64-softmmu sh4eb-softmmu sparc-softmmu xtensaeb-softmmu 163 MAKE_CHECK_ARGS: check-build 164 artifacts: 165 expire_in: 2 days 166 paths: 167 - build 168 169check-system-debian: 170 extends: .native_test_job_template 171 needs: 172 - job: build-system-debian 173 artifacts: true 174 variables: 175 IMAGE: debian-amd64 176 MAKE_CHECK_ARGS: check 177 178acceptance-system-debian: 179 extends: .acceptance_test_job_template 180 needs: 181 - job: build-system-debian 182 artifacts: true 183 variables: 184 IMAGE: debian-amd64 185 MAKE_CHECK_ARGS: check-acceptance 186 187build-system-fedora: 188 extends: .native_build_job_template 189 needs: 190 job: amd64-fedora-container 191 variables: 192 IMAGE: fedora 193 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle --enable-docs 194 --enable-fdt=system --enable-slirp=system --enable-capstone=system 195 TARGETS: tricore-softmmu microblaze-softmmu mips-softmmu 196 xtensa-softmmu m68k-softmmu riscv32-softmmu ppc-softmmu sparc64-softmmu 197 MAKE_CHECK_ARGS: check-build 198 artifacts: 199 expire_in: 2 days 200 paths: 201 - build 202 203check-system-fedora: 204 extends: .native_test_job_template 205 needs: 206 - job: build-system-fedora 207 artifacts: true 208 variables: 209 IMAGE: fedora 210 MAKE_CHECK_ARGS: check 211 212acceptance-system-fedora: 213 extends: .acceptance_test_job_template 214 needs: 215 - job: build-system-fedora 216 artifacts: true 217 variables: 218 IMAGE: fedora 219 MAKE_CHECK_ARGS: check-acceptance 220 221build-system-centos: 222 extends: .native_build_job_template 223 needs: 224 job: amd64-centos8-container 225 variables: 226 IMAGE: centos8 227 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt --enable-fdt=system 228 --enable-modules --enable-trace-backends=dtrace 229 TARGETS: ppc64-softmmu or1k-softmmu s390x-softmmu 230 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu 231 MAKE_CHECK_ARGS: check-build 232 artifacts: 233 expire_in: 2 days 234 paths: 235 - build 236 237check-system-centos: 238 extends: .native_test_job_template 239 needs: 240 - job: build-system-centos 241 artifacts: true 242 variables: 243 IMAGE: centos8 244 MAKE_CHECK_ARGS: check 245 246acceptance-system-centos: 247 extends: .acceptance_test_job_template 248 needs: 249 - job: build-system-centos 250 artifacts: true 251 variables: 252 IMAGE: centos8 253 MAKE_CHECK_ARGS: check-acceptance 254 255build-system-opensuse: 256 extends: .native_build_job_template 257 needs: 258 job: amd64-opensuse-leap-container 259 variables: 260 IMAGE: opensuse-leap 261 CONFIGURE_ARGS: --enable-fdt=system 262 TARGETS: s390x-softmmu x86_64-softmmu aarch64-softmmu 263 MAKE_CHECK_ARGS: check-build 264 artifacts: 265 expire_in: 2 days 266 paths: 267 - build 268 269check-system-opensuse: 270 extends: .native_test_job_template 271 needs: 272 - job: build-system-opensuse 273 artifacts: true 274 variables: 275 IMAGE: opensuse-leap 276 MAKE_CHECK_ARGS: check 277 278acceptance-system-opensuse: 279 extends: .acceptance_test_job_template 280 needs: 281 - job: build-system-opensuse 282 artifacts: true 283 variables: 284 IMAGE: opensuse-leap 285 MAKE_CHECK_ARGS: check-acceptance 286 287 288build-disabled: 289 extends: .native_build_job_template 290 needs: 291 job: amd64-fedora-container 292 variables: 293 IMAGE: fedora 294 CONFIGURE_ARGS: 295 --disable-attr 296 --disable-auth-pam 297 --disable-avx2 298 --disable-bochs 299 --disable-brlapi 300 --disable-bzip2 301 --disable-cap-ng 302 --disable-capstone 303 --disable-cloop 304 --disable-coroutine-pool 305 --disable-curl 306 --disable-curses 307 --disable-dmg 308 --disable-docs 309 --disable-gcrypt 310 --disable-glusterfs 311 --disable-gnutls 312 --disable-gtk 313 --disable-guest-agent 314 --disable-iconv 315 --disable-keyring 316 --disable-kvm 317 --disable-libiscsi 318 --disable-libpmem 319 --disable-libssh 320 --disable-libudev 321 --disable-libusb 322 --disable-libxml2 323 --disable-linux-aio 324 --disable-live-block-migration 325 --disable-lzo 326 --disable-malloc-trim 327 --disable-mpath 328 --disable-nettle 329 --disable-numa 330 --disable-opengl 331 --disable-parallels 332 --disable-pie 333 --disable-qcow1 334 --disable-qed 335 --disable-qom-cast-debug 336 --disable-rbd 337 --disable-rdma 338 --disable-replication 339 --disable-sdl 340 --disable-seccomp 341 --disable-slirp 342 --disable-smartcard 343 --disable-snappy 344 --disable-sparse 345 --disable-spice 346 --disable-strip 347 --disable-tpm 348 --disable-usb-redir 349 --disable-vdi 350 --disable-vhost-crypto 351 --disable-vhost-net 352 --disable-vhost-scsi 353 --disable-vhost-kernel 354 --disable-vhost-user 355 --disable-vhost-vdpa 356 --disable-vhost-vsock 357 --disable-virglrenderer 358 --disable-vnc 359 --disable-vte 360 --disable-vvfat 361 --disable-xen 362 --disable-zstd 363 TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu 364 s390x-softmmu i386-linux-user 365 MAKE_CHECK_ARGS: check-qtest SPEED=slow 366 367# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by 368# the configure script. The container doesn't contain Xen headers so 369# Xen accelerator is not detected / selected. As result it build the 370# i386-softmmu and x86_64-softmmu with KVM being the single accelerator 371# available. 372# Also use a different coroutine implementation (which is only really of 373# interest to KVM users, i.e. with TCG disabled) 374build-tcg-disabled: 375 extends: .native_build_job_template 376 needs: 377 job: amd64-centos8-container 378 variables: 379 IMAGE: centos8 380 script: 381 - mkdir build 382 - cd build 383 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext 384 || { cat config.log meson-logs/meson-log.txt && exit 1; } 385 - make -j"$JOBS" 386 - make check-unit 387 - make check-qapi-schema 388 - cd tests/qemu-iotests/ 389 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048 390 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163 391 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277 392 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122 393 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202 394 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258 395 260 261 262 263 264 270 272 273 277 279 396 397build-user: 398 extends: .native_build_job_template 399 needs: 400 job: amd64-debian-user-cross-container 401 variables: 402 IMAGE: debian-all-test-cross 403 CONFIGURE_ARGS: --disable-tools --disable-system 404 MAKE_CHECK_ARGS: check-tcg 405 406build-user-static: 407 extends: .native_build_job_template 408 needs: 409 job: amd64-debian-user-cross-container 410 variables: 411 IMAGE: debian-all-test-cross 412 CONFIGURE_ARGS: --disable-tools --disable-system --static 413 MAKE_CHECK_ARGS: check-tcg 414 415# Because the hexagon cross-compiler takes so long to build we don't rely 416# on the CI system to build it and hence this job has an optional dependency 417# declared. The image is manually uploaded. 418build-user-hexagon: 419 extends: .native_build_job_template 420 needs: 421 job: hexagon-cross-container 422 optional: true 423 variables: 424 IMAGE: debian-hexagon-cross 425 TARGETS: hexagon-linux-user 426 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg 427 MAKE_CHECK_ARGS: check-tcg 428 429# Only build the softmmu targets we have check-tcg tests for 430build-some-softmmu: 431 extends: .native_build_job_template 432 needs: 433 job: amd64-debian-user-cross-container 434 variables: 435 IMAGE: debian-all-test-cross 436 CONFIGURE_ARGS: --disable-tools --enable-debug 437 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu 438 MAKE_CHECK_ARGS: check-tcg 439 440# Run check-tcg against linux-user (with plugins) 441# we skip sparc64-linux-user until it has been fixed somewhat 442# we skip cris-linux-user as it doesn't use the common run loop 443build-user-plugins: 444 extends: .native_build_job_template 445 needs: 446 job: amd64-debian-user-cross-container 447 variables: 448 IMAGE: debian-all-test-cross 449 CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user 450 MAKE_CHECK_ARGS: check-tcg 451 timeout: 1h 30m 452 453build-user-centos7: 454 extends: .native_build_job_template 455 needs: 456 job: amd64-centos7-container 457 variables: 458 IMAGE: centos7 459 CONFIGURE_ARGS: --disable-system --disable-tools --disable-docs 460 MAKE_CHECK_ARGS: check-tcg 461 462build-some-softmmu-plugins: 463 extends: .native_build_job_template 464 needs: 465 job: amd64-debian-user-cross-container 466 variables: 467 IMAGE: debian-all-test-cross 468 CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg 469 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu 470 MAKE_CHECK_ARGS: check-tcg 471 472clang-system: 473 extends: .native_build_job_template 474 needs: 475 job: amd64-fedora-container 476 variables: 477 IMAGE: fedora 478 CONFIGURE_ARGS: --cc=clang --cxx=clang++ 479 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined 480 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu 481 ppc-softmmu s390x-softmmu 482 MAKE_CHECK_ARGS: check-qtest check-tcg 483 484clang-user: 485 extends: .native_build_job_template 486 needs: 487 job: amd64-debian-user-cross-container 488 variables: 489 IMAGE: debian-all-test-cross 490 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system 491 --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user 492 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined 493 MAKE_CHECK_ARGS: check-unit check-tcg 494 495# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory. 496# On gitlab runners, default value sometimes end up calling 2 lds concurrently and 497# triggers an Out-Of-Memory error 498# 499# Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together 500# with QEMU and linked as a static library to avoid false positives in CFI checks. 501# This can be accomplished by using -enable-slirp=git, which avoids the use of 502# a system-wide version of the library 503# 504# Split in three sets of build/check/acceptance to limit the execution time of each 505# job 506build-cfi-aarch64: 507 extends: .native_build_job_template 508 needs: 509 - job: amd64-fedora-container 510 variables: 511 LD_JOBS: 1 512 AR: llvm-ar 513 IMAGE: fedora 514 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 515 --enable-safe-stack --enable-slirp=git 516 TARGETS: aarch64-softmmu 517 MAKE_CHECK_ARGS: check-build 518 timeout: 70m 519 artifacts: 520 expire_in: 2 days 521 paths: 522 - build 523 524check-cfi-aarch64: 525 extends: .native_test_job_template 526 needs: 527 - job: build-cfi-aarch64 528 artifacts: true 529 variables: 530 IMAGE: fedora 531 MAKE_CHECK_ARGS: check 532 533acceptance-cfi-aarch64: 534 extends: .acceptance_test_job_template 535 needs: 536 - job: build-cfi-aarch64 537 artifacts: true 538 variables: 539 IMAGE: fedora 540 MAKE_CHECK_ARGS: check-acceptance 541 542build-cfi-ppc64-s390x: 543 extends: .native_build_job_template 544 needs: 545 - job: amd64-fedora-container 546 variables: 547 LD_JOBS: 1 548 AR: llvm-ar 549 IMAGE: fedora 550 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 551 --enable-safe-stack --enable-slirp=git 552 TARGETS: ppc64-softmmu s390x-softmmu 553 MAKE_CHECK_ARGS: check-build 554 timeout: 70m 555 artifacts: 556 expire_in: 2 days 557 paths: 558 - build 559 560check-cfi-ppc64-s390x: 561 extends: .native_test_job_template 562 needs: 563 - job: build-cfi-ppc64-s390x 564 artifacts: true 565 variables: 566 IMAGE: fedora 567 MAKE_CHECK_ARGS: check 568 569acceptance-cfi-ppc64-s390x: 570 extends: .acceptance_test_job_template 571 needs: 572 - job: build-cfi-ppc64-s390x 573 artifacts: true 574 variables: 575 IMAGE: fedora 576 MAKE_CHECK_ARGS: check-acceptance 577 578build-cfi-x86_64: 579 extends: .native_build_job_template 580 needs: 581 - job: amd64-fedora-container 582 variables: 583 LD_JOBS: 1 584 AR: llvm-ar 585 IMAGE: fedora 586 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 587 --enable-safe-stack --enable-slirp=git 588 TARGETS: x86_64-softmmu 589 MAKE_CHECK_ARGS: check-build 590 timeout: 70m 591 artifacts: 592 expire_in: 2 days 593 paths: 594 - build 595 596check-cfi-x86_64: 597 extends: .native_test_job_template 598 needs: 599 - job: build-cfi-x86_64 600 artifacts: true 601 variables: 602 IMAGE: fedora 603 MAKE_CHECK_ARGS: check 604 605acceptance-cfi-x86_64: 606 extends: .acceptance_test_job_template 607 needs: 608 - job: build-cfi-x86_64 609 artifacts: true 610 variables: 611 IMAGE: fedora 612 MAKE_CHECK_ARGS: check-acceptance 613 614tsan-build: 615 extends: .native_build_job_template 616 needs: 617 job: amd64-ubuntu2004-container 618 variables: 619 IMAGE: ubuntu2004 620 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10 621 --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system 622 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user 623 MAKE_CHECK_ARGS: bench V=1 624 625# These targets are on the way out 626build-deprecated: 627 extends: .native_build_job_template 628 needs: 629 job: amd64-debian-user-cross-container 630 variables: 631 IMAGE: debian-all-test-cross 632 CONFIGURE_ARGS: --disable-tools 633 MAKE_CHECK_ARGS: build-tcg 634 TARGETS: ppc64abi32-linux-user 635 artifacts: 636 expire_in: 2 days 637 paths: 638 - build 639 640# We split the check-tcg step as test failures are expected but we still 641# want to catch the build breaking. 642check-deprecated: 643 extends: .native_test_job_template 644 needs: 645 - job: build-deprecated 646 artifacts: true 647 variables: 648 IMAGE: debian-all-test-cross 649 MAKE_CHECK_ARGS: check-tcg 650 allow_failure: true 651 652# gprof/gcov are GCC features 653gprof-gcov: 654 extends: .native_build_job_template 655 needs: 656 job: amd64-ubuntu2004-container 657 variables: 658 IMAGE: ubuntu2004 659 CONFIGURE_ARGS: --enable-gprof --enable-gcov 660 MAKE_CHECK_ARGS: check 661 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu 662 timeout: 70m 663 after_script: 664 - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh 665 666build-oss-fuzz: 667 extends: .native_build_job_template 668 needs: 669 job: amd64-fedora-container 670 variables: 671 IMAGE: fedora 672 script: 673 - mkdir build-oss-fuzz 674 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address" 675 ./scripts/oss-fuzz/build.sh 676 - export ASAN_OPTIONS="fast_unwind_on_malloc=0" 677 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f 678 | grep -v slirp); do 679 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ; 680 echo Testing ${fuzzer} ... ; 681 "${fuzzer}" -runs=1 -seed=1 || exit 1 ; 682 done 683 # Unrelated to fuzzer: run some tests with -fsanitize=address 684 - cd build-oss-fuzz && make check-qtest-i386 check-unit 685 686build-tci: 687 extends: .native_build_job_template 688 needs: 689 job: amd64-debian-user-cross-container 690 variables: 691 IMAGE: debian-all-test-cross 692 script: 693 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64" 694 - mkdir build 695 - cd build 696 - ../configure --enable-tcg-interpreter 697 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; } 698 - make -j"$JOBS" 699 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test 700 - for tg in $TARGETS ; do 701 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ; 702 ./tests/qtest/boot-serial-test || exit 1 ; 703 ./tests/qtest/cdrom-test || exit 1 ; 704 done 705 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test 706 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow 707 - make check-tcg 708 709# Alternate coroutines implementations are only really of interest to KVM users 710# However we can't test against KVM on Gitlab-CI so we can only run unit tests 711build-coroutine-sigaltstack: 712 extends: .native_build_job_template 713 needs: 714 job: amd64-ubuntu2004-container 715 variables: 716 IMAGE: ubuntu2004 717 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg 718 --enable-trace-backends=ftrace 719 MAKE_CHECK_ARGS: check-unit 720 721# Most jobs test latest gcrypt or nettle builds 722# 723# These jobs test old gcrypt and nettle from RHEL7 724# which had some API differences. 725crypto-old-nettle: 726 extends: .native_build_job_template 727 needs: 728 job: amd64-centos7-container 729 variables: 730 IMAGE: centos7 731 TARGETS: x86_64-softmmu x86_64-linux-user 732 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle 733 MAKE_CHECK_ARGS: check 734 735crypto-old-gcrypt: 736 extends: .native_build_job_template 737 needs: 738 job: amd64-centos7-container 739 variables: 740 IMAGE: centos7 741 TARGETS: x86_64-softmmu x86_64-linux-user 742 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt 743 MAKE_CHECK_ARGS: check 744 745crypto-only-gnutls: 746 extends: .native_build_job_template 747 needs: 748 job: amd64-centos7-container 749 variables: 750 IMAGE: centos7 751 TARGETS: x86_64-softmmu x86_64-linux-user 752 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls 753 MAKE_CHECK_ARGS: check 754 755 756# Check our reduced build configurations 757build-without-default-devices: 758 extends: .native_build_job_template 759 needs: 760 job: amd64-centos8-container 761 variables: 762 IMAGE: centos8 763 CONFIGURE_ARGS: --without-default-devices --disable-user 764 765build-without-default-features: 766 extends: .native_build_job_template 767 needs: 768 job: amd64-debian-container 769 variables: 770 IMAGE: debian-amd64 771 CONFIGURE_ARGS: --without-default-features --disable-user 772 --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu 773 MAKE_CHECK_ARGS: check-unit 774 775build-libvhost-user: 776 stage: build 777 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest 778 needs: 779 job: amd64-fedora-container 780 before_script: 781 - dnf install -y meson ninja-build 782 script: 783 - mkdir subprojects/libvhost-user/build 784 - cd subprojects/libvhost-user/build 785 - meson 786 - ninja 787 788# No targets are built here, just tools, docs, and unit tests. This 789# also feeds into the eventual documentation deployment steps later 790build-tools-and-docs-debian: 791 extends: .native_build_job_template 792 needs: 793 job: amd64-debian-container 794 variables: 795 IMAGE: debian-amd64 796 MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope 797 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools 798 artifacts: 799 expire_in: 2 days 800 paths: 801 - build 802 803# Prepare for GitLab pages deployment. Anything copied into the 804# "public" directory will be deployed to $USER.gitlab.io/$PROJECT 805pages: 806 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest 807 stage: test 808 needs: 809 - job: build-tools-and-docs-debian 810 script: 811 - mkdir -p public 812 # HTML-ised source tree 813 - make gtags 814 - htags -anT --tree-view=filetree -m qemu_init 815 -t "Welcome to the QEMU sourcecode" 816 - mv HTML public/src 817 # Project documentation 818 - make -C build install DESTDIR=$(pwd)/temp-install 819 - mv temp-install/usr/local/share/doc/qemu/* public/ 820 artifacts: 821 paths: 822 - public 823