@@ -41,7 +41,7 @@ build-system-ubuntu:
4141 variables :
4242 IMAGE : ubuntu2204
4343 CONFIGURE_ARGS : --enable-docs
44- TARGETS : alpha-softmmu microblaze -softmmu mips64el-softmmu
44+ TARGETS : alpha-softmmu microblazeel -softmmu mips64el-softmmu
4545 MAKE_CHECK_ARGS : check-build
4646
4747check-system-ubuntu :
@@ -61,7 +61,7 @@ avocado-system-ubuntu:
6161 variables :
6262 IMAGE : ubuntu2204
6363 MAKE_CHECK_ARGS : check-avocado
64- AVOCADO_TAGS : arch:alpha arch:microblaze arch:mips64el
64+ AVOCADO_TAGS : arch:alpha arch:microblazeel arch:mips64el
6565
6666build-system-debian :
6767 extends :
@@ -167,6 +167,75 @@ build-system-centos:
167167 x86_64-softmmu rx-softmmu sh4-softmmu nios2-softmmu
168168 MAKE_CHECK_ARGS : check-build
169169
170+ # Previous QEMU release. Used for cross-version migration tests.
171+ build-previous-qemu :
172+ extends : .native_build_job_template
173+ artifacts :
174+ when : on_success
175+ expire_in : 2 days
176+ paths :
177+ - build-previous
178+ exclude :
179+ - build-previous/**/*.p
180+ - build-previous/**/*.a.p
181+ - build-previous/**/*.fa.p
182+ - build-previous/**/*.c.o
183+ - build-previous/**/*.c.o.d
184+ - build-previous/**/*.fa
185+ needs :
186+ job : amd64-opensuse-leap-container
187+ variables :
188+ IMAGE : opensuse-leap
189+ TARGETS : x86_64-softmmu aarch64-softmmu
190+ # Override the default flags as we need more to grab the old version
191+ GIT_FETCH_EXTRA_FLAGS : --prune --quiet
192+ before_script :
193+ - export QEMU_PREV_VERSION="$(sed 's/\([0-9.]*\)\.[0-9]*/v\1.0/' VERSION)"
194+ - git remote add upstream https://gitlab.com/qemu-project/qemu
195+ - git fetch upstream refs/tags/$QEMU_PREV_VERSION:refs/tags/$QEMU_PREV_VERSION
196+ - git checkout $QEMU_PREV_VERSION
197+ after_script :
198+ - mv build build-previous
199+
200+ .migration-compat-common :
201+ extends : .common_test_job_template
202+ needs :
203+ - job : build-previous-qemu
204+ - job : build-system-opensuse
205+ # The old QEMU could have bugs unrelated to migration that are
206+ # already fixed in the current development branch, so this test
207+ # might fail.
208+ allow_failure : true
209+ variables :
210+ IMAGE : opensuse-leap
211+ MAKE_CHECK_ARGS : check-build
212+ script :
213+ # Use the migration-tests from the older QEMU tree. This avoids
214+ # testing an old QEMU against new features/tests that it is not
215+ # compatible with.
216+ - cd build-previous
217+ # old to new
218+ - QTEST_QEMU_BINARY_SRC=./qemu-system-${TARGET}
219+ QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
220+ # new to old
221+ - QTEST_QEMU_BINARY_DST=./qemu-system-${TARGET}
222+ QTEST_QEMU_BINARY=../build/qemu-system-${TARGET} ./tests/qtest/migration-test
223+
224+ # This job needs to be disabled until we can have an aarch64 CPU model that
225+ # will both (1) support both KVM and TCG, and (2) provide a stable ABI.
226+ # Currently only "-cpu max" can provide (1), however it doesn't guarantee
227+ # (2). Mark this test skipped until later.
228+ migration-compat-aarch64 :
229+ extends : .migration-compat-common
230+ variables :
231+ TARGET : aarch64
232+ QEMU_JOB_SKIPPED : 1
233+
234+ migration-compat-x86_64 :
235+ extends : .migration-compat-common
236+ variables :
237+ TARGET : x86_64
238+
170239check-system-centos :
171240 extends : .native_test_job_template
172241 needs :
@@ -184,7 +253,7 @@ avocado-system-centos:
184253 variables :
185254 IMAGE : centos8
186255 MAKE_CHECK_ARGS : check-avocado
187- AVOCADO_TAGS : arch:ppc64 arch:or1k arch:390x arch:x86_64 arch:rx
256+ AVOCADO_TAGS : arch:ppc64 arch:or1k arch:s390x arch:x86_64 arch:rx
188257 arch:sh4 arch:nios2
189258
190259build-system-opensuse :
@@ -592,7 +661,7 @@ build-without-defaults:
592661 --disable-pie
593662 --disable-qom-cast-debug
594663 --disable-strip
595- TARGETS : avr-softmmu mips64-softmmu s390x-softmmu sh4-softmmu
664+ TARGETS : avr-softmmu s390x-softmmu sh4-softmmu
596665 sparc64-softmmu hexagon-linux-user i386-linux-user s390x-linux-user
597666 MAKE_CHECK_ARGS : check
598667
@@ -662,3 +731,40 @@ pages:
662731 - public
663732 variables :
664733 QEMU_JOB_PUBLISH : 1
734+
735+ coverity :
736+ image : $CI_REGISTRY_IMAGE/qemu/fedora:$QEMU_CI_CONTAINER_TAG
737+ stage : build
738+ allow_failure : true
739+ timeout : 3h
740+ needs :
741+ - job : amd64-fedora-container
742+ optional : true
743+ before_script :
744+ - dnf install -y curl wget
745+ script :
746+ # would be nice to cancel the job if over quota (https://gitlab.com/gitlab-org/gitlab/-/issues/256089)
747+ # for example:
748+ # curl --request POST --header "PRIVATE-TOKEN: $CI_JOB_TOKEN" "${CI_SERVER_URL}/api/v4/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/cancel
749+ - ' scripts/coverity-scan/run-coverity-scan --check-upload-only || { exitcode=$?; if test $exitcode = 1; then
750+ exit 0;
751+ else
752+ exit $exitcode;
753+ fi; };
754+ scripts/coverity-scan/run-coverity-scan --update-tools-only > update-tools.log 2>&1 || { cat update-tools.log; exit 1; };
755+ scripts/coverity-scan/run-coverity-scan --no-update-tools'
756+ rules :
757+ - if : ' $COVERITY_TOKEN == null'
758+ when : never
759+ - if : ' $COVERITY_EMAIL == null'
760+ when : never
761+ # Never included on upstream pipelines, except for schedules
762+ - if : ' $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM && $CI_PIPELINE_SOURCE == "schedule"'
763+ when : on_success
764+ - if : ' $CI_PROJECT_NAMESPACE == $QEMU_CI_UPSTREAM'
765+ when : never
766+ # Forks don't get any pipeline unless QEMU_CI=1 or QEMU_CI=2 is set
767+ - if : ' $QEMU_CI != "1" && $QEMU_CI != "2"'
768+ when : never
769+ # Always manual on forks even if $QEMU_CI == "2"
770+ - when : manual
0 commit comments