diff --git a/tools/ci/gitlab-ci/arm_cross_compile.yml b/tools/ci/gitlab-ci/arm_cross_compile.yml new file mode 100644 index 0000000000000000000000000000000000000000..b021f87a1868da3b6c40711f19a21ff2ce425154 --- /dev/null +++ b/tools/ci/gitlab-ci/arm_cross_compile.yml @@ -0,0 +1,5 @@ +.use-debian/arm64_build: + extends: + - .use-debian/x86_64_build + needs: + - job: debian/x86_64_build diff --git a/tools/ci/gitlab-ci/arm_native_compile.yml b/tools/ci/gitlab-ci/arm_native_compile.yml new file mode 100644 index 0000000000000000000000000000000000000000..c77d97123d3e1e1971da6ea058c85d6f312c492b --- /dev/null +++ b/tools/ci/gitlab-ci/arm_native_compile.yml @@ -0,0 +1,16 @@ +debian/arm64_build: + extends: + - .debian-arm64 + - .fdo.container-build@debian + tags: + - aarch64 + stage: container + +.use-debian/arm64_build: + tags: + - aarch64 + extends: + - .debian-arm64 + - .fdo.suffixed-image@debian + needs: + - job: debian/arm64_build diff --git a/tools/ci/gitlab-ci/build.yml b/tools/ci/gitlab-ci/build.yml index 1b466772f729ba7bd4819b2e217ccf9add91155c..7591ee43539e136498626a174123042d69b3f6ea 100644 --- a/tools/ci/gitlab-ci/build.yml +++ b/tools/ci/gitlab-ci/build.yml @@ -16,16 +16,19 @@ build:x86_64: extends: - .use-debian/x86_64_build - .build-common + - .x86_64-config build:arm64: extends: - .use-debian/arm64_build - .build-common + - .arm64-config build:arm32: extends: - - .use-debian/arm32_build + - .use-debian/arm64_build - .build-common + - .arm32-config build-docs: extends: diff --git a/tools/ci/gitlab-ci/ci-scripts/ici-functions.sh b/tools/ci/gitlab-ci/ci-scripts/ici-functions.sh index df133b4d001039b807e32f8100e48b11c55442e0..6b769be4de834493819e842f151448f177db7bfb 100644 --- a/tools/ci/gitlab-ci/ci-scripts/ici-functions.sh +++ b/tools/ci/gitlab-ci/ci-scripts/ici-functions.sh @@ -37,8 +37,10 @@ ici_prepare_build() { GCC_ARCH="x86_64-linux-gnu" fi - # do not set ARCH and CROSS_COMPILE if KCI_KERNEL_ARCH is not set, useful for local run - if [ -n "$KCI_KERNEL_ARCH" ]; then + # Set ARCH and CROSS_COMPILE if: + # - The kernel architecture is "arm" (default cross-compilation case), or + # - The CI server host is not "gitlab.freedesktop.org" + if [[ "$KCI_KERNEL_ARCH" = "arm" ]] || [[ "$CI_SERVER_HOST" != "gitlab.freedesktop.org" ]]; then export ARCH=${KCI_KERNEL_ARCH} export CROSS_COMPILE="${GCC_ARCH}-" fi diff --git a/tools/ci/gitlab-ci/container.yml b/tools/ci/gitlab-ci/container.yml index efe15dbfd29f9a0ce51b4e5e24e35de79f11a5fc..16b42f9aec2b0e7305afa1eee4baf19436d5cb4a 100644 --- a/tools/ci/gitlab-ci/container.yml +++ b/tools/ci/gitlab-ci/container.yml @@ -2,6 +2,14 @@ # # Copyright (C) 2024 Collabora, Helen Koike <helen.koike@collabora.com> +include: + - local: 'tools/ci/gitlab-ci/arm_native_compile.yml' + rules: + - if: '$CI_SERVER_HOST == "gitlab.freedesktop.org"' + - local: 'tools/ci/gitlab-ci/arm_cross_compile.yml' + rules: + - if: '$CI_SERVER_HOST != "gitlab.freedesktop.org"' + variables: FDO_REPO_SUFFIX: "$BUILD_OS/$KCI_BUILD_ARCH" FDO_DISTRIBUTION_TAG: "2024-12-24-debian" @@ -25,45 +33,40 @@ variables: latexmk librsvg2-bin texlive-lang-chinese texlive-xetex meson libdrm-dev curl virtme-ng udev -.debian-x86_64: - extends: - - .debian +.x86_64-config: variables: - KCI_BUILD_ARCH: "x86-64" KCI_KERNEL_ARCH: "x86_64" KCI_DEFCONFIG: "x86_64_defconfig" KCI_KERNEL_IMAGE_NAME: "bzImage" -.debian-arm64: - extends: - - .debian +.arm64-config: variables: - KCI_BUILD_ARCH: "arm64" KCI_KERNEL_ARCH: "arm64" KCI_DEFCONFIG: "defconfig" KCI_KERNEL_IMAGE_NAME: "Image" -.debian-arm32: - extends: - - .debian +.arm32-config: variables: - KCI_BUILD_ARCH: "arm64" KCI_KERNEL_ARCH: "arm" KCI_DEFCONFIG: "multi_v7_defconfig" KCI_KERNEL_IMAGE_NAME: "zImage" -debian/x86_64_build: +.debian-x86_64: extends: - - .debian-x86_64 - - .fdo.container-build@debian - stage: container + - .debian + variables: + KCI_BUILD_ARCH: "x86-64" -debian/arm64_build: +.debian-arm64: + extends: + - .debian + variables: + KCI_BUILD_ARCH: "arm64" + +debian/x86_64_build: extends: - - .debian-arm64 + - .debian-x86_64 - .fdo.container-build@debian - tags: - - aarch64 stage: container .use-debian/x86_64_build: @@ -72,21 +75,3 @@ debian/arm64_build: - .fdo.suffixed-image@debian needs: - job: debian/x86_64_build - -.use-debian/arm64_build: - tags: - - aarch64 - extends: - - .debian-arm64 - - .fdo.suffixed-image@debian - needs: - - job: debian/arm64_build - -.use-debian/arm32_build: - tags: - - aarch64 - extends: - - .debian-arm32 - - .fdo.suffixed-image@debian - needs: - - job: debian/arm64_build diff --git a/tools/ci/gitlab-ci/gitlab-ci.yml b/tools/ci/gitlab-ci/gitlab-ci.yml index eb045067cf13f7b091fcbd05c7ec70f7de835365..d2679d9929de14dfeb81064ef1f3334a46581577 100644 --- a/tools/ci/gitlab-ci/gitlab-ci.yml +++ b/tools/ci/gitlab-ci/gitlab-ci.yml @@ -36,6 +36,9 @@ variables: SMATCH_DB_DIR: /smatch/smatch_data # exit code of bash script on `script` will be the exit code of the job FF_USE_NEW_BASH_EVAL_STRATEGY: "true" + KCI_SCENARIO: + description: Set to any non-empty value to disable scenarios + value: "" default: artifacts: diff --git a/tools/ci/gitlab-ci/scenarios/drm/drm.yml b/tools/ci/gitlab-ci/scenarios/drm/drm.yml index bca0cd403d8fcc75179037670783221942b724d8..5db56f7c4332e039601cca8e33c7525ed69199e2 100644 --- a/tools/ci/gitlab-ci/scenarios/drm/drm.yml +++ b/tools/ci/gitlab-ci/scenarios/drm/drm.yml @@ -12,40 +12,31 @@ build:x86_64: variables: KCI_KCONFIGS_ENABLE: "DRM_VKMS DRM_BOCHS" -# Build IGT for testing on devices -# TODO: Fix cross compilation issue -.igt:arm32: - extends: - - .use-debian/arm64_build - - build:arm32 +.igt: + stage: build script: - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash ./tools/ci/gitlab-ci/scenarios/drm/build-igt.sh - stage: build artifacts: when: always paths: - artifacts/ +# Build IGT for testing on devices +# TODO: Fix cross compilation issue +.igt:arm32: + extends: + - .arm32-config + - .use-debian/arm64_build + - .igt + igt:arm64: extends: + - .arm64-config - .use-debian/arm64_build - - build:arm64 - script: - - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash ./tools/ci/gitlab-ci/scenarios/drm/build-igt.sh - stage: build - artifacts: - when: always - paths: - - artifacts/ + - .igt igt:x86_64: extends: + - .x86_64-config - .use-debian/x86_64_build - - build:x86_64 - script: - - FDO_CI_CONCURRENT=${FDO_CI_CONCURRENT} bash ./tools/ci/gitlab-ci/scenarios/drm/build-igt.sh - stage: build - artifacts: - when: always - paths: - - artifacts/ + - .igt diff --git a/tools/ci/gitlab-ci/static-checks.yml b/tools/ci/gitlab-ci/static-checks.yml index 7b611b047d9708fe818a7c10075ea8941d007bc7..656802fd8fb6612c03b4db07eaf506333165675a 100644 --- a/tools/ci/gitlab-ci/static-checks.yml +++ b/tools/ci/gitlab-ci/static-checks.yml @@ -6,6 +6,7 @@ stage: static-checks extends: - .use-debian/x86_64_build + - .x86_64-config checkpatch: extends: .static-checks