From 218fbf8097be101a43f8d18df3d4092dc527d82e Mon Sep 17 00:00:00 2001 From: Jose Quaresma Date: Tue, 4 Aug 2026 23:45:21 +0000 Subject: [PATCH 1/2] crash: Fix cross compilation for 32-bit arm The upstream crash Makefile CONF_TARGET_ARCH mapping (used when CROSS_COMPILE is set) enumerates most of OE supported arches but omits 32-bit arm. Building with CROSS_COMPILE=arm-* therefore aborts at Makefile parse time: Makefile:75: *** The current Arch(arm) does not support cross compilation. Stop. ARM is already a valid crash target (defs.h/configure.c), so add a patch mapping the normalized "arm" arch to CONF_TARGET_ARCH=ARM like every other supported arch. Verified by cross building crash for qemuarm (arm-yoe-linux-gnueabi-): Signed-off-by: Khem Raj Cc: Ricardo Salveti Backport from meta-oe 63a529202 Signed-off-by: Jose Quaresma Signed-off-by: Ricardo Salveti --- ...pport-cross-compiling-for-32-bit-arm.patch | 36 +++++++++++++++++++ .../recipes-kernel/crash/crash_9.0.2.bbappend | 5 +++ 2 files changed, 41 insertions(+) create mode 100644 dynamic-layers/openembedded-layer/recipes-kernel/crash/crash/0001-Makefile-support-cross-compiling-for-32-bit-arm.patch create mode 100644 dynamic-layers/openembedded-layer/recipes-kernel/crash/crash_9.0.2.bbappend diff --git a/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash/0001-Makefile-support-cross-compiling-for-32-bit-arm.patch b/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash/0001-Makefile-support-cross-compiling-for-32-bit-arm.patch new file mode 100644 index 000000000..102674000 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash/0001-Makefile-support-cross-compiling-for-32-bit-arm.patch @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 30 Jun 2026 00:00:00 +0000 +Subject: [PATCH] Makefile: support cross compiling for 32-bit arm + +The CONF_TARGET_ARCH cross-compilation mapping enumerates aarch64, +s390x, powerpc64, ppc64le, alpha, i386, mips, sparc64 and riscv64 but +omits 32-bit arm. As a result, building with CROSS_COMPILE=arm-* (e.g. +arm-poky-linux-gnueabi-) aborts at Makefile parse time with: + + Makefile:75: *** The current Arch(arm) does not support cross compilation. Stop. + +ARM is already a valid crash target (defs.h/configure.c), so map the +normalized "arm" arch to CONF_TARGET_ARCH=ARM like every other arch. + +Upstream-Status: Pending +Signed-off-by: Khem Raj +--- + Makefile | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/Makefile b/Makefile +index 1111111..2222222 100644 +--- a/Makefile ++++ b/Makefile +@@ -55,6 +55,8 @@ ifeq (${ARCH}, x86_64) + CONF_TARGET_ARCH := X86_64 + else ifeq (${ARCH}, aarch64) + CONF_TARGET_ARCH := ARM64 ++else ifeq (${ARCH}, arm) ++CONF_TARGET_ARCH := ARM + else ifeq (${ARCH}, s390x) + CONF_TARGET_ARCH := S390X + else ifeq (${ARCH}, powerpc64) +-- +2.43.0 diff --git a/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash_9.0.2.bbappend b/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash_9.0.2.bbappend new file mode 100644 index 000000000..3edc4fb50 --- /dev/null +++ b/dynamic-layers/openembedded-layer/recipes-kernel/crash/crash_9.0.2.bbappend @@ -0,0 +1,5 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" + +SRC_URI:append:qcom = " \ + file://0001-Makefile-support-cross-compiling-for-32-bit-arm.patch \ +" From 29ccd3e3717b6fbcd59b3fe0f30bfd702a3dbf54 Mon Sep 17 00:00:00 2001 From: Ricardo Salveti Date: Tue, 4 Aug 2026 23:45:28 +0000 Subject: [PATCH 2/2] ci: re-enable world build for qcom-armv7a Commit bf4b626d19d5 ("ci: build world only once per machine and distro family") gated the world build to the nodistro and qcom-distro-catchall distro families on the default kernel. This assumes every machine has a qcom-distro-catchall entry to represent the qcom-distro family in the world coverage, but qcom-armv7a does not: its only qcom-distro-family matrix entry is qcom-armv7a/qcom-distro (building qcom-multimedia-image via ci/qcom-distro-multimedia-image.yml). As a result qcom-armv7a lost all world coverage that pulls in meta-openembedded. Its surviving world build (qcom-armv7a/nodistro) uses the base.yml nodistro configuration, which does not include meta-oe, so recipes only reachable through meta-oe are no longer world-built for 32-bit arm. This masked a real breakage: crash 9.0.2 (bumped in #2750, thirteen days after bf4b626) fails to cross compile for 32-bit arm, but it is only pulled into the armv7 graph via meta-qcom's initramfs-test-full-image, which is only built as part of a world build. meta-qcom CI stayed green while meta-qcom-distro CI (which does run world on armv7) went red on unrelated PRs. Treat qcom-armv7a/qcom-distro as the distro-family world build for that machine so meta-oe recipes are world-built for 32-bit arm again, while keeping the single-world-build-per-family reduction for every other machine. Assisted-by: Claude Code:claude-opus-4-8 Signed-off-by: Ricardo Salveti --- .github/workflows/build-yocto.yml | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-yocto.yml b/.github/workflows/build-yocto.yml index 36a450813..af7ecc1ba 100644 --- a/.github/workflows/build-yocto.yml +++ b/.github/workflows/build-yocto.yml @@ -197,8 +197,10 @@ jobs: # coverage: nodistro (including the nogl variant) covers the plain OE # configuration and qcom-distro-catchall enables a superset of the # qcom-distro DISTRO_FEATURES, so the remaining distro and kernel - # combinations only repeat already-covered world builds. - world: ${{ (startsWith(matrix.distro.name, 'nodistro') || matrix.distro.name == 'qcom-distro-catchall') && matrix.kernel.type == 'default' }} + # combinations only repeat already-covered world builds. qcom-armv7a has + # no qcom-distro-catchall variant, so its qcom-distro build is the + # distro-family world build for that machine. + world: ${{ (startsWith(matrix.distro.name, 'nodistro') || matrix.distro.name == 'qcom-distro-catchall' || (matrix.machine == 'qcom-armv7a' && matrix.distro.name == 'qcom-distro')) && matrix.kernel.type == 'default' }} machine: ${{matrix.machine}} distro_yaml: ${{matrix.distro.yamlfile}} distro_name: ${{matrix.distro.name}} @@ -456,8 +458,10 @@ jobs: # coverage: nodistro (including the nogl variant) covers the plain OE # configuration and qcom-distro-catchall enables a superset of the # qcom-distro DISTRO_FEATURES, so the remaining distro and kernel - # combinations only repeat already-covered world builds. - world: ${{ (startsWith(matrix.distro.name, 'nodistro') || matrix.distro.name == 'qcom-distro-catchall') && matrix.kernel.type == 'default' }} + # combinations only repeat already-covered world builds. qcom-armv7a has + # no qcom-distro-catchall variant, so its qcom-distro build is the + # distro-family world build for that machine. + world: ${{ (startsWith(matrix.distro.name, 'nodistro') || matrix.distro.name == 'qcom-distro-catchall' || (matrix.machine == 'qcom-armv7a' && matrix.distro.name == 'qcom-distro')) && matrix.kernel.type == 'default' }} machine: ${{matrix.machine}} distro_yaml: ${{matrix.distro.yamlfile}} distro_name: ${{matrix.distro.name}}