Most of the test is pure boilerplate so to save ourselves from
repetition move all the main bits into a minimal copy of
native_build_job_template but without the caching.
We keep all the current allow_fail and configure setups but do take
the opportunity to replace the -j`nproc --ignore=40` hack with
something that almost, but not quite, saturates the machine its being
built on.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
.../custom-runners/ubuntu-24.04-aarch64.yml | 230 ++++++++----------
1 file changed, 96 insertions(+), 134 deletions(-)
diff --git a/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml b/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
index d26c7827f45..46db9ae0138 100644
--- a/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
+++ b/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
@@ -2,150 +2,112 @@
# setup by the scripts/ci/setup/ubuntu/build-environment.yml task
# "Install basic packages to build QEMU on Ubuntu 24.04"
+.ubuntu_aarch64_template:
+ extends: .custom_runner_template
+ needs: []
+ stage: build
+ tags:
+ - ubuntu_24.04
+ - aarch64
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ before_script:
+ - source scripts/ci/gitlab-ci-section
+ - section_start setup "Pre-script setup"
+ - JOBS=$(expr $(nproc) - 4)
+ - section_end setup
+ script:
+ - mkdir build
+ - cd build
+ - section_start configure "Running configure"
+ - ../configure $CONFIGURE_ARGS ||
+ { cat config.log meson-logs/meson-log.txt && exit 1; }
+ - section_end configure
+ - section_start build "Building QEMU"
+ - make --output-sync -j"$JOBS"
+ - section_end build
+ - section_start test "Running tests"
+ - if test -n "$MAKE_CHECK_ARGS";
+ then
+ make -j"$JOBS" $MAKE_CHECK_ARGS ;
+ fi
+ - section_end test
+
ubuntu-24.04-aarch64-all-linux-static:
- extends: .custom_runner_template
- needs: []
- stage: build
- tags:
- - ubuntu_24.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- - if: "$AARCH64_RUNNER_AVAILABLE"
- script:
- - mkdir build
- - cd build
- # Disable -static-pie due to build error with system libc:
- # https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1987438
- - ../configure --enable-debug --static --disable-system --disable-pie
- || { cat config.log meson-logs/meson-log.txt; exit 1; }
- - make --output-sync -j`nproc --ignore=40`
- - make check-tcg
- - make --output-sync -j`nproc --ignore=40` check
+ extends: .ubuntu_aarch64_template
+ variables:
+ # Disable -static-pie due to build error with system libc:
+ # https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1987438
+ CONFIGURE_ARGS: --enable-debug --static --disable-system --disable-pie
+ MAKE_CHECK_ARGS: check-tcg
ubuntu-24.04-aarch64-all:
- extends: .custom_runner_template
- needs: []
- stage: build
- tags:
- - ubuntu_24.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$AARCH64_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure
- || { cat config.log meson-logs/meson-log.txt; exit 1; }
- - make --output-sync -j`nproc --ignore=40`
- - make --output-sync -j`nproc --ignore=40` check
+ extends: .ubuntu_aarch64_template
+ variables:
+ MAKE_CHECK_ARGS: check
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
ubuntu-24.04-aarch64-without-defaults:
- extends: .custom_runner_template
- needs: []
- stage: build
- tags:
- - ubuntu_24.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$AARCH64_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-user --without-default-devices --without-default-features
- || { cat config.log meson-logs/meson-log.txt; exit 1; }
- - make --output-sync -j`nproc --ignore=40`
- - make --output-sync -j`nproc --ignore=40` check
+ extends: .ubuntu_aarch64_template
+ variables:
+ CONFIGURE_ARGS: --disable-user --without-default-devices --without-default-features
+ MAKE_CHECK_ARGS: check
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
ubuntu-24.04-aarch64-alldbg:
- extends: .custom_runner_template
- needs: []
- stage: build
- tags:
- - ubuntu_24.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- - if: "$AARCH64_RUNNER_AVAILABLE"
- script:
- - mkdir build
- - cd build
- - ../configure --enable-debug
- || { cat config.log meson-logs/meson-log.txt; exit 1; }
- - make clean
- - make --output-sync -j`nproc --ignore=40`
- - make --output-sync -j`nproc --ignore=40` check
+ extends: .ubuntu_aarch64_template
+ variables:
+ CONFIGURE_ARGS: --enable-debug
+ MAKE_CHECK_ARGS: check-tcg
ubuntu-24.04-aarch64-clang:
- extends: .custom_runner_template
- needs: []
- stage: build
- tags:
- - ubuntu_24.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$AARCH64_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-libssh --cc=clang --cxx=clang++ --enable-ubsan
- || { cat config.log meson-logs/meson-log.txt; exit 1; }
- - make --output-sync -j`nproc --ignore=40`
- - make --output-sync -j`nproc --ignore=40` check
+ extends: .ubuntu_aarch64_template
+ variables:
+ CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-ubsan
+ MAKE_CHECK_ARGS: check
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
ubuntu-24.04-aarch64-tci:
- needs: []
- stage: build
- tags:
- - ubuntu_24.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$AARCH64_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --enable-tcg-interpreter
- || { cat config.log meson-logs/meson-log.txt; exit 1; }
- - make --output-sync -j`nproc --ignore=40`
+ extends: .ubuntu_aarch64_template
+ variables:
+ CONFIGURE_ARGS: --enable-tcg-interpreter
+ MAKE_CHECK_ARGS: check
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
ubuntu-24.04-aarch64-notcg:
- extends: .custom_runner_template
- needs: []
- stage: build
- tags:
- - ubuntu_24.04
- - aarch64
- rules:
- - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
- when: manual
- allow_failure: true
- - if: "$AARCH64_RUNNER_AVAILABLE"
- when: manual
- allow_failure: true
- script:
- - mkdir build
- - cd build
- - ../configure --disable-tcg --with-devices-aarch64=minimal
- || { cat config.log meson-logs/meson-log.txt; exit 1; }
- - make --output-sync -j`nproc --ignore=40`
- - make --output-sync -j`nproc --ignore=40` check
+ extends: .ubuntu_aarch64_template
+ variables:
+ CONFIGURE_ARGS: --disable-tcg --with-devices-aarch64=minimal
+ MAKE_CHECK_ARGS: check
+ rules:
+ - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
+ when: manual
+ allow_failure: true
+ - if: "$AARCH64_RUNNER_AVAILABLE"
+ when: manual
+ allow_failure: true
--
2.47.3
On 10/16/25 08:03, Alex Bennée wrote: > Most of the test is pure boilerplate so to save ourselves from > repetition move all the main bits into a minimal copy of > native_build_job_template but without the caching. > > We keep all the current allow_fail and configure setups but do take > the opportunity to replace the -j`nproc --ignore=40` hack with > something that almost, but not quite, saturates the machine its being > built on. > > Signed-off-by: Alex Bennée<alex.bennee@linaro.org> > --- > .../custom-runners/ubuntu-24.04-aarch64.yml | 230 ++++++++---------- > 1 file changed, 96 insertions(+), 134 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 10/16/25 8:03 AM, Alex Bennée wrote:
> Most of the test is pure boilerplate so to save ourselves from
> repetition move all the main bits into a minimal copy of
> native_build_job_template but without the caching.
>
> We keep all the current allow_fail and configure setups but do take
> the opportunity to replace the -j`nproc --ignore=40` hack with
> something that almost, but not quite, saturates the machine its being
> built on.
>
> Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> .../custom-runners/ubuntu-24.04-aarch64.yml | 230 ++++++++----------
> 1 file changed, 96 insertions(+), 134 deletions(-)
>
> diff --git a/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml b/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
> index d26c7827f45..46db9ae0138 100644
> --- a/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
> +++ b/.gitlab-ci.d/custom-runners/ubuntu-24.04-aarch64.yml
> @@ -2,150 +2,112 @@
> # setup by the scripts/ci/setup/ubuntu/build-environment.yml task
> # "Install basic packages to build QEMU on Ubuntu 24.04"
>
> +.ubuntu_aarch64_template:
> + extends: .custom_runner_template
> + needs: []
> + stage: build
> + tags:
> + - ubuntu_24.04
> + - aarch64
> + rules:
> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> + - if: "$AARCH64_RUNNER_AVAILABLE"
> + before_script:
> + - source scripts/ci/gitlab-ci-section
> + - section_start setup "Pre-script setup"
> + - JOBS=$(expr $(nproc) - 4)
> + - section_end setup
> + script:
> + - mkdir build
> + - cd build
> + - section_start configure "Running configure"
> + - ../configure $CONFIGURE_ARGS ||
> + { cat config.log meson-logs/meson-log.txt && exit 1; }
> + - section_end configure
> + - section_start build "Building QEMU"
> + - make --output-sync -j"$JOBS"
> + - section_end build
> + - section_start test "Running tests"
> + - if test -n "$MAKE_CHECK_ARGS";
> + then
> + make -j"$JOBS" $MAKE_CHECK_ARGS ;
> + fi
> + - section_end test
> +
> ubuntu-24.04-aarch64-all-linux-static:
> - extends: .custom_runner_template
> - needs: []
> - stage: build
> - tags:
> - - ubuntu_24.04
> - - aarch64
> - rules:
> - - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> - - if: "$AARCH64_RUNNER_AVAILABLE"
> - script:
> - - mkdir build
> - - cd build
> - # Disable -static-pie due to build error with system libc:
> - # https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1987438
> - - ../configure --enable-debug --static --disable-system --disable-pie
> - || { cat config.log meson-logs/meson-log.txt; exit 1; }
> - - make --output-sync -j`nproc --ignore=40`
> - - make check-tcg
> - - make --output-sync -j`nproc --ignore=40` check
> + extends: .ubuntu_aarch64_template
> + variables:
> + # Disable -static-pie due to build error with system libc:
> + # https://bugs.launchpad.net/ubuntu/+source/glibc/+bug/1987438
> + CONFIGURE_ARGS: --enable-debug --static --disable-system --disable-pie
> + MAKE_CHECK_ARGS: check-tcg
>
> ubuntu-24.04-aarch64-all:
> - extends: .custom_runner_template
> - needs: []
> - stage: build
> - tags:
> - - ubuntu_24.04
> - - aarch64
> - rules:
> - - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> - when: manual
> - allow_failure: true
> - - if: "$AARCH64_RUNNER_AVAILABLE"
> - when: manual
> - allow_failure: true
> - script:
> - - mkdir build
> - - cd build
> - - ../configure
> - || { cat config.log meson-logs/meson-log.txt; exit 1; }
> - - make --output-sync -j`nproc --ignore=40`
> - - make --output-sync -j`nproc --ignore=40` check
> + extends: .ubuntu_aarch64_template
> + variables:
> + MAKE_CHECK_ARGS: check
> + rules:
> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> + when: manual
> + allow_failure: true
> + - if: "$AARCH64_RUNNER_AVAILABLE"
> + when: manual
> + allow_failure: true
>
> ubuntu-24.04-aarch64-without-defaults:
> - extends: .custom_runner_template
> - needs: []
> - stage: build
> - tags:
> - - ubuntu_24.04
> - - aarch64
> - rules:
> - - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> - when: manual
> - allow_failure: true
> - - if: "$AARCH64_RUNNER_AVAILABLE"
> - when: manual
> - allow_failure: true
> - script:
> - - mkdir build
> - - cd build
> - - ../configure --disable-user --without-default-devices --without-default-features
> - || { cat config.log meson-logs/meson-log.txt; exit 1; }
> - - make --output-sync -j`nproc --ignore=40`
> - - make --output-sync -j`nproc --ignore=40` check
> + extends: .ubuntu_aarch64_template
> + variables:
> + CONFIGURE_ARGS: --disable-user --without-default-devices --without-default-features
> + MAKE_CHECK_ARGS: check
> + rules:
> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> + when: manual
> + allow_failure: true
> + - if: "$AARCH64_RUNNER_AVAILABLE"
> + when: manual
> + allow_failure: true
>
> ubuntu-24.04-aarch64-alldbg:
> - extends: .custom_runner_template
> - needs: []
> - stage: build
> - tags:
> - - ubuntu_24.04
> - - aarch64
> - rules:
> - - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> - - if: "$AARCH64_RUNNER_AVAILABLE"
> - script:
> - - mkdir build
> - - cd build
> - - ../configure --enable-debug
> - || { cat config.log meson-logs/meson-log.txt; exit 1; }
> - - make clean
> - - make --output-sync -j`nproc --ignore=40`
> - - make --output-sync -j`nproc --ignore=40` check
> + extends: .ubuntu_aarch64_template
> + variables:
> + CONFIGURE_ARGS: --enable-debug
> + MAKE_CHECK_ARGS: check-tcg
>
> ubuntu-24.04-aarch64-clang:
> - extends: .custom_runner_template
> - needs: []
> - stage: build
> - tags:
> - - ubuntu_24.04
> - - aarch64
> - rules:
> - - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> - when: manual
> - allow_failure: true
> - - if: "$AARCH64_RUNNER_AVAILABLE"
> - when: manual
> - allow_failure: true
> - script:
> - - mkdir build
> - - cd build
> - - ../configure --disable-libssh --cc=clang --cxx=clang++ --enable-ubsan
> - || { cat config.log meson-logs/meson-log.txt; exit 1; }
> - - make --output-sync -j`nproc --ignore=40`
> - - make --output-sync -j`nproc --ignore=40` check
> + extends: .ubuntu_aarch64_template
> + variables:
> + CONFIGURE_ARGS: --cc=clang --cxx=clang++ --enable-ubsan
> + MAKE_CHECK_ARGS: check
> + rules:
> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> + when: manual
> + allow_failure: true
> + - if: "$AARCH64_RUNNER_AVAILABLE"
> + when: manual
> + allow_failure: true
>
> ubuntu-24.04-aarch64-tci:
> - needs: []
> - stage: build
> - tags:
> - - ubuntu_24.04
> - - aarch64
> - rules:
> - - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> - when: manual
> - allow_failure: true
> - - if: "$AARCH64_RUNNER_AVAILABLE"
> - when: manual
> - allow_failure: true
> - script:
> - - mkdir build
> - - cd build
> - - ../configure --enable-tcg-interpreter
> - || { cat config.log meson-logs/meson-log.txt; exit 1; }
> - - make --output-sync -j`nproc --ignore=40`
> + extends: .ubuntu_aarch64_template
> + variables:
> + CONFIGURE_ARGS: --enable-tcg-interpreter
> + MAKE_CHECK_ARGS: check
> + rules:
> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> + when: manual
> + allow_failure: true
> + - if: "$AARCH64_RUNNER_AVAILABLE"
> + when: manual
> + allow_failure: true
>
> ubuntu-24.04-aarch64-notcg:
> - extends: .custom_runner_template
> - needs: []
> - stage: build
> - tags:
> - - ubuntu_24.04
> - - aarch64
> - rules:
> - - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> - when: manual
> - allow_failure: true
> - - if: "$AARCH64_RUNNER_AVAILABLE"
> - when: manual
> - allow_failure: true
> - script:
> - - mkdir build
> - - cd build
> - - ../configure --disable-tcg --with-devices-aarch64=minimal
> - || { cat config.log meson-logs/meson-log.txt; exit 1; }
> - - make --output-sync -j`nproc --ignore=40`
> - - make --output-sync -j`nproc --ignore=40` check
> + extends: .ubuntu_aarch64_template
> + variables:
> + CONFIGURE_ARGS: --disable-tcg --with-devices-aarch64=minimal
> + MAKE_CHECK_ARGS: check
> + rules:
> + - if: '$CI_PROJECT_NAMESPACE == "qemu-project" && $CI_COMMIT_BRANCH =~ /^staging/'
> + when: manual
> + allow_failure: true
> + - if: "$AARCH64_RUNNER_AVAILABLE"
> + when: manual
> + allow_failure: true
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org>
© 2016 - 2025 Red Hat, Inc.