From patchwork Tue Jun 9 08:44:21 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Mikanovich X-Patchwork-Id: 5119 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Tue, 09 Jun 2026 10:44:43 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-lf1-f58.google.com (mail-lf1-f58.google.com [209.85.167.58]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 6598igRP003626 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Tue, 9 Jun 2026 10:44:42 +0200 Received: by mail-lf1-f58.google.com with SMTP id 2adb3069b0e04-5aa4736976dsf3671116e87.1 for ; Tue, 09 Jun 2026 01:44:42 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1780994676; cv=pass; d=google.com; s=arc-20240605; b=PAjHNNwbezyWfcCBSrRkJeIPOGZarfD3RrCvs8QvVT1jQkwOiVjKOGZchqqO+Ci9aR gS6UKx3Tov+/k6W9jKYubVuMWlkmadur9YxBP1ST3QXRNkoVL0ZXD7m0/OMOZ7OoIRxF zw5UhGzfhnl6sIdYNsVTl+M4Sz7HJZ4t2IvXnvzj0RcIRscY/wZAusoHzky8c8HRqAQD xe5NRo06wXaPfnmY7GBSTuyDUWsGqiZlu6bWlaIa4WTL1ehdGb+BLdsEWqKxsUiRp07F VpDhT73HtJ1EKLkWz/pOpGQMdbN+ydAKk/ll/w9sQdfKEZqZL94OIJSNPvtVFv6Qd6ng /LlQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:sender:dkim-signature; bh=Jk7mSVibYkyrnneM7Zaa70mKCJzr6wTgdDL7fRALm4Y=; fh=HXVBHRuG9721ER7Vrlf1o7sn9SY/X+WYur4OCALoXd0=; b=RmF0lV+Y80zBCHptwCPM/LkRYnZ4pRrXQp17vCSeKEw8fIAFqpqv0HIWS4tTYDl7sL uNP3j3MAb1gmsY4shYip4AY2nilhM3yHfFlvneh1PNfVtzggVnc/TECHnbCay2OFGqCV dhdQZmg3nrnN3svptEhNMxMIK64NuFomWhrVyxqKcY7q9XCRnnaCmY3MfveZ7kTxaldu mGUjCrruqbCN2hwWZTmPsM0Lb9UpbQAQU4lqdafx470McAnE6FlZsVe1QuYWfcfcbrGp /9SISuXHpWKW5yj8w9v5RaY3YuHGE6MAO6RWv/kFDOj+3RU9wOXHgmPQqmiyUosonn4N HrMQ==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20251104; t=1780994676; x=1781599476; darn=isar-build.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=Jk7mSVibYkyrnneM7Zaa70mKCJzr6wTgdDL7fRALm4Y=; b=amuWnpDNCIwyYSL7DQ5F+MaQ2HDN4rYNwfgmePEC7KBTApjOmjYKDN0xa5rbiUb2WV gEnLszqZgJrITpw7C8kf0ZrqYJCHtNDrvvgP1SeVT6QHqDcD8RMi01p+aQg1C4JSvUWr K+Yqi1RUVenv3ea2ldu8wZiGuobT6lmf6eVO891SwUyh2CXi3bcXlK5VkcDeW+4gxoYq HI231eb8aZxX+MA7njv/FleWicT6aZD4Ah6DUbYmki99GC0dmfajja8rFpF3Z9/NJVQS 9Gn5lTvWKM4KZeqQAXnLR78d4veqsnc8ZELYj7U+KSuGoGGalGcg/SIgTufQsiKyCd0O Mu4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780994676; x=1781599476; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :x-beenthere:x-gm-message-state:sender:from:to:cc:subject:date :message-id:reply-to; bh=Jk7mSVibYkyrnneM7Zaa70mKCJzr6wTgdDL7fRALm4Y=; b=lUrCxqa78rk6WX/ZabpV4O25v5707Ufpgos8mjaI7ChnJWx9XEnM4fZNa0liBCEZa2 +gXwQQD3eA2ri8TJ05Rhf53ZLOZWQLMf6iN8dP8yzpxWfU/xbrl728tqni8Lty49oqtQ sqrIOsVZ/YoYsQ2511ydCZ8HoO7tHLmGm7WWDo5VeFfKfZ8ljMUW/R3AjpcD4JJoqC0r GOSOTWmOngEUXbYU85DLVLtrGPf7SHH3ExG54A2zFPoF1NEp5lHd8kZ9TybfhQ/PZg36 eORjMaTyaOxVz3JjwuLmLgLAj3Y93CpZc0tkUrBvlgg2v/BUSsv60l2qfL52vTGzTjhq 2wlg== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AFNElJ+EXBzuCPoXZskIjy3A2GDN+zg93XkvS96RGcS7TW26jksw7OxZNoTz8vYPC10xT24IK2qYHZg=@isar-build.org X-Gm-Message-State: AOJu0YwySt5zAhnvACW2BBboxb50zKduZvJiu+oLCKmLqOePHU5FeyA9 MFBoywrYsUzaF4+EfumwzHZsn2Z5s0D2i+1RdX34cGm0nj/OG7n2dllw X-Received: by 2002:a05:6512:1096:b0:5aa:8823:e30e with SMTP id 2adb3069b0e04-5acf91501afmr387990e87.48.1780994675630; Tue, 09 Jun 2026 01:44:35 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com; h="AX0PUUeUxhnm+3MfaW2BSwIlCc2h0GdHRqZatZri8Pqb1jw4zQ==" Received: by 2002:a05:651c:438a:10b0:38d:daf1:4df6 with SMTP id 38308e7fff4ca-396bc6cc7f7ls10795791fa.2.-pod-prod-01-eu; Tue, 09 Jun 2026 01:44:33 -0700 (PDT) X-Received: by 2002:a05:651c:220e:b0:396:8f6c:770d with SMTP id 38308e7fff4ca-397f76b9626mr4760181fa.4.1780994673455; Tue, 09 Jun 2026 01:44:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1780994673; cv=none; d=google.com; s=arc-20240605; b=hF4kA+Xw2sY7+DrqIg0d7434O9ym/L0MjA2e8dHAFNDWBLEoxmue10pQierYImQ+kB DlM4+yYox+CPys7wuJZb617wiORO03Alpu2nLp6ugfLOHCt1zI+H1Z38NnUOk0vaqp5V sQMlqf39eJyVYNphydxMQ1llvI5GMDcqZCTg1OFASYeonDoTRU482qEKpNHDEujKHapb /kTSvQs/Lcpo9K5JU3Jp4CLdVjaRbDEjmnDvNeZN+njCy6i2xmlceHONMRgyU6SQznGr hw34lAfiSQ8+NZTCtZqYERi6d7HXYJTAcRF6fropaDzqVt1M/ki86CVVdVRhHE4m1o7b ItQA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from; bh=C/hzrCXVmbx9iP1ejM6pq1UDHITyfw/TtVbR10V60U8=; fh=/h9QQkzJ8EboVkWg45aWwpaUro6WMavIVd2OhN45RtE=; b=MOIrGeolwb4fDaBKqufP29soqsI74I2uaATdhHyUcOMfMDBHebRNOwsgfirQGxjfnp cPXlD4S7N4qztBswelf6jbVmxUx/UPW0eOrqLFyRfImiikvmS8ldRdJey24uIXd6sAKx Te+fJMQdG+aLSKNcwiaeIjGhGUUlL9wtR5ss+XmDfkWsSCebwWn5qQbynkwcv/7mo02I Hna2+lzqDVW3BwgE2IABBaTtdfg0RR1u95lDY9xsu0B73pVK9sa3SN78PGqiGm4JGM9b 9n/8Yq3vRFZAIkkpgCH3aOXpRlo2g4vtSsV0XgK4/qIGkYJ0c1ppdkvQzh7BoWSJUGj/ Z1Ew==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id 38308e7fff4ca-396ac236adesi3631061fa.7.2026.06.09.01.44.33 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 09 Jun 2026 01:44:33 -0700 (PDT) Received-SPF: pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Received: from user-B660.promwad.corp ([159.148.83.123]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 6598iTgI003564 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 9 Jun 2026 10:44:32 +0200 From: Anton Mikanovich To: isar-users@googlegroups.com Cc: Anton Mikanovich Subject: [PATCH v11 2/3] meta: Move kernel artifacts deployment from image recipe Date: Tue, 9 Jun 2026 11:44:21 +0300 Message-Id: <20260609084422.3948645-3-amikan@ilbers.de> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20260609084422.3948645-1-amikan@ilbers.de> References: <20260609084422.3948645-1-amikan@ilbers.de> MIME-Version: 1.0 X-Spam-Status: No, score=-4.6 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2, RCVD_IN_RP_CERTIFIED,RCVD_IN_RP_RNBL,RCVD_IN_RP_SAFE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on shymkent.ilbers.de X-Original-Sender: amikan@ilbers.de X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of amikan@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=amikan@ilbers.de Precedence: list Mailing-list: list isar-users@googlegroups.com; contact isar-users+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: isar-users@googlegroups.com X-Google-Group-Id: 914930254986 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= Task do_copy_boot_files deploys DTB files into the same location for different images (e.g., isar-image-base and isar-image-ci). This causes a build error. do_copy_boot_files is called once for every image recipe while dtb files belong to the kernel which is the same for both images. Performing dtb deployment once for the same kernel solves the issue. Introduce universal `kernel-deploy` bbclass responsible for extracting the DTBs and kernel from the linux-image package and deploying them. For the distro kernel type its package is now installed into sbuild chroot. After that, deb which contains vmlinu[xz] file is extracted from the apt cache. Fixes test_dtb_deploy_images testcase: ERROR: mc:phyboard-mira-bookworm:isar-image-base-1.0-r0 do_copy_boot_files: The recipe isar-image-base is trying to install files into a shared area when those files already exist. Those files and their manifest location are: build/tmp/deploy/images/phyboard-mira/imx6q-phytec-mira-rdk-nand.dtb (not matched to any task) Please verify which recipe should provide the above files. Signed-off-by: Anton Mikanovich --- RECIPE-API-CHANGELOG.md | 13 ++++++ meta/classes-recipe/image.bbclass | 39 +++++++++-------- meta/classes-recipe/linux-deploy.bbclass | 46 ++++++++++++++++++++ meta/classes-recipe/linux-kernel.bbclass | 3 ++ meta/recipes-kernel/linux/files/getkernel.sh | 40 +++++++++++++++++ meta/recipes-kernel/linux/files/rules.tmpl | 12 +++++ meta/recipes-kernel/linux/linux-distro.bb | 27 ++++++++++++ testsuite/citest.py | 2 - 8 files changed, 161 insertions(+), 21 deletions(-) create mode 100644 meta/classes-recipe/linux-deploy.bbclass create mode 100755 meta/recipes-kernel/linux/files/getkernel.sh create mode 100644 meta/recipes-kernel/linux/files/rules.tmpl diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md index a6ded089..ef9dce00 100644 --- a/RECIPE-API-CHANGELOG.md +++ b/RECIPE-API-CHANGELOG.md @@ -1102,3 +1102,16 @@ To prevent this new path is separated also by distro and kernel values. This change will influence on build artifacts location and should be taken into account by downstreams. + +### Move kernel and DTBs deployment from image recipe to kernel one + +To prevent parallel conflicting artifacts deployment from the same kernel +used by different images, move original deployment logic from +do_copy_boot_files() task of the image recipe to the kernel recipe. As we have +two types of kernel (distro and self build), both are affected. With this +aproach the deployment of any kernel artifacts will be performed only once per +kernel. + +Also allow using different kernels for one machine and distro without +overwritting by storing kernel artifacts in kernel-{KERNEL_NAME} subdirectory +of DEPLOY_DIR_IMAGE. Previous image linking names are kept by symlinks. diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass index 26a4ec06..5f34cd4f 100644 --- a/meta/classes-recipe/image.bbclass +++ b/meta/classes-recipe/image.bbclass @@ -1,5 +1,7 @@ # This software is a part of Isar. -# Copyright (C) 2015-2017 ilbers GmbH +# Copyright (C) 2015-2026 ilbers GmbH +# +# SPDX-License-Identifier: MIT # Make workdir and stamps machine-specific without changing common PN target WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}-${MACHINE}/${PV}-${PR}" @@ -9,7 +11,6 @@ STAMPCLEAN = "${STAMPS_DIR}/${DISTRO}-${DISTRO_ARCH}/${PN}-${MACHINE}/*-*" # Sstate also needs to be machine-specific SSTATE_MANIFESTS = "${TMPDIR}/sstate-control/${MACHINE}-${DISTRO}-${DISTRO_ARCH}" -SSTATETASKS += "do_copy_boot_files" IMAGE_INSTALL ?= "" IMAGE_FSTYPES ?= "ext4" @@ -381,37 +382,37 @@ INITRD_IMG = "${PP_DEPLOY}/${INITRD_DEPLOY_FILE}" # only one dtb file supported, pick the first DTB_IMG = "${PP_DEPLOY}/${@(d.getVar('DTB_FILES').split() or [''])[0]}" -do_copy_boot_files[cleandirs] += "${DEPLOYDIR}" -do_copy_boot_files[sstate-inputdirs] = "${DEPLOYDIR}" -do_copy_boot_files[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}" -do_copy_boot_files[network] = "${TASK_USE_SUDO}" +KERNEL_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}/kernel-${KERNEL_NAME}" +KERNEL_WILDCARD = "${@ 'vmlinu[xz]*' if (p := d.getVar('KERNEL_FILE')) == 'vmlinux' else p+'*'}" + +python() { + if d.getVar('KERNEL_NAME'): + pn = d.getVar('KERNEL_IMAGE_PKG') or '' + task = 'do_deploy_kernel_%s' % (d.getVar('MACHINE').replace('-','_') or '') + d.appendVarFlag("do_copy_boot_files", "depends", f"{pn}:{task}") +} + +# Associate kernel with image by symlinks +do_copy_boot_files[dirs] += "${DEPLOY_DIR_IMAGE}" +do_copy_boot_files[file-checksums] += "${KERNEL_DEPLOY_DIR}/${KERNEL_WILDCARD}:True" do_copy_boot_files() { - kernel="$(realpath -q '${IMAGE_ROOTFS}'/vmlinu[xz])" - if [ ! -f "$kernel" ]; then - kernel="$(realpath -q '${IMAGE_ROOTFS}'/boot/vmlinu[xz])" - fi + kernel="$(realpath -mq '${KERNEL_DEPLOY_DIR}/'${KERNEL_WILDCARD} | head -n1)" if [ -f "$kernel" ]; then - sudo cat "$kernel" > "${DEPLOYDIR}/${KERNEL_IMAGE}" + ln -sfr "$kernel" "${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE}" fi for file in ${DTB_FILES}; do - dtb="$(find '${IMAGE_ROOTFS}/usr/lib' -type f \ - -iwholename '*linux-image-*/'${file} | head -1)" + dtb="${KERNEL_DEPLOY_DIR}/$(basename ${file})" if [ -z "$dtb" -o ! -e "$dtb" ]; then die "${file} not found" fi - cp -f "$dtb" "${DEPLOYDIR}/" + ln -sfr "$dtb" "${DEPLOY_DIR_IMAGE}/$(basename $dtb)" done } addtask copy_boot_files before do_rootfs_postprocess after do_rootfs_install -python do_copy_boot_files_setscene () { - sstate_setscene(d) -} -addtask do_copy_boot_files_setscene - python do_image_tools() { """Virtual task""" pass diff --git a/meta/classes-recipe/linux-deploy.bbclass b/meta/classes-recipe/linux-deploy.bbclass new file mode 100644 index 00000000..cb29065d --- /dev/null +++ b/meta/classes-recipe/linux-deploy.bbclass @@ -0,0 +1,46 @@ +# This software is a part of Isar. +# Copyright (C) 2026 ilbers GmbH +# +# SPDX-License-Identifier: MIT + +DEPLOYDIR = "${WORKDIR}/deploy_${@ d.getVar('MACHINE').replace('-','_') or ''}" +KERNEL_DEPLOY_TASKNAME ?= "do_deploy_kernel_${@ d.getVar('MACHINE').replace('-','_') or ''}" +SSTATETASKS += "${KERNEL_DEPLOY_TASKNAME}" + +python () { + kernel_name = d.getVar('KERNEL_NAME_PROVIDED') or '' + if "linux-image-"+kernel_name in d.getVar('PROVIDES'): + task = d.getVar('KERNEL_DEPLOY_TASKNAME') + d.setVar(task, d.expand('kernel_deploy')) + d.setVarFlag(task, 'func', '1') + d.setVarFlag(task, 'sstate-inputdirs', d.expand('${DEPLOYDIR}')) + d.setVarFlag(task, 'sstate-outputdirs', d.expand('${KERNEL_DEPLOY_DIR}')) + d.appendVarFlag(task, 'cleandirs', d.expand('${DEPLOYDIR}')) + d.appendVarFlag(task, 'stamp-extra-info', d.expand('${MACHINE}')) + bb.build.addtask(task, 'do_build', 'do_dpkg_build', d) +} + +KERNEL_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}/kernel-${KERNEL_NAME_PROVIDED}" + +KERNEL_LOCATION ?= "./boot" +KERNEL_DEB ?= "linux-image-${KERNEL_NAME_PROVIDED}_${CHANGELOG_V}_${DISTRO_ARCH}.deb" + +# Take care the case when requested kernel format doesn't match distro one +DEPLOY_WILDCARDS = "'${KERNEL_LOCATION}/${@ 'vmlinu[xz]*' if (p := d.getVar('KERNEL_FILE')) == 'vmlinux' else p+'*'}'" +DEPLOY_WILDCARDS += "${@(' '.join("'*%s'" % p for p in (d.getVar('DTB_FILES') or '').split()))}" + +kernel_deploy() { + case "${PROVIDES}" in + *linux-image-${KERNEL_NAME_PROVIDED}*) + dpkg --fsys-tarfile ${WORKDIR}/${KERNEL_DEB} | \ + tar xvf - -C "${DEPLOYDIR}" \ + --transform='s|^.*/||' \ + --wildcards ${DEPLOY_WILDCARDS} + ;; + esac +} + +python do_copy_boot_files_setscene () { + sstate_setscene(d) +} +addtask do_copy_boot_files_setscene diff --git a/meta/classes-recipe/linux-kernel.bbclass b/meta/classes-recipe/linux-kernel.bbclass index e4ae356d..32d10f68 100644 --- a/meta/classes-recipe/linux-kernel.bbclass +++ b/meta/classes-recipe/linux-kernel.bbclass @@ -3,6 +3,7 @@ # This software is a part of Isar. # Copyright (c) Siemens AG, 2022 # Copyright (c) Mentor Graphics, a Siemens business, 2022 +# Copyright (C) 2022-2026 ilbers GmbH # # SPDX-License-Identifier: MIT @@ -337,3 +338,5 @@ do_dpkg_source:prepend() { dpkg_configure_kernel get_localversion_auto } + +inherit linux-deploy diff --git a/meta/recipes-kernel/linux/files/getkernel.sh b/meta/recipes-kernel/linux/files/getkernel.sh new file mode 100755 index 00000000..7070dbc0 --- /dev/null +++ b/meta/recipes-kernel/linux/files/getkernel.sh @@ -0,0 +1,40 @@ +#!/bin/bash -e + +deb_cache="/var/cache/apt/archives" + +paths="/vmlinu[xz] /boot/vmlinu[xz]" +if [ -n "$1" ]; then + paths="/$1 /boot/$1 $paths" +fi + +# Lookup for the kernel file +for path in ${paths}; do + kernel="$(realpath -q ${path})" + if [ -f "${kernel}" ]; then + break + fi +done + +# Obtain package name for the kernel file +pkg="$(dpkg -S ${kernel} | cut -d':' -f1)" +if [ -z "${pkg}" ]; then + >&2 echo "No package providing ${kernel} found!" + exit 1 +fi + +# Query for deb filename +deb_name=$(dpkg-query -W -f='${Package}_${Version}_${Architecture}.deb\n' ${pkg}) + +# Take care about special symbols +deb_name="${deb_name//%/%25}" +deb_name="${deb_name//:/%3a}" +deb_name="${deb_name//~/%7e}" + +# Search for deb in cache dir +deb_path="$(find ${deb_cache} -name "${deb_name}" 2>/dev/null | head -n1)" +if [ ! -f "${deb_path}" ]; then + >&2 echo "Package ${deb_name} not found in ${deb_cache}!" + exit 1 +fi + +echo "${deb_path}" diff --git a/meta/recipes-kernel/linux/files/rules.tmpl b/meta/recipes-kernel/linux/files/rules.tmpl new file mode 100644 index 00000000..69d79bb5 --- /dev/null +++ b/meta/recipes-kernel/linux/files/rules.tmpl @@ -0,0 +1,12 @@ +#!/usr/bin/make -f + +KERNEL_PATH := $(shell ./debian/getkernel.sh ${KERNEL_FILE}) +DEB_NAME := ${KERNEL_DEB} + +binary: + @[ -z "$(KERNEL_PATH)" ] && { echo "Kernel not found!"; exit 1; } || true + cp "$(KERNEL_PATH)" ../$(DEB_NAME) + echo "$(DEB_NAME) misc optional" > debian/files + +%: + true diff --git a/meta/recipes-kernel/linux/linux-distro.bb b/meta/recipes-kernel/linux/linux-distro.bb index 8fc1bcb7..47fe3fb4 100644 --- a/meta/recipes-kernel/linux/linux-distro.bb +++ b/meta/recipes-kernel/linux/linux-distro.bb @@ -2,6 +2,7 @@ # # This software is a part of Isar. # Copyright (c) Siemens AG, 2018 +# Copyright (C) 2022-2026 ilbers GmbH # # SPDX-License-Identifier: MIT @@ -27,3 +28,29 @@ python() { } inherit multiarch +inherit dpkg +inherit linux-deploy + +# Always use target arch for kernel package lookup +ISAR_CROSS_COMPILE = "0" + +MAINTAINER = "isar-users " + +PN .= "-${KERNEL_NAME}" +KERNEL_NAME_PROVIDED ??= "${KERNEL_NAME}" +DEBIAN_BUILD_DEPENDS ?= "${@d.getVar('KERNEL_IMAGE_PKG') or ('linux-image-' + (d.getVar('KERNEL_NAME') or ''))}" + +FILESPATH:prepend = "${LAYERDIR_core}/recipes-kernel/linux/files:" + +SRC_URI = "file://getkernel.sh \ + file://rules.tmpl" + +TEMPLATE_VARS += "KERNEL_FILE KERNEL_DEB" +TEMPLATE_FILES = "rules.tmpl" + +do_prepare_build[cleandirs] += "${S}/debian" +do_prepare_build() { + deb_debianize + cp "${WORKDIR}/getkernel.sh" "${S}/debian/" +} +do_deploy_deb[noexec] = "1" diff --git a/testsuite/citest.py b/testsuite/citest.py index 7d666880..5aa3e799 100644 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -740,8 +740,6 @@ class DtbDeployTest(CIBaseTest): self.init() try: self.perform_build_test(targets, image_install='') - except exceptions.TestFail: - self.cancel('KFAIL') finally: self.move_in_build_dir('tmp', 'tmp_dtbdeploy')