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 moxie-softmmu 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 moxie-softmmu 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-sheepdog 346 --disable-slirp 347 --disable-smartcard 348 --disable-snappy 349 --disable-sparse 350 --disable-spice 351 --disable-strip 352 --disable-tpm 353 --disable-usb-redir 354 --disable-vdi 355 --disable-vhost-crypto 356 --disable-vhost-net 357 --disable-vhost-scsi 358 --disable-vhost-kernel 359 --disable-vhost-user 360 --disable-vhost-vdpa 361 --disable-vhost-vsock 362 --disable-virglrenderer 363 --disable-vnc 364 --disable-vte 365 --disable-vvfat 366 --disable-xen 367 --disable-zstd 368 TARGETS: arm-softmmu i386-softmmu ppc64-softmmu mips64-softmmu 369 s390x-softmmu i386-linux-user 370 MAKE_CHECK_ARGS: check-qtest SPEED=slow 371 372# This jobs explicitly disable TCG (--disable-tcg), KVM is detected by 373# the configure script. The container doesn't contain Xen headers so 374# Xen accelerator is not detected / selected. As result it build the 375# i386-softmmu and x86_64-softmmu with KVM being the single accelerator 376# available. 377# Also use a different coroutine implementation (which is only really of 378# interest to KVM users, i.e. with TCG disabled) 379build-tcg-disabled: 380 <<: *native_build_job_definition 381 needs: 382 job: amd64-centos8-container 383 variables: 384 IMAGE: centos8 385 script: 386 - mkdir build 387 - cd build 388 - ../configure --disable-tcg --audio-drv-list="" --with-coroutine=ucontext 389 || { cat config.log meson-logs/meson-log.txt && exit 1; } 390 - make -j"$JOBS" 391 - make check-unit 392 - make check-qapi-schema 393 - cd tests/qemu-iotests/ 394 - ./check -raw 001 002 003 004 005 008 009 010 011 012 021 025 032 033 048 395 052 063 077 086 101 104 106 113 148 150 151 152 157 159 160 163 396 170 171 183 184 192 194 197 208 215 221 222 226 227 236 253 277 397 - ./check -qcow2 028 051 056 057 058 065 068 082 085 091 095 096 102 122 398 124 132 139 142 144 145 151 152 155 157 165 194 196 197 200 202 399 208 209 215 216 218 222 227 234 246 247 248 250 254 255 257 258 400 260 261 262 263 264 270 272 273 277 279 401 402build-user: 403 <<: *native_build_job_definition 404 needs: 405 job: amd64-debian-user-cross-container 406 variables: 407 IMAGE: debian-all-test-cross 408 CONFIGURE_ARGS: --disable-tools --disable-system 409 MAKE_CHECK_ARGS: check-tcg 410 411build-user-static: 412 <<: *native_build_job_definition 413 needs: 414 job: amd64-debian-user-cross-container 415 variables: 416 IMAGE: debian-all-test-cross 417 CONFIGURE_ARGS: --disable-tools --disable-system --static 418 MAKE_CHECK_ARGS: check-tcg 419 420# Only build the softmmu targets we have check-tcg tests for 421build-some-softmmu: 422 <<: *native_build_job_definition 423 needs: 424 job: amd64-debian-user-cross-container 425 variables: 426 IMAGE: debian-all-test-cross 427 CONFIGURE_ARGS: --disable-tools --enable-debug 428 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu 429 MAKE_CHECK_ARGS: check-tcg 430 431# Run check-tcg against linux-user (with plugins) 432# we skip sparc64-linux-user until it has been fixed somewhat 433# we skip cris-linux-user as it doesn't use the common run loop 434build-user-plugins: 435 <<: *native_build_job_definition 436 needs: 437 job: amd64-debian-user-cross-container 438 variables: 439 IMAGE: debian-all-test-cross 440 CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user 441 MAKE_CHECK_ARGS: check-tcg 442 timeout: 1h 30m 443 444build-user-centos7: 445 <<: *native_build_job_definition 446 needs: 447 job: amd64-centos7-container 448 variables: 449 IMAGE: centos7 450 CONFIGURE_ARGS: --disable-system --disable-tools --disable-docs 451 MAKE_CHECK_ARGS: check-tcg 452 453build-some-softmmu-plugins: 454 <<: *native_build_job_definition 455 needs: 456 job: amd64-debian-user-cross-container 457 variables: 458 IMAGE: debian-all-test-cross 459 CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg 460 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu 461 MAKE_CHECK_ARGS: check-tcg 462 463clang-system: 464 <<: *native_build_job_definition 465 needs: 466 job: amd64-fedora-container 467 variables: 468 IMAGE: fedora 469 CONFIGURE_ARGS: --cc=clang --cxx=clang++ 470 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined 471 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu 472 ppc-softmmu s390x-softmmu 473 MAKE_CHECK_ARGS: check-qtest check-tcg 474 475clang-user: 476 <<: *native_build_job_definition 477 needs: 478 job: amd64-debian-user-cross-container 479 variables: 480 IMAGE: debian-all-test-cross 481 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system 482 --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user 483 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined 484 MAKE_CHECK_ARGS: check-unit check-tcg 485 486# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory. 487# On gitlab runners, default value sometimes end up calling 2 lds concurrently and 488# triggers an Out-Of-Memory error 489# 490# Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together 491# with QEMU and linked as a static library to avoid false positives in CFI checks. 492# This can be accomplished by using -enable-slirp=git, which avoids the use of 493# a system-wide version of the library 494# 495# Split in three sets of build/check/acceptance to limit the execution time of each 496# job 497build-cfi-aarch64: 498 <<: *native_build_job_definition 499 needs: 500 - job: amd64-fedora-container 501 variables: 502 LD_JOBS: 1 503 AR: llvm-ar 504 IMAGE: fedora 505 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 506 --enable-safe-stack --enable-slirp=git 507 TARGETS: aarch64-softmmu 508 MAKE_CHECK_ARGS: check-build 509 timeout: 70m 510 artifacts: 511 expire_in: 2 days 512 paths: 513 - build 514 515check-cfi-aarch64: 516 <<: *native_test_job_definition 517 needs: 518 - job: build-cfi-aarch64 519 artifacts: true 520 variables: 521 IMAGE: fedora 522 MAKE_CHECK_ARGS: check 523 524acceptance-cfi-aarch64: 525 <<: *native_test_job_definition 526 needs: 527 - job: build-cfi-aarch64 528 artifacts: true 529 variables: 530 IMAGE: fedora 531 MAKE_CHECK_ARGS: check-acceptance 532 <<: *acceptance_definition 533 534build-cfi-ppc64-s390x: 535 <<: *native_build_job_definition 536 needs: 537 - job: amd64-fedora-container 538 variables: 539 LD_JOBS: 1 540 AR: llvm-ar 541 IMAGE: fedora 542 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 543 --enable-safe-stack --enable-slirp=git 544 TARGETS: ppc64-softmmu s390x-softmmu 545 MAKE_CHECK_ARGS: check-build 546 timeout: 70m 547 artifacts: 548 expire_in: 2 days 549 paths: 550 - build 551 552check-cfi-ppc64-s390x: 553 <<: *native_test_job_definition 554 needs: 555 - job: build-cfi-ppc64-s390x 556 artifacts: true 557 variables: 558 IMAGE: fedora 559 MAKE_CHECK_ARGS: check 560 561acceptance-cfi-ppc64-s390x: 562 <<: *native_test_job_definition 563 needs: 564 - job: build-cfi-ppc64-s390x 565 artifacts: true 566 variables: 567 IMAGE: fedora 568 MAKE_CHECK_ARGS: check-acceptance 569 <<: *acceptance_definition 570 571build-cfi-x86_64: 572 <<: *native_build_job_definition 573 needs: 574 - job: amd64-fedora-container 575 variables: 576 LD_JOBS: 1 577 AR: llvm-ar 578 IMAGE: fedora 579 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 580 --enable-safe-stack --enable-slirp=git 581 TARGETS: x86_64-softmmu 582 MAKE_CHECK_ARGS: check-build 583 timeout: 70m 584 artifacts: 585 expire_in: 2 days 586 paths: 587 - build 588 589check-cfi-x86_64: 590 <<: *native_test_job_definition 591 needs: 592 - job: build-cfi-x86_64 593 artifacts: true 594 variables: 595 IMAGE: fedora 596 MAKE_CHECK_ARGS: check 597 598acceptance-cfi-x86_64: 599 <<: *native_test_job_definition 600 needs: 601 - job: build-cfi-x86_64 602 artifacts: true 603 variables: 604 IMAGE: fedora 605 MAKE_CHECK_ARGS: check-acceptance 606 <<: *acceptance_definition 607 608tsan-build: 609 <<: *native_build_job_definition 610 needs: 611 job: amd64-ubuntu2004-container 612 variables: 613 IMAGE: ubuntu2004 614 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10 615 --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system 616 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user 617 MAKE_CHECK_ARGS: bench V=1 618 619# These targets are on the way out 620build-deprecated: 621 <<: *native_build_job_definition 622 needs: 623 job: amd64-debian-user-cross-container 624 variables: 625 IMAGE: debian-all-test-cross 626 CONFIGURE_ARGS: --disable-tools 627 MAKE_CHECK_ARGS: build-tcg 628 TARGETS: ppc64abi32-linux-user lm32-softmmu unicore32-softmmu 629 artifacts: 630 expire_in: 2 days 631 paths: 632 - build 633 634# We split the check-tcg step as test failures are expected but we still 635# want to catch the build breaking. 636check-deprecated: 637 <<: *native_test_job_definition 638 needs: 639 - job: build-deprecated 640 artifacts: true 641 variables: 642 IMAGE: debian-all-test-cross 643 MAKE_CHECK_ARGS: check-tcg 644 allow_failure: true 645 646# gprof/gcov are GCC features 647gprof-gcov: 648 <<: *native_build_job_definition 649 needs: 650 job: amd64-ubuntu2004-container 651 variables: 652 IMAGE: ubuntu2004 653 CONFIGURE_ARGS: --enable-gprof --enable-gcov 654 MAKE_CHECK_ARGS: check 655 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu 656 timeout: 70m 657 after_script: 658 - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh 659 660build-oss-fuzz: 661 <<: *native_build_job_definition 662 needs: 663 job: amd64-fedora-container 664 variables: 665 IMAGE: fedora 666 script: 667 - mkdir build-oss-fuzz 668 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address" 669 ./scripts/oss-fuzz/build.sh 670 - export ASAN_OPTIONS="fast_unwind_on_malloc=0" 671 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f 672 | grep -v slirp); do 673 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ; 674 echo Testing ${fuzzer} ... ; 675 "${fuzzer}" -runs=1 -seed=1 || exit 1 ; 676 done 677 # Unrelated to fuzzer: run some tests with -fsanitize=address 678 - cd build-oss-fuzz && make check-qtest-i386 check-unit 679 680build-tci: 681 <<: *native_build_job_definition 682 needs: 683 job: amd64-debian-user-cross-container 684 variables: 685 IMAGE: debian-all-test-cross 686 script: 687 - TARGETS="aarch64 alpha arm hppa m68k microblaze moxie ppc64 s390x x86_64" 688 - mkdir build 689 - cd build 690 - ../configure --enable-tcg-interpreter 691 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; } 692 - make -j"$JOBS" 693 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test 694 - for tg in $TARGETS ; do 695 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ; 696 ./tests/qtest/boot-serial-test || exit 1 ; 697 ./tests/qtest/cdrom-test || exit 1 ; 698 done 699 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test 700 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow 701 - make check-tcg 702 703# Alternate coroutines implementations are only really of interest to KVM users 704# However we can't test against KVM on Gitlab-CI so we can only run unit tests 705build-coroutine-sigaltstack: 706 <<: *native_build_job_definition 707 needs: 708 job: amd64-ubuntu2004-container 709 variables: 710 IMAGE: ubuntu2004 711 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg 712 --enable-trace-backends=ftrace 713 MAKE_CHECK_ARGS: check-unit 714 715# Most jobs test latest gcrypt or nettle builds 716# 717# These jobs test old gcrypt and nettle from RHEL7 718# which had some API differences. 719crypto-old-nettle: 720 <<: *native_build_job_definition 721 needs: 722 job: amd64-centos7-container 723 variables: 724 IMAGE: centos7 725 TARGETS: x86_64-softmmu x86_64-linux-user 726 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle 727 MAKE_CHECK_ARGS: check 728 729crypto-old-gcrypt: 730 <<: *native_build_job_definition 731 needs: 732 job: amd64-centos7-container 733 variables: 734 IMAGE: centos7 735 TARGETS: x86_64-softmmu x86_64-linux-user 736 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt 737 MAKE_CHECK_ARGS: check 738 739crypto-only-gnutls: 740 <<: *native_build_job_definition 741 needs: 742 job: amd64-centos7-container 743 variables: 744 IMAGE: centos7 745 TARGETS: x86_64-softmmu x86_64-linux-user 746 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls 747 MAKE_CHECK_ARGS: check 748 749 750# Check our reduced build configurations 751build-without-default-devices: 752 <<: *native_build_job_definition 753 needs: 754 job: amd64-centos8-container 755 variables: 756 IMAGE: centos8 757 CONFIGURE_ARGS: --without-default-devices --disable-user 758 759build-without-default-features: 760 <<: *native_build_job_definition 761 needs: 762 job: amd64-debian-container 763 variables: 764 IMAGE: debian-amd64 765 CONFIGURE_ARGS: --without-default-features --disable-user 766 --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu 767 MAKE_CHECK_ARGS: check-unit 768 769check-patch: 770 stage: build 771 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest 772 needs: 773 job: amd64-centos8-container 774 script: .gitlab-ci.d/check-patch.py 775 except: 776 variables: 777 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master' 778 variables: 779 GIT_DEPTH: 1000 780 allow_failure: true 781 782check-dco: 783 stage: build 784 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest 785 needs: 786 job: amd64-centos8-container 787 script: .gitlab-ci.d/check-dco.py 788 except: 789 variables: 790 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master' 791 variables: 792 GIT_DEPTH: 1000 793 794build-libvhost-user: 795 stage: build 796 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest 797 needs: 798 job: amd64-fedora-container 799 before_script: 800 - dnf install -y meson ninja-build 801 script: 802 - mkdir subprojects/libvhost-user/build 803 - cd subprojects/libvhost-user/build 804 - meson 805 - ninja 806 807# No targets are built here, just tools, docs, and unit tests. This 808# also feeds into the eventual documentation deployment steps later 809build-tools-and-docs-debian: 810 <<: *native_build_job_definition 811 needs: 812 job: amd64-debian-container 813 variables: 814 IMAGE: debian-amd64 815 MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope 816 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools 817 artifacts: 818 expire_in: 2 days 819 paths: 820 - build 821 822# Prepare for GitLab pages deployment. Anything copied into the 823# "public" directory will be deployed to $USER.gitlab.io/$PROJECT 824pages: 825 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest 826 stage: test 827 needs: 828 - job: build-tools-and-docs-debian 829 script: 830 - mkdir -p public 831 # HTML-ised source tree 832 - make gtags 833 - htags -anT --tree-view=filetree -m qemu_init 834 -t "Welcome to the QEMU sourcecode" 835 - mv HTML public/src 836 # Project documentation 837 - make -C build install DESTDIR=$(pwd)/temp-install 838 - mv temp-install/usr/local/share/doc/qemu/* public/ 839 artifacts: 840 paths: 841 - public 842