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