From patchwork Wed Apr 1 10:49:07 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhihang Wei X-Patchwork-Id: 5001 Return-Path: Received: from shymkent.ilbers.de ([unix socket]) by shymkent (Cyrus 2.5.10-Debian-2.5.10-3+deb9u2) with LMTPA; Wed, 01 Apr 2026 12:49:20 +0200 X-Sieve: CMU Sieve 2.4 Received: from mail-wm1-f64.google.com (mail-wm1-f64.google.com [209.85.128.64]) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPS id 631AnJ4t017456 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 1 Apr 2026 12:49:19 +0200 Received: by mail-wm1-f64.google.com with SMTP id 5b1f17b1804b1-483786a09b1sf78944625e9.3 for ; Wed, 01 Apr 2026 03:49:19 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1775040553; cv=pass; d=google.com; s=arc-20240605; b=fWu+wjoZQpQ+kdeecacO3lIXlTESPUsGJKM/10GXZkaBqMi/OZ6aD3s3kMRSc/lVMM PCQ520DeR562c3bbrZK+tOCNun2kykDf+8ISq7E4PDsaE8lbifswYr48rX1JveQVMUhZ 9+8Dl6SHiFpVQC76gQ3o5YhjOPS6m+xhduvsxXS9Xknta8TJLEvcdHkeCJVWDUJ3gbv7 qvuxARTfUPNIRp+G1fn9/Eteg37lf2ASG88PdDZqmQezU43Vckjuudy+qsU6uoh1Uoli 6EVU362cCXNR5sJqYKXsav7DGQ6o4iwwEHPr4uI0Cq/+m/74s5+lpIMlFc3D//rIw6F8 Di1w== 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:to:from:sender:dkim-signature; bh=ehPsTk3yAKOdf8kaQkmktQPVd+HSeuzhH93IjURmjf0=; fh=jQZ32MhZw5L2GO6CTONPv07iqF5hH7MsF0asyk/kD2E=; b=SUMdvm26EvkjFzbNAKmpuEAj1JEYn64J6MSwIoum9WY9XNRvW/xqdUdtN4puqIChLH Gvvp3/RqiMda/RiEkI4zKgS3GhC08n3L12uSesPZvYBze9rOwQibjZFyeFz+Y1X3z90N 2mf3q85f+qeYI0epCyMj2O8wV6/k8XJdmZrdz2XSqVd334y9MOqnmc3YE/+qPL4BVcsJ Z9RZe0izusAHTDPNbFhby65DqMV4GZBvbCUm4J8pUIRzlcyl7KLxsBu4bpd2oE5VF8JC Czi/s75fvQgWkrYCjih0aTul+g07YHXQ17O6F4GU+dpGsokcfaZaQozHBLNZorlDEzQ2 eu1g==; darn=isar-build.org ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=pass (google.com: domain of wzh@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=wzh@ilbers.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20251104; t=1775040553; x=1775645353; 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:to:from:sender:from:to:cc:subject:date:message-id :reply-to; bh=ehPsTk3yAKOdf8kaQkmktQPVd+HSeuzhH93IjURmjf0=; b=b+a3DvmBxqiVlPDa6zzxt5g8rR4Skm00kyi0mj7qyF8xClnEX/4IJ60oc98IqLNJAO hczB0r6fVTsnQFH5y36yCT1JQuJ0Sn2cbh0XYuTEUMTe9P2ytCW32gxk+pTrEbSVRVKH 3CKUbW/LRPUr/My2I5fr5gVeLl7VyMMiiXByKsGQf1BGDZHmrHiEMaTm5vqwut18y7Vk 7eWdfLiZVWZQNivx1S1gUfse9KXNdexmcfGe5YGBT7cV3RpIjLbpOJ38MJ/i8g566/iD a65kRvbkXkxiGVd896Mhgtom+Tw4ogl9cUGmLEE5RGuPWVT0mBg09ElpvdZjbLAabCD9 y0Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775040553; x=1775645353; 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:to:from:x-beenthere :x-gm-message-state:sender:from:to:cc:subject:date:message-id :reply-to; bh=ehPsTk3yAKOdf8kaQkmktQPVd+HSeuzhH93IjURmjf0=; b=ZURen8lewMzhqc/ptiRwQ2X5v5wYD5/B89HNLXEnQafLSbjSagAIiDULeZqvPmVaba juVrlijskHxDKV59FZFyDLAi8/b/SK1xLfsIopdlDP7+aJHFTiD2RIiQQ4tPrkaip/b2 3bXuZuQcY5whbIyhnejPkDM/7qM4uI7GGw1mKPW+PyLhRJlRCgbsgUY04f572voos2WF kmg2718IkJfkIN1MVfPku1oy8LMgz4DHNvdX+MiV8sbICN3V9jOqU3ugu7HEl5jOvRHK JOD03LFL7iFLv3iBuDTz7MDISKYhZfSV+lUWocgqVlrsP+7AR8nOyDl1rTXErirXgANo FV3Q== Sender: isar-users@googlegroups.com X-Forwarded-Encrypted: i=2; AJvYcCXkZbu5ry/2O6UJYsTPRolxoo6/0Rhckk8TtwUF6Sr+uThHc6nuzWpJhX2hCfYvz1vN1INQMKQ=@isar-build.org X-Gm-Message-State: AOJu0Yw3QF2ntmaeXaSA1bQIjuZjOGqnYYTm1X8DVxV61uinTl3x9TfN 5RSNaXZ8onBO08SF7bmpx1u2xbWZRnuGwJHq4TZ1bYAMNIrpd8I6pEyt X-Received: by 2002:a05:600c:3e14:b0:486:fe45:483 with SMTP id 5b1f17b1804b1-488835b30b3mr51117145e9.22.1775040553532; Wed, 01 Apr 2026 03:49:13 -0700 (PDT) X-BeenThere: isar-users@googlegroups.com; h="AYAyTiIBboyGSH4B1HOTqbiV2cYIrKwGbrV5PlPItnvloSYhZg==" Received: by 2002:a5d:5f84:0:b0:43b:a171:64fe with SMTP id ffacd0b85a97d-43d0a597a5els1703092f8f.2.-pod-prod-09-eu; Wed, 01 Apr 2026 03:49:09 -0700 (PDT) X-Received: by 2002:a05:6000:4201:b0:43b:5231:e94a with SMTP id ffacd0b85a97d-43d150c1557mr5622500f8f.30.1775040549511; Wed, 01 Apr 2026 03:49:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775040549; cv=none; d=google.com; s=arc-20240605; b=IYCgmGW/FfGQL870HdXJ2utxBkYc9TAye5WwObkluvGJnncrFB+P5y4FYwPI9iUYhK YXfEJ3Lu4cYNFGRa0kihCPoLwYQsTXh6DFgoDG11LNEoC0JjNt7Z4ghoZc+jfpMOLgYw 97sPQyMVlOHU9BbS6iSXjJc0NGGbHNAJNMY1ZIWWF53/jraYRlAxGVIUsrjQKUWCs4J6 ATKocP+VoEJg9cEZU4vE77fkbQki319jlOFZkxU0qM9KsLNF6TfA5coYl02uXCulAFv0 snZSEDyH1FwJ+Fven+husUhWW3MPU/yM95qn53TechyCAtEDdig5J+0SNwS85jvqo7T/ kp7Q== 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:to:from; bh=+86onSBFC402DcgQX3DIXJ99gFK8G6nWJf2M5FlEb14=; fh=7tclEdh7YbwSQowgJ6LNq720O7H5HTEaqj22NJWRE2E=; b=LbB+J6wPJQ/U9h/4sTwRUi2U/Byp6XMCIt0B4ybHvhFgH4snW6uj4Ny/V/fo0l3yVL Pt/mV+/eQ8YJ5ujoa8bVYXWnz8DZz6Kihh8W4HdZKw/o6PnT5FVuE/rRJkZdjq4nkEdl 2ISzfBhWOlzya0Uz/BdvC3mnBYfbH7bSnxT734cfRidmDj3yuImDJvlrjiiB28WuUTsI oA598BWavgMIGLsBXFpBaFwaRqOuFRgWNLldz/7yKeWykRdSp0R1DzjONARuiuwPBerR 79kRBMDYQUetVrWTwgVlY0yiRT49QVZ8VPaoRUFvXfVZOl3dZoUP9RSCaNbdMxD+wubK 6Ecg==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=pass (google.com: domain of wzh@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=wzh@ilbers.de Received: from shymkent.ilbers.de (shymkent.ilbers.de. [85.214.156.166]) by gmr-mx.google.com with ESMTPS id ffacd0b85a97d-43cf25bf00asi239646f8f.8.2026.04.01.03.49.09 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Wed, 01 Apr 2026 03:49:09 -0700 (PDT) Received-SPF: pass (google.com: domain of wzh@ilbers.de designates 85.214.156.166 as permitted sender) client-ip=85.214.156.166; Received: from debian-zwei.m.ilbers.de ([88.130.203.42]) (authenticated bits=0) by shymkent.ilbers.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPA id 631An76j017421 for ; Wed, 1 Apr 2026 12:49:08 +0200 From: Zhihang Wei To: isar-users@googlegroups.com Subject: [PATCH v9 3/3] meta: Deploy image build artifacts into distro- and image-specific subdirs Date: Wed, 1 Apr 2026 12:49:07 +0200 Message-Id: <20260401104907.3365696-4-wzh@ilbers.de> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260401104907.3365696-1-wzh@ilbers.de> References: <20260401104907.3365696-1-wzh@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: wzh@ilbers.de X-Original-Authentication-Results: gmr-mx.google.com; spf=pass (google.com: domain of wzh@ilbers.de designates 85.214.156.166 as permitted sender) smtp.mailfrom=wzh@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?= When building different distros or images for the same machine (e.g. phyboard-mira-bullseye and phyboard-mira-bookworm, or isar-image-ci and isar-image-base), artifacts with identical names (e.g. DTB files) may be deployed to the same location, resulting file conflicts and build failures. Deploy image build artifacts into a subdirectory named ${DISTRO}-${IMAGE_PN} to avoid such collisions. Since the directory now encodes the distro and image name, remove the ${DISTRO} and ${IMAGE_PN} prefixes from artifact filenames to keep the names short and clear. Fixes test_dtb_deploy_distros 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: NOTE: recipe isar-image-base-1.0-r0: task do_copy_boot_files: Failed 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: Zhihang Wei --- RECIPE-API-CHANGELOG.md | 77 +++++++++++++++++++ .../installer-add-rootfs.bbclass | 9 ++- meta/classes-recipe/image.bbclass | 11 +-- .../imagetypes_container.bbclass | 2 +- meta/conf/bitbake.conf | 3 +- .../plugins/source/isoimage-isohybrid-isar.py | 2 +- testsuite/cibase.py | 2 +- testsuite/citest.py | 7 +- testsuite/start_vm.py | 2 +- 9 files changed, 98 insertions(+), 17 deletions(-) diff --git a/RECIPE-API-CHANGELOG.md b/RECIPE-API-CHANGELOG.md index e44b4b9d..a0badb74 100644 --- a/RECIPE-API-CHANGELOG.md +++ b/RECIPE-API-CHANGELOG.md @@ -972,3 +972,80 @@ we introduce the variables ``MMAPTOPT_NOEXPKEYSIGN`` and ``DISTRO_MM_OPTS``. While the former provides an argument to disable the key expiry checking, the latter allows users to inject custom options into ``mmdebstrap``. For details, see ``man mmdebstrap``. Use with care! + +### Change DEPLOY_DIR_IMAGE path and artifacts naming + +Change DEPLOY_DIR_IMAGE from ${DEPLOY_DIR}/images/${MACHINE} to +${DEPLOY_DIR}/images/${MACHINE}/${DISTRO}-${IMAGE_PN}. + +When building different distros with the same machine the following +error occurs: + +do_copy_boot_files: The recipe isar-image-base is trying to install +files into a shared area when those files already exists. It happens +when some files have the same names (e.g., dtb files) for different +distros. + +To prevent such collisions, image artifacts are now deployed into a +distro- and image-specific subdirectory. + +Additionally, artifact filenames have been shortened by removing the +${DISTRO} and ${IMAGE_PN} prefix, since this information is now +encoded in the directory path. + +Example 1: Build isar-image-base (phyboard-mira, debian-bookworm) +Under "build/tmp/deploy/images/": +Before: +phyboard-mira/imx6q-phytec-mira-rdk-nand.dtb +phyboard-mira/isar-image-base-debian-bookworm-phyboard-mira-initrd.img +phyboard-mira/isar-image-base-debian-bookworm-phyboard-mira-vmlinuz +phyboard-mira/isar-image-base-debian-bookworm-phyboard-mira.dpkg_status +phyboard-mira/isar-image-base-debian-bookworm-phyboard-mira.ubi + +After: +phyboard-mira/debian-bookworm-isar-image-base/imx6q-phytec-mira-rdk-nand.dtb +phyboard-mira/debian-bookworm-isar-image-base/initrd.img +phyboard-mira/debian-bookworm-isar-image-base/vmlinuz +phyboard-mira/debian-bookworm-isar-image-base/phyboard-mira.dpkg_status +phyboard-mira/debian-bookworm-isar-image-base/phyboard-mira.ubi + +Example 2: Build isar-image-ci (qemuamd64, debian-bookworm) +Under "build/tmp/deploy/images/": +Before: +qemuamd64/isar-image-ci-debian-bookworm-qemuamd64-initrd.img +qemuamd64/isar-image-ci-debian-bookworm-qemuamd64-vmlinuz +qemuamd64/isar-image-ci-debian-bookworm-qemuamd64.dpkg_status +qemuamd64/isar-image-ci-debian-bookworm-qemuamd64.manifest +qemuamd64/isar-image-ci-debian-bookworm-qemuamd64.wic +qemuamd64/isar-image-ci-debian-bookworm-qemuamd64.wic.bmap +qemuamd64/isar-image-ci-debian-bookworm-qemuamd64.wic.manifest + +After: +qemuamd64/debian-bookworm-isar-image-ci/initrd.img +qemuamd64/debian-bookworm-isar-image-ci/vmlinuz +qemuamd64/debian-bookworm-isar-image-ci/qemuamd64.dpkg_status +qemuamd64/debian-bookworm-isar-image-ci/qemuamd64.manifest +qemuamd64/debian-bookworm-isar-image-ci/qemuamd64.wic +qemuamd64/debian-bookworm-isar-image-ci/qemuamd64.wic.bmap +qemuamd64/debian-bookworm-isar-image-ci/qemuamd64.wic.manifest + +Artifacts that do not belong to a full image (e.g. isar-image-base, +isar-image-ci) remain unchanged. For example, a customized initramfs +built independently is not affected. + +This change affects the location and naming of build artifacts and must +be taken into account by downstream users. + +Note that this approach differs from OpenEmbedded. + +OpenEmbedded typically avoids artifact collisions in multiconfig builds +by using separate TMPDIRs per configuration, resulting in multiple +build directories such as tmp-qemuarm64 and tmp-qemuarm64customized. In +this model, artifacts with identical names but different contents do +not cause conflicts because they reside in their own isolated build +directories. + +If multiple configurations are intentionally configured to share the +same TMPDIR in OpenEmbedded, conflicts may occur and are not handled by +OE. Artifacts with the same name overwrite each other, leading to +incorrect build results. diff --git a/meta-isar/classes-recipe/installer-add-rootfs.bbclass b/meta-isar/classes-recipe/installer-add-rootfs.bbclass index 2fa551bd..edf93016 100644 --- a/meta-isar/classes-recipe/installer-add-rootfs.bbclass +++ b/meta-isar/classes-recipe/installer-add-rootfs.bbclass @@ -13,9 +13,10 @@ INSTALLER_TARGET_IMAGES ??= "${INSTALLER_TARGET_IMAGE}" INSTALLER_TARGET_MC ??= "installer-target" INSTALLER_TARGET_DISTRO ??= "${DISTRO}" INSTALLER_TARGET_MACHINE ??= "${MACHINE}" -INSTALLER_TARGET_DEPLOY_DIR_IMAGE ??= "${DEPLOY_DIR}/images/${INSTALLER_TARGET_MACHINE}" +INSTALLER_TARGET_IMAGE ??= "${IMAGE_PN}" +INSTALLER_TARGET_DEPLOY_DIR_IMAGE ??= "${DEPLOY_DIR}/images/${INSTALLER_TARGET_MACHINE}/${INSTALLER_TARGET_DISTRO}-${INSTALLER_TARGET_IMAGE}" -IMAGE_DATA_FILE ??= "${INSTALLER_TARGET_IMAGE}-${INSTALLER_TARGET_DISTRO}-${INSTALLER_TARGET_MACHINE}" +IMAGE_DATA_FILE ??= "${INSTALLER_TARGET_MACHINE}" IMAGE_DATA_POSTFIX ??= "wic.zst" IMAGE_DATA_POSTFIX:buster ??= "wic.xz" IMAGE_DATA_POSTFIX:bullseye ??= "wic.xz" @@ -29,7 +30,7 @@ def get_installer_sources(d, suffix): target_machine = d.getVar('INSTALLER_TARGET_MACHINE') sources = [] for image in installer_target_images: - image_data = f"{image}-{target_distro}-{target_machine}" + image_data = f"{target_machine}" sources.append(f"{target_deploy_dir}/{image_data}.{suffix}") return sources @@ -41,7 +42,7 @@ def get_installer_destinations(d, suffix): target_machine = d.getVar('INSTALLER_TARGET_MACHINE') dests = [] for image in installer_target_images: - image_data = f"{image}-{target_distro}-{target_machine}" + image_data = f"{target_machine}" dests.append(f"/install/{image_data}.{suffix}") return dests diff --git a/meta/classes-recipe/image.bbclass b/meta/classes-recipe/image.bbclass index afe6906e..d4f9e2c0 100644 --- a/meta/classes-recipe/image.bbclass +++ b/meta/classes-recipe/image.bbclass @@ -18,8 +18,9 @@ IMAGE_ROOTFS ?= "${WORKDIR}/rootfs" KERNEL_IMAGE_PKG ??= "${@ ("linux-image-" + d.getVar("KERNEL_NAME")) if d.getVar("KERNEL_NAME") else ""}" IMAGE_INSTALL += "${KERNEL_IMAGE_PKG}" -# Name of the image including distro&machine names -IMAGE_FULLNAME = "${PN}-${DISTRO}-${MACHINE}" +# Name the image as the machine name only, since the path includes distro name now +IMAGE_FULLNAME = "${MACHINE}" +IMAGE_PN = "${PN}" # Deprecated; this would be set to e.g. "${INITRAMFS_RECIPE}-${DISTRO}-${MACHINE}-initrd.img" INITRD_IMAGE ?= "" @@ -29,7 +30,7 @@ INITRD_IMAGE ?= "" IMAGE_INITRD ?= "" # Name of the deployed initrd image -INITRD_DEPLOY_FILE = "${@ d.getVar('IMAGE_INITRD') or '${PN}' }-${DISTRO}-${MACHINE}-initrd.img" +INITRD_DEPLOY_FILE = "initrd.img" # Make sure dependent initramfs recipe is built do_image[depends] += "${@ '${IMAGE_INITRD}:do_build' if '${IMAGE_INITRD}' else '' }" @@ -52,7 +53,7 @@ python() { ROOTFS_FEATURES += "${@ 'generate-initrd' if (d.getVar('INITRD_IMAGE') == '' and d.getVar('IMAGE_INITRD') == '') else ''}" # This variable is used by wic and start_vm -KERNEL_IMAGE ?= "${IMAGE_FULLNAME}-${KERNEL_FILE}" +KERNEL_IMAGE ?= "${KERNEL_FILE}" # This defines the deployed dtbs for reuse by imagers DTB_FILES ?= "" @@ -108,7 +109,7 @@ ROOTFS_PACKAGES += "${IMAGE_PREINSTALL} ${@isar_multiarch_packages('IMAGE_INSTAL ROOTFS_VARDEPS += "IMAGE_INSTALL" ROOTFS_MANIFEST_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" ROOTFS_DPKGSTATUS_DEPLOY_DIR ?= "${DEPLOY_DIR_IMAGE}" -ROOTFS_PACKAGE_SUFFIX ?= "${PN}-${DISTRO}-${MACHINE}" +ROOTFS_PACKAGE_SUFFIX ?= "${MACHINE}" CACHE_DEB_SRC = "${@bb.utils.contains('BASE_REPO_FEATURES', 'cache-deb-src', '1', '0', d)}" python () { diff --git a/meta/classes-recipe/imagetypes_container.bbclass b/meta/classes-recipe/imagetypes_container.bbclass index ea15decf..1c5386a8 100644 --- a/meta/classes-recipe/imagetypes_container.bbclass +++ b/meta/classes-recipe/imagetypes_container.bbclass @@ -9,7 +9,7 @@ CONTAINER_TYPES = "oci-archive docker-archive docker-daemon containers-storage" USING_CONTAINER = "${@bb.utils.contains_any('IMAGE_BASETYPES', d.getVar('CONTAINER_TYPES').split(), '1', '0', d)}" -CONTAINER_IMAGE_NAME ?= "${PN}-${DISTRO}-${DISTRO_ARCH}" +CONTAINER_IMAGE_NAME ?= "container-${DISTRO_ARCH}" CONTAINER_IMAGE_TAG ?= "${PV}-${PR}" CONTAINER_IMAGE_CMD ?= "/bin/dash" CONTAINER_IMAGE_ENTRYPOINT ?= "" diff --git a/meta/conf/bitbake.conf b/meta/conf/bitbake.conf index 0f84e715..7c544e5d 100644 --- a/meta/conf/bitbake.conf +++ b/meta/conf/bitbake.conf @@ -57,7 +57,8 @@ WORKDIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}/${PN}/${PV}-${PR}" GIT_DL_LINK_DIR = "${TMPDIR}/work/${DISTRO}-${DISTRO_ARCH}" DEPLOY_DIR_BOOTSTRAP = "${DEPLOY_DIR}/bootstrap" DEPLOY_DIR_SDKCHROOT = "${DEPLOY_DIR}/sdkchroot" -DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}" +IMAGE_PN ?= "" +DEPLOY_DIR_IMAGE = "${DEPLOY_DIR}/images/${MACHINE}${@('/%s-%s' % (d.getVar('DISTRO'), d.getVar('IMAGE_PN'))) if d.getVar('IMAGE_PN') != '' else ''}" DL_DIR ?= "${TOPDIR}/downloads" SSTATE_DIR ?= "${TOPDIR}/sstate-cache" SSTATE_MANIFESTS = "${TMPDIR}/sstate-control/${DISTRO}-${DISTRO_ARCH}" diff --git a/meta/scripts/lib/wic/plugins/source/isoimage-isohybrid-isar.py b/meta/scripts/lib/wic/plugins/source/isoimage-isohybrid-isar.py index 0ed61fff..eaef9c79 100644 --- a/meta/scripts/lib/wic/plugins/source/isoimage-isohybrid-isar.py +++ b/meta/scripts/lib/wic/plugins/source/isoimage-isohybrid-isar.py @@ -196,7 +196,7 @@ class IsoImagePlugin(SourcePlugin): raise WicError("Couldn't find MACHINE, exiting.") pattern = '%s/%s*%s.%s' % (initrd_dir, image_name, machine, image_type) - pattern = '%s/%s-%s-initrd.%s' % (initrd_dir, image_name, machine, image_type) + pattern = '%s/initrd.%s' % (initrd_dir, image_type) files = glob.glob(pattern) if files: initrd = files[0] diff --git a/testsuite/cibase.py b/testsuite/cibase.py index fd6a3df9..fac2ab75 100755 --- a/testsuite/cibase.py +++ b/testsuite/cibase.py @@ -44,7 +44,7 @@ class CIBaseTest(CIBuilder): self.configure(wic_deploy_parts=wic_deploy_parts, **kwargs) self.bitbake(targets, **kwargs) - wic_path = f"{self.build_dir}/tmp/deploy/images/*/*.wic.p1" + wic_path = f"{self.build_dir}/tmp/deploy/images/*/*/*.wic.p1" partition_files = set(glob.glob(wic_path)) if wic_deploy_parts and len(partition_files) == 0: self.fail("Found raw wic partitions in DEPLOY_DIR") diff --git a/testsuite/citest.py b/testsuite/citest.py index ca701422..f36da786 100755 --- a/testsuite/citest.py +++ b/testsuite/citest.py @@ -496,8 +496,9 @@ class InitRdBaseTest(CIBaseTest): super().init() self.deploy_dir = os.path.join(self.build_dir, 'tmp', 'deploy') - def deploy_dir_image(self, machine): - return os.path.join(self.deploy_dir, 'images', machine) + def deploy_dir_image(self, mc, image): + multiconfig = f"{mc}:{image}" + return CIUtils.getVars('DEPLOY_DIR_IMAGE', target=multiconfig) def dracut_in_image(self, targets): machine = 'qemuamd64' @@ -526,7 +527,7 @@ class InitRdBaseTest(CIBaseTest): bb_should_fail=False): mc = f'mc:{machine}-{distro.removeprefix("debian-")}' initrd_image = f'{initrd}-{distro}-{machine}-initrd.img' - initrd_path = os.path.join(self.deploy_dir_image(machine), initrd_image) + initrd_path = os.path.join(self.deploy_dir_image(mc, initrd), initrd_image) # cleansstate if the initrd image was already built/deployed to verify # that a new build does result in the image being deployed diff --git a/testsuite/start_vm.py b/testsuite/start_vm.py index 57d169df..a37ffe82 100755 --- a/testsuite/start_vm.py +++ b/testsuite/start_vm.py @@ -50,7 +50,7 @@ def format_qemu_cmdline( image_type = image_fstypes.split()[0] base = 'ubuntu' if distro in ['jammy', 'focal', 'noble'] else 'debian' - rootfs_image = f"{image}-{base}-{distro}-qemu{arch}.{image_type}" + rootfs_image = f"qemu{arch}.{image_type}" if image_type == 'ext4': kernel_image = deploy_dir_image + '/' + kernel_image