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: 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: 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 extends: .native_build_job_template 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 extends: .native_test_job_template 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 extends: .native_test_job_template 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 extends: .native_build_job_template 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 extends: .native_test_job_template 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 extends: .native_test_job_template 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 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: .native_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 <<: *acceptance_definition 187 188build-system-fedora: 189 extends: .native_build_job_template 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 extends: .native_test_job_template 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 extends: .native_test_job_template 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 extends: .native_build_job_template 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 extends: .native_test_job_template 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 extends: .native_test_job_template 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 extends: .native_build_job_template 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 extends: .native_test_job_template 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 extends: .native_test_job_template 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 extends: .native_build_job_template 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 extends: .native_build_job_template 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 extends: .native_build_job_template 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 extends: .native_build_job_template 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# Because the hexagon cross-compiler takes so long to build we don't rely 420# on the CI system to build it and hence this job has an optional dependency 421# declared. The image is manually uploaded. 422build-user-hexagon: 423 extends: .native_build_job_template 424 needs: 425 job: hexagon-cross-container 426 optional: true 427 variables: 428 IMAGE: debian-hexagon-cross 429 TARGETS: hexagon-linux-user 430 CONFIGURE_ARGS: --disable-tools --disable-docs --enable-debug-tcg 431 MAKE_CHECK_ARGS: check-tcg 432 433# Only build the softmmu targets we have check-tcg tests for 434build-some-softmmu: 435 extends: .native_build_job_template 436 needs: 437 job: amd64-debian-user-cross-container 438 variables: 439 IMAGE: debian-all-test-cross 440 CONFIGURE_ARGS: --disable-tools --enable-debug 441 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu 442 MAKE_CHECK_ARGS: check-tcg 443 444# Run check-tcg against linux-user (with plugins) 445# we skip sparc64-linux-user until it has been fixed somewhat 446# we skip cris-linux-user as it doesn't use the common run loop 447build-user-plugins: 448 extends: .native_build_job_template 449 needs: 450 job: amd64-debian-user-cross-container 451 variables: 452 IMAGE: debian-all-test-cross 453 CONFIGURE_ARGS: --disable-tools --disable-system --enable-plugins --enable-debug-tcg --target-list-exclude=sparc64-linux-user,cris-linux-user 454 MAKE_CHECK_ARGS: check-tcg 455 timeout: 1h 30m 456 457build-user-centos7: 458 extends: .native_build_job_template 459 needs: 460 job: amd64-centos7-container 461 variables: 462 IMAGE: centos7 463 CONFIGURE_ARGS: --disable-system --disable-tools --disable-docs 464 MAKE_CHECK_ARGS: check-tcg 465 466build-some-softmmu-plugins: 467 extends: .native_build_job_template 468 needs: 469 job: amd64-debian-user-cross-container 470 variables: 471 IMAGE: debian-all-test-cross 472 CONFIGURE_ARGS: --disable-tools --disable-user --enable-plugins --enable-debug-tcg 473 TARGETS: xtensa-softmmu arm-softmmu aarch64-softmmu alpha-softmmu 474 MAKE_CHECK_ARGS: check-tcg 475 476clang-system: 477 extends: .native_build_job_template 478 needs: 479 job: amd64-fedora-container 480 variables: 481 IMAGE: fedora 482 CONFIGURE_ARGS: --cc=clang --cxx=clang++ 483 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined 484 TARGETS: alpha-softmmu arm-softmmu m68k-softmmu mips64-softmmu 485 ppc-softmmu s390x-softmmu 486 MAKE_CHECK_ARGS: check-qtest check-tcg 487 488clang-user: 489 extends: .native_build_job_template 490 needs: 491 job: amd64-debian-user-cross-container 492 variables: 493 IMAGE: debian-all-test-cross 494 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --disable-system 495 --target-list-exclude=microblazeel-linux-user,aarch64_be-linux-user,i386-linux-user,m68k-linux-user,mipsn32el-linux-user,xtensaeb-linux-user 496 --extra-cflags=-fsanitize=undefined --extra-cflags=-fno-sanitize-recover=undefined 497 MAKE_CHECK_ARGS: check-unit check-tcg 498 499# Set LD_JOBS=1 because this requires LTO and ld consumes a large amount of memory. 500# On gitlab runners, default value sometimes end up calling 2 lds concurrently and 501# triggers an Out-Of-Memory error 502# 503# Since slirp callbacks are used in QEMU Timers, slirp needs to be compiled together 504# with QEMU and linked as a static library to avoid false positives in CFI checks. 505# This can be accomplished by using -enable-slirp=git, which avoids the use of 506# a system-wide version of the library 507# 508# Split in three sets of build/check/acceptance to limit the execution time of each 509# job 510build-cfi-aarch64: 511 extends: .native_build_job_template 512 needs: 513 - job: amd64-fedora-container 514 variables: 515 LD_JOBS: 1 516 AR: llvm-ar 517 IMAGE: fedora 518 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 519 --enable-safe-stack --enable-slirp=git 520 TARGETS: aarch64-softmmu 521 MAKE_CHECK_ARGS: check-build 522 timeout: 70m 523 artifacts: 524 expire_in: 2 days 525 paths: 526 - build 527 528check-cfi-aarch64: 529 extends: .native_test_job_template 530 needs: 531 - job: build-cfi-aarch64 532 artifacts: true 533 variables: 534 IMAGE: fedora 535 MAKE_CHECK_ARGS: check 536 537acceptance-cfi-aarch64: 538 extends: .native_test_job_template 539 needs: 540 - job: build-cfi-aarch64 541 artifacts: true 542 variables: 543 IMAGE: fedora 544 MAKE_CHECK_ARGS: check-acceptance 545 <<: *acceptance_definition 546 547build-cfi-ppc64-s390x: 548 extends: .native_build_job_template 549 needs: 550 - job: amd64-fedora-container 551 variables: 552 LD_JOBS: 1 553 AR: llvm-ar 554 IMAGE: fedora 555 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 556 --enable-safe-stack --enable-slirp=git 557 TARGETS: ppc64-softmmu s390x-softmmu 558 MAKE_CHECK_ARGS: check-build 559 timeout: 70m 560 artifacts: 561 expire_in: 2 days 562 paths: 563 - build 564 565check-cfi-ppc64-s390x: 566 extends: .native_test_job_template 567 needs: 568 - job: build-cfi-ppc64-s390x 569 artifacts: true 570 variables: 571 IMAGE: fedora 572 MAKE_CHECK_ARGS: check 573 574acceptance-cfi-ppc64-s390x: 575 extends: .native_test_job_template 576 needs: 577 - job: build-cfi-ppc64-s390x 578 artifacts: true 579 variables: 580 IMAGE: fedora 581 MAKE_CHECK_ARGS: check-acceptance 582 <<: *acceptance_definition 583 584build-cfi-x86_64: 585 extends: .native_build_job_template 586 needs: 587 - job: amd64-fedora-container 588 variables: 589 LD_JOBS: 1 590 AR: llvm-ar 591 IMAGE: fedora 592 CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-cfi --enable-cfi-debug 593 --enable-safe-stack --enable-slirp=git 594 TARGETS: x86_64-softmmu 595 MAKE_CHECK_ARGS: check-build 596 timeout: 70m 597 artifacts: 598 expire_in: 2 days 599 paths: 600 - build 601 602check-cfi-x86_64: 603 extends: .native_test_job_template 604 needs: 605 - job: build-cfi-x86_64 606 artifacts: true 607 variables: 608 IMAGE: fedora 609 MAKE_CHECK_ARGS: check 610 611acceptance-cfi-x86_64: 612 extends: .native_test_job_template 613 needs: 614 - job: build-cfi-x86_64 615 artifacts: true 616 variables: 617 IMAGE: fedora 618 MAKE_CHECK_ARGS: check-acceptance 619 <<: *acceptance_definition 620 621tsan-build: 622 extends: .native_build_job_template 623 needs: 624 job: amd64-ubuntu2004-container 625 variables: 626 IMAGE: ubuntu2004 627 CONFIGURE_ARGS: --enable-tsan --cc=clang-10 --cxx=clang++-10 628 --enable-trace-backends=ust --enable-fdt=system --enable-slirp=system 629 TARGETS: x86_64-softmmu ppc64-softmmu riscv64-softmmu x86_64-linux-user 630 MAKE_CHECK_ARGS: bench V=1 631 632# These targets are on the way out 633build-deprecated: 634 extends: .native_build_job_template 635 needs: 636 job: amd64-debian-user-cross-container 637 variables: 638 IMAGE: debian-all-test-cross 639 CONFIGURE_ARGS: --disable-tools 640 MAKE_CHECK_ARGS: build-tcg 641 TARGETS: ppc64abi32-linux-user 642 artifacts: 643 expire_in: 2 days 644 paths: 645 - build 646 647# We split the check-tcg step as test failures are expected but we still 648# want to catch the build breaking. 649check-deprecated: 650 extends: .native_test_job_template 651 needs: 652 - job: build-deprecated 653 artifacts: true 654 variables: 655 IMAGE: debian-all-test-cross 656 MAKE_CHECK_ARGS: check-tcg 657 allow_failure: true 658 659# gprof/gcov are GCC features 660gprof-gcov: 661 extends: .native_build_job_template 662 needs: 663 job: amd64-ubuntu2004-container 664 variables: 665 IMAGE: ubuntu2004 666 CONFIGURE_ARGS: --enable-gprof --enable-gcov 667 MAKE_CHECK_ARGS: check 668 TARGETS: aarch64-softmmu ppc64-softmmu s390x-softmmu x86_64-softmmu 669 timeout: 70m 670 after_script: 671 - ${CI_PROJECT_DIR}/scripts/ci/coverage-summary.sh 672 673build-oss-fuzz: 674 extends: .native_build_job_template 675 needs: 676 job: amd64-fedora-container 677 variables: 678 IMAGE: fedora 679 script: 680 - mkdir build-oss-fuzz 681 - CC="clang" CXX="clang++" CFLAGS="-fsanitize=address" 682 ./scripts/oss-fuzz/build.sh 683 - export ASAN_OPTIONS="fast_unwind_on_malloc=0" 684 - for fuzzer in $(find ./build-oss-fuzz/DEST_DIR/ -executable -type f 685 | grep -v slirp); do 686 grep "LLVMFuzzerTestOneInput" ${fuzzer} > /dev/null 2>&1 || continue ; 687 echo Testing ${fuzzer} ... ; 688 "${fuzzer}" -runs=1 -seed=1 || exit 1 ; 689 done 690 # Unrelated to fuzzer: run some tests with -fsanitize=address 691 - cd build-oss-fuzz && make check-qtest-i386 check-unit 692 693build-tci: 694 extends: .native_build_job_template 695 needs: 696 job: amd64-debian-user-cross-container 697 variables: 698 IMAGE: debian-all-test-cross 699 script: 700 - TARGETS="aarch64 alpha arm hppa m68k microblaze ppc64 s390x x86_64" 701 - mkdir build 702 - cd build 703 - ../configure --enable-tcg-interpreter 704 --target-list="$(for tg in $TARGETS; do echo -n ${tg}'-softmmu '; done)" || { cat config.log meson-logs/meson-log.txt && exit 1; } 705 - make -j"$JOBS" 706 - make tests/qtest/boot-serial-test tests/qtest/cdrom-test tests/qtest/pxe-test 707 - for tg in $TARGETS ; do 708 export QTEST_QEMU_BINARY="./qemu-system-${tg}" ; 709 ./tests/qtest/boot-serial-test || exit 1 ; 710 ./tests/qtest/cdrom-test || exit 1 ; 711 done 712 - QTEST_QEMU_BINARY="./qemu-system-x86_64" ./tests/qtest/pxe-test 713 - QTEST_QEMU_BINARY="./qemu-system-s390x" ./tests/qtest/pxe-test -m slow 714 - make check-tcg 715 716# Alternate coroutines implementations are only really of interest to KVM users 717# However we can't test against KVM on Gitlab-CI so we can only run unit tests 718build-coroutine-sigaltstack: 719 extends: .native_build_job_template 720 needs: 721 job: amd64-ubuntu2004-container 722 variables: 723 IMAGE: ubuntu2004 724 CONFIGURE_ARGS: --with-coroutine=sigaltstack --disable-tcg 725 --enable-trace-backends=ftrace 726 MAKE_CHECK_ARGS: check-unit 727 728# Most jobs test latest gcrypt or nettle builds 729# 730# These jobs test old gcrypt and nettle from RHEL7 731# which had some API differences. 732crypto-old-nettle: 733 extends: .native_build_job_template 734 needs: 735 job: amd64-centos7-container 736 variables: 737 IMAGE: centos7 738 TARGETS: x86_64-softmmu x86_64-linux-user 739 CONFIGURE_ARGS: --disable-gcrypt --enable-nettle 740 MAKE_CHECK_ARGS: check 741 742crypto-old-gcrypt: 743 extends: .native_build_job_template 744 needs: 745 job: amd64-centos7-container 746 variables: 747 IMAGE: centos7 748 TARGETS: x86_64-softmmu x86_64-linux-user 749 CONFIGURE_ARGS: --disable-nettle --enable-gcrypt 750 MAKE_CHECK_ARGS: check 751 752crypto-only-gnutls: 753 extends: .native_build_job_template 754 needs: 755 job: amd64-centos7-container 756 variables: 757 IMAGE: centos7 758 TARGETS: x86_64-softmmu x86_64-linux-user 759 CONFIGURE_ARGS: --disable-nettle --disable-gcrypt --enable-gnutls 760 MAKE_CHECK_ARGS: check 761 762 763# Check our reduced build configurations 764build-without-default-devices: 765 extends: .native_build_job_template 766 needs: 767 job: amd64-centos8-container 768 variables: 769 IMAGE: centos8 770 CONFIGURE_ARGS: --without-default-devices --disable-user 771 772build-without-default-features: 773 extends: .native_build_job_template 774 needs: 775 job: amd64-debian-container 776 variables: 777 IMAGE: debian-amd64 778 CONFIGURE_ARGS: --without-default-features --disable-user 779 --target-list-exclude=arm-softmmu,i386-softmmu,mipsel-softmmu,mips64-softmmu,ppc-softmmu 780 MAKE_CHECK_ARGS: check-unit 781 782check-patch: 783 stage: build 784 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest 785 needs: 786 job: amd64-centos8-container 787 script: .gitlab-ci.d/check-patch.py 788 except: 789 variables: 790 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master' 791 variables: 792 GIT_DEPTH: 1000 793 allow_failure: true 794 795check-dco: 796 stage: build 797 image: $CI_REGISTRY_IMAGE/qemu/centos8:latest 798 needs: 799 job: amd64-centos8-container 800 script: .gitlab-ci.d/check-dco.py 801 except: 802 variables: 803 - $CI_PROJECT_NAMESPACE == 'qemu-project' && $CI_COMMIT_BRANCH == 'master' 804 variables: 805 GIT_DEPTH: 1000 806 807build-libvhost-user: 808 stage: build 809 image: $CI_REGISTRY_IMAGE/qemu/fedora:latest 810 needs: 811 job: amd64-fedora-container 812 before_script: 813 - dnf install -y meson ninja-build 814 script: 815 - mkdir subprojects/libvhost-user/build 816 - cd subprojects/libvhost-user/build 817 - meson 818 - ninja 819 820# No targets are built here, just tools, docs, and unit tests. This 821# also feeds into the eventual documentation deployment steps later 822build-tools-and-docs-debian: 823 extends: .native_build_job_template 824 needs: 825 job: amd64-debian-container 826 variables: 827 IMAGE: debian-amd64 828 MAKE_CHECK_ARGS: check-unit check-softfloat ctags TAGS cscope 829 CONFIGURE_ARGS: --disable-system --disable-user --enable-docs --enable-tools 830 artifacts: 831 expire_in: 2 days 832 paths: 833 - build 834 835# Prepare for GitLab pages deployment. Anything copied into the 836# "public" directory will be deployed to $USER.gitlab.io/$PROJECT 837pages: 838 image: $CI_REGISTRY_IMAGE/qemu/debian-amd64:latest 839 stage: test 840 needs: 841 - job: build-tools-and-docs-debian 842 script: 843 - mkdir -p public 844 # HTML-ised source tree 845 - make gtags 846 - htags -anT --tree-view=filetree -m qemu_init 847 -t "Welcome to the QEMU sourcecode" 848 - mv HTML public/src 849 # Project documentation 850 - make -C build install DESTDIR=$(pwd)/temp-install 851 - mv temp-install/usr/local/share/doc/qemu/* public/ 852 artifacts: 853 paths: 854 - public 855