gitlab-ci: Add cross-compiling build tests

Now that we can use all our QEMU test containers in the gitlab-CI, we can
easily add some jobs that test cross-compilation for various architectures.
There is just only small ugliness: Since the shared runners on gitlab.com
are single-threaded, we have to split each compilation job into two parts
(--disable-user and --disable-system), and exclude some additional targets,
to avoid that the jobs are running too long and hitting the timeout of 1 h.

Message-Id: <20200823111757.72002-8-thuth@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Thomas Huth 2020-07-31 08:38:23 +02:00
parent 8c2787629e
commit 6bcb5fc0f7
3 changed files with 115 additions and 0 deletions

View File

@ -0,0 +1,113 @@
.cross_system_build_job_template: &cross_system_build_job_definition
stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
script:
- mkdir build
- cd build
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH
../configure --enable-werror $QEMU_CONFIGURE_OPTS --disable-user
--target-list-exclude="aarch64-softmmu i386-softmmu microblaze-softmmu
mips-softmmu mipsel-softmmu mips64-softmmu ppc64-softmmu sh4-softmmu
xtensa-softmmu"
- make -j$(expr $(nproc) + 1) all check-build
.cross_user_build_job_template: &cross_user_build_job_definition
stage: build
image: $CI_REGISTRY_IMAGE/qemu/$IMAGE:latest
script:
- mkdir build
- cd build
- PKG_CONFIG_PATH=$PKG_CONFIG_PATH
../configure --enable-werror $QEMU_CONFIGURE_OPTS --disable-system
- make -j$(expr $(nproc) + 1) all check-build
cross-armel-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-armel-cross
cross-armel-user:
<<: *cross_user_build_job_definition
variables:
IMAGE: debian-armel-cross
cross-armhf-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-armhf-cross
cross-armhf-user:
<<: *cross_user_build_job_definition
variables:
IMAGE: debian-armhf-cross
cross-arm64-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-arm64-cross
cross-arm64-user:
<<: *cross_user_build_job_definition
variables:
IMAGE: debian-arm64-cross
cross-mips-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-mips-cross
cross-mips-user:
<<: *cross_user_build_job_definition
variables:
IMAGE: debian-mips-cross
cross-mipsel-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-mipsel-cross
cross-mipsel-user:
<<: *cross_user_build_job_definition
variables:
IMAGE: debian-mipsel-cross
cross-mips64el-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-mips64el-cross
cross-mips64el-user:
<<: *cross_user_build_job_definition
variables:
IMAGE: debian-mips64el-cross
cross-ppc64el-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-ppc64el-cross
cross-ppc64el-user:
<<: *cross_user_build_job_definition
variables:
IMAGE: debian-ppc64el-cross
cross-s390x-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-s390x-cross
cross-s390x-user:
<<: *cross_user_build_job_definition
variables:
IMAGE: debian-s390x-cross
cross-win32-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-win32-cross
cross-win64-system:
<<: *cross_system_build_job_definition
variables:
IMAGE: debian-win64-cross

View File

@ -18,6 +18,7 @@ include:
- local: '/.gitlab-ci.d/edk2.yml' - local: '/.gitlab-ci.d/edk2.yml'
- local: '/.gitlab-ci.d/opensbi.yml' - local: '/.gitlab-ci.d/opensbi.yml'
- local: '/.gitlab-ci.d/containers.yml' - local: '/.gitlab-ci.d/containers.yml'
- local: '/.gitlab-ci.d/crossbuilds.yml'
.native_build_job_template: &native_build_job_definition .native_build_job_template: &native_build_job_definition
stage: build stage: build

View File

@ -3071,6 +3071,7 @@ M: Alex Bennée <alex.bennee@linaro.org>
R: Wainer dos Santos Moschetta <wainersm@redhat.com> R: Wainer dos Santos Moschetta <wainersm@redhat.com>
S: Maintained S: Maintained
F: .gitlab-ci.yml F: .gitlab-ci.yml
F: .gitlab-ci.d/crossbuilds.yml
Guest Test Compilation Support Guest Test Compilation Support
M: Alex Bennée <alex.bennee@linaro.org> M: Alex Bennée <alex.bennee@linaro.org>