diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 541564b6..fc99c459 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -104,6 +104,12 @@ check-commit: KERNEL_IMAGE: "bzImage" KERNEL_DEFCONFIG: "x86_64_defconfig" +.debian-aarch64: + extends: + - .os-debian + variables: + BUILD_ARCH: "aarch64" + # Build our base container image, which contains the core distribution, the # toolchain, and all our build dependencies. This will be reused in the build # stage. @@ -115,6 +121,15 @@ x86_64-debian-container_prep: timeout: 30m stage: container_prep +aarch64-debian-container_prep: + extends: + - .ci-rules + - .debian-aarch64 + - .fdo.container-build@debian + tags: + - aarch64 + timeout: 30m + stage: container_prep # Core templates for all of our build steps. These are reused by all build jobs # through the `extends` keyword. @@ -186,6 +201,17 @@ x86_64-debian-container_prep: - job: x86_64-debian-container_prep artifacts: false +.build-env-debian-aarch64: + tags: + - aarch64 + extends: + - .debian-aarch64 + - .fdo.suffixed-image@debian + - .build-env + needs: + - job: aarch64-debian-container_prep + artifacts: false + .test-env-debian-x86_64: tags: - kvm @@ -226,8 +252,7 @@ docs-build: - .build-no-test # Building without gl-renderer, to make sure this keeps working. -x86_64-debian-no-gl-build: - extends: .test-env-debian-x86_64 +.build-options-no-gl: variables: MESON_OPTIONS: > -Dsimple-clients=damage,im,shm,touch,dmabuf-v4l @@ -236,6 +261,17 @@ x86_64-debian-no-gl-build: -Dpipewire=false -Dwerror=true -Dlauncher-libseat=true + +x86_64-debian-no-gl-build: + extends: + - .test-env-debian-x86_64 + - .build-options-no-gl + +aarch64-debian-no-gl-build: + extends: + - .build-env-debian-aarch64 + - .build-no-test + - .build-options-no-gl # Expose docs and coverage reports, so we can show users any changes to these # inside their merge requests, letting us check them before merge. diff --git a/.gitlab-ci/build-deps.sh b/.gitlab-ci/build-deps.sh index bada5aea..212b3257 100755 --- a/.gitlab-ci/build-deps.sh +++ b/.gitlab-ci/build-deps.sh @@ -29,31 +29,8 @@ pip3 install sphinx_rtd_theme==0.4.3 --user # Build a Linux kernel for use in testing. We enable the VKMS module so we can # predictably test the DRM backend in the absence of real hardware. We lock the # version here so we see predictable results. -git clone --depth=1 --branch=drm-next-2020-06-11-1 https://anongit.freedesktop.org/git/drm/drm.git linux -cd linux -if [[ "${BUILD_ARCH}" = "x86-64" ]]; then - LINUX_ARCH=x86 -fi -if [[ -z "${KERNEL_DEFCONFIG}" ]]; then - echo "Invalid or missing \$KERNEL_DEFCONFIG" - exit -fi -if [[ -z "${KERNEL_IMAGE}" ]]; then - echo "Invalid or missing \$KERNEL_IMAGE" - exit -fi -make ARCH=${LINUX_ARCH} ${KERNEL_DEFCONFIG} -make ARCH=${LINUX_ARCH} kvmconfig -./scripts/config --enable CONFIG_DRM_VKMS -make ARCH=${LINUX_ARCH} oldconfig -make ARCH=${LINUX_ARCH} -cd .. -mkdir /weston-virtme -mv linux/arch/${LINUX_ARCH}/boot/${KERNEL_IMAGE} /weston-virtme/ -mv linux/.config /weston-virtme/.config -rm -rf linux - -# Build virtme, a QEMU wrapper: https://github.com/amluto/virtme +# +# To run this we use virtme, a QEMU wrapper: https://github.com/amluto/virtme # # virtme makes our lives easier by abstracting handling of the console, # filesystem, etc, so we can pretend that the VM we execute in is actually @@ -67,12 +44,43 @@ rm -rf linux # results: --script-sh and --script-exec. Unfornutately they are not completely # implemented yet, so we had some trouble to use them and it was becoming # hackery. -# -git clone https://github.com/ezequielgarcia/virtme -cd virtme -git checkout -b snapshot 69e3cb83b3405edc99fcf9611f50012a4f210f78 -./setup.py install -cd .. +if [[ -n "${KERNEL_DEFCONFIG}" ]]; then + git clone --depth=1 --branch=drm-next-2020-06-11-1 https://anongit.freedesktop.org/git/drm/drm.git linux + cd linux + + if [[ "${BUILD_ARCH}" = "x86-64" ]]; then + LINUX_ARCH=x86 + else + echo "Invalid or missing \$BUILD_ARCH" + exit 1 + fi + + if [[ -z "${KERNEL_DEFCONFIG}" ]]; then + echo "Invalid or missing \$KERNEL_DEFCONFIG" + exit + fi + if [[ -z "${KERNEL_IMAGE}" ]]; then + echo "Invalid or missing \$KERNEL_IMAGE" + exit + fi + + make ARCH=${LINUX_ARCH} ${KERNEL_DEFCONFIG} + make ARCH=${LINUX_ARCH} kvmconfig + ./scripts/config --enable CONFIG_DRM_VKMS + make ARCH=${LINUX_ARCH} oldconfig + make ARCH=${LINUX_ARCH} + cd .. + mkdir /weston-virtme + mv linux/arch/${LINUX_ARCH}/boot/${KERNEL_IMAGE} /weston-virtme/ + mv linux/.config /weston-virtme/.config + rm -rf linux + + git clone https://github.com/ezequielgarcia/virtme + cd virtme + git checkout -b snapshot 69e3cb83b3405edc99fcf9611f50012a4f210f78 + ./setup.py install + cd .. +fi # Build and install Wayland; keep this version in sync with our dependency # in meson.build.