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