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