From patchwork Tue Apr 25 03:32:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "MOESSBAUER, Felix" X-Patchwork-Id: 13223269 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4D943C77B61 for ; Tue, 25 Apr 2023 12:54:38 +0000 (UTC) Received: from mta-64-227.siemens.flowmailer.net (mta-64-227.siemens.flowmailer.net [185.136.64.227]) by mx.groups.io with SMTP id smtpd.web11.71231.1682393582026839571 for ; Mon, 24 Apr 2023 20:33:03 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=felix.moessbauer@siemens.com header.s=fm1 header.b=Pm7CZ3DE; spf=pass (domain: rts-flowmailer.siemens.com, ip: 185.136.64.227, mailfrom: fm-72506-202304250332589267ea8444d16225e1-v19yv2@rts-flowmailer.siemens.com) Received: by mta-64-227.siemens.flowmailer.net with ESMTPSA id 202304250332589267ea8444d16225e1 for ; Tue, 25 Apr 2023 05:32:59 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=felix.moessbauer@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc; bh=k2/K1T3p/F86b3yH2/V5KukHZFx7qonUU/ao5p7jod8=; b=Pm7CZ3DEtiOiUxRNH/nN1K+7zIn778/duYvSAIi7AlKqrJnzH/tqjDtT/S6vpRrmNnJE6a XiO5rB4nCGrW40rNr/VAFg9YpXvtLugzc9xGKBgiUuAYIWmTGAFh3RPTPW914Vian6Lw1D4R wbIHNx8kw7D+lXWNWf8uP8x1qqMIE=; From: Felix Moessbauer To: cip-dev@lists.cip-project.org Cc: jan.kiszka@siemens.com, quirin.gylstorff@siemens.com, Felix Moessbauer Subject: [isar-cip-core][PATCH 1/2] refactor deploy of OVMF binaries Date: Tue, 25 Apr 2023 11:32:45 +0800 Message-Id: <20230425033246.1199444-1-felix.moessbauer@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-72506:519-21489:flowmailer List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 25 Apr 2023 12:54:38 -0000 X-Groupsio-URL: https://lists.cip-project.org/g/cip-dev/message/11348 Instead of deploying the OVMF binaries via a dummy package, we directly deploy them as part of the imaging. This avoids the insertion of the dummy package into the apt repo, speeds up the build and simplifies the logic. Signed-off-by: Felix Moessbauer --- kas/opt/ebg-swu.yml | 2 +- recipes-core/images/deploy-ovmf.inc | 21 +++++++++++ recipes-devtools/ovmf-binaries/files/rules | 17 --------- .../ovmf-binaries/ovmf-binaries_0.1.bb | 35 ------------------- 4 files changed, 22 insertions(+), 53 deletions(-) create mode 100644 recipes-core/images/deploy-ovmf.inc delete mode 100644 recipes-devtools/ovmf-binaries/files/rules delete mode 100644 recipes-devtools/ovmf-binaries/ovmf-binaries_0.1.bb diff --git a/kas/opt/ebg-swu.yml b/kas/opt/ebg-swu.yml index 203a6b9..1c12ad5 100644 --- a/kas/opt/ebg-swu.yml +++ b/kas/opt/ebg-swu.yml @@ -25,7 +25,7 @@ local_conf_header: INITRAMFS_INSTALL:append = " initramfs-abrootfs-hook" firmware-binaries: | # Add ovmf binaries for qemu - IMAGER_BUILD_DEPS:append:qemu-amd64 = " ovmf-binaries" + CIP_IMAGE_OPTIONS:append:qemu-amd64 = " deploy-ovmf.inc" # not needed for Debian 11 and later DISTRO_APT_SOURCES:append:qemu-amd64:buster = " conf/distro/debian-buster-backports.list" DISTRO_APT_PREFERENCES:append:qemu-amd64:buster = " conf/distro/preferences.ovmf-snakeoil.conf" diff --git a/recipes-core/images/deploy-ovmf.inc b/recipes-core/images/deploy-ovmf.inc new file mode 100644 index 0000000..0ec8762 --- /dev/null +++ b/recipes-core/images/deploy-ovmf.inc @@ -0,0 +1,21 @@ +# +# CIP Core, generic profile +# +# Copyright (c) Siemens AG, 2023 +# +# Authors: +# Felix Moessbauer +# +# SPDX-License-Identifier: MIT +# +# This recipe deploys the OVMF binaries to run the image in QEMU +# Note: x86 only + +IMAGER_INSTALL += "ovmf" + +do_deploy_ovmf_binaries[cleandirs] += "${DEPLOY_DIR_IMAGE}/OVMF" +do_deploy_ovmf_binaries() { + cp -v ${BUILDCHROOT_DIR}/usr/share/OVMF/*.fd ${DEPLOY_DIR_IMAGE}/OVMF +} + +addtask deploy_ovmf_binaries after do_install_imager_deps before do_image diff --git a/recipes-devtools/ovmf-binaries/files/rules b/recipes-devtools/ovmf-binaries/files/rules deleted file mode 100644 index dcbef80..0000000 --- a/recipes-devtools/ovmf-binaries/files/rules +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/make -f -# -# Copyright (c) Siemens AG, 2022 -# -# Authors: -# Quirin Gylstorff -# -# This file is subject to the terms and conditions of the MIT License. -# See COPYING.MIT file in the top-level directory. -# - -override_dh_auto_configure: - mkdir -p /home/builder/ovmf-binaries/image/var/share/ - cp -r /usr/share/OVMF /home/builder/ovmf-binaries/image/var/share/ - -%: - dh $@ diff --git a/recipes-devtools/ovmf-binaries/ovmf-binaries_0.1.bb b/recipes-devtools/ovmf-binaries/ovmf-binaries_0.1.bb deleted file mode 100644 index 0f4592a..0000000 --- a/recipes-devtools/ovmf-binaries/ovmf-binaries_0.1.bb +++ /dev/null @@ -1,35 +0,0 @@ -# -# CIP Core, generic profile -# -# Copyright (c) Siemens AG, 2020 -# -# Authors: -# Quirin Gylstorff -# -# SPDX-License-Identifier: MIT -# - -inherit dpkg-raw - -DESCRIPTION = "Copy the OVMF biniaries from the build changeroot to the deploy dir" - -# this is a empty debian package -SRC_URI = "file://rules" - -DEBIAN_BUILD_DEPENDS = "ovmf" - -SSTATETASKS = "" - -do_install() { - install -v -d ${D}/var/share - touch ${D}/var/share/test -} - -do_deploy() { - install -m 0755 -d ${DEPLOY_DIR_IMAGE} - dpkg --extract ${WORKDIR}/${PN}_${PV}*.deb ${WORKDIR} - cp -r ${WORKDIR}/var/share/OVMF ${DEPLOY_DIR_IMAGE} -} -addtask do_deploy after do_dpkg_build before do_deploy_deb - - From patchwork Tue Apr 25 03:32:46 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "MOESSBAUER, Felix" X-Patchwork-Id: 13223268 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4CB18C6FD18 for ; Tue, 25 Apr 2023 12:54:38 +0000 (UTC) Received: from mta-64-228.siemens.flowmailer.net (mta-64-228.siemens.flowmailer.net [185.136.64.228]) by mx.groups.io with SMTP id smtpd.web11.71233.1682393583624078921 for ; Mon, 24 Apr 2023 20:33:03 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=felix.moessbauer@siemens.com header.s=fm1 header.b=PZTcfaON; spf=pass (domain: rts-flowmailer.siemens.com, ip: 185.136.64.228, mailfrom: fm-72506-202304250333017fa449af92f87d5af4-aygacy@rts-flowmailer.siemens.com) Received: by mta-64-228.siemens.flowmailer.net with ESMTPSA id 202304250333017fa449af92f87d5af4 for ; Tue, 25 Apr 2023 05:33:01 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; s=fm1; d=siemens.com; i=felix.moessbauer@siemens.com; h=Date:From:Subject:To:Message-ID:MIME-Version:Content-Type:Content-Transfer-Encoding:Cc:References:In-Reply-To; bh=Pp8siAjuXDCok1PATGzMskxqSCiIkKxB5B9jqwVaXFM=; b=PZTcfaONsfrREqaBL1Ub60kJV6gdlAf4YxVJtOC9smHtZTDHad+RR1FKWDQhtJYSHu/uO7 LKdUdF6Zp7xpOgKIvX/8csKgUd+NT4o0VBP/KJEhyyv1oZrVsQcTsVRjCrahtm0MGNwoMoTk T3nJP4amCcCVXKQnsiz+hSu2u1dsE=; From: Felix Moessbauer To: cip-dev@lists.cip-project.org Cc: jan.kiszka@siemens.com, quirin.gylstorff@siemens.com, Felix Moessbauer Subject: [isar-cip-core][PATCH 2/2] generalize deployment of self compiled firmware Date: Tue, 25 Apr 2023 11:32:46 +0800 Message-Id: <20230425033246.1199444-2-felix.moessbauer@siemens.com> In-Reply-To: <20230425033246.1199444-1-felix.moessbauer@siemens.com> References: <20230425033246.1199444-1-felix.moessbauer@siemens.com> MIME-Version: 1.0 X-Flowmailer-Platform: Siemens Feedback-ID: 519:519-72506:519-21489:flowmailer List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 25 Apr 2023 12:54:38 -0000 X-Groupsio-URL: https://lists.cip-project.org/g/cip-dev/message/11349 For some targets, dedicated firmware is compiled and copied into the DEPLOY_DIR_IMAGE. Instead of implementing this logic for each firmware individually, we move the common logic into a class and inherit. This reduces the amount of code duplication and simplifies the maintenance. Signed-off-by: Felix Moessbauer --- classes/deploy-firmware.bbclass | 32 +++++++++++++++++++++++ recipes-bsp/opensbi/opensbi.inc | 16 ++---------- recipes-bsp/u-boot/u-boot-qemu-common.inc | 18 +++---------- 3 files changed, 37 insertions(+), 29 deletions(-) create mode 100644 classes/deploy-firmware.bbclass diff --git a/classes/deploy-firmware.bbclass b/classes/deploy-firmware.bbclass new file mode 100644 index 0000000..a4b754a --- /dev/null +++ b/classes/deploy-firmware.bbclass @@ -0,0 +1,32 @@ +# +# CIP Core, generic profile +# +# Copyright (c) Siemens AG, 2023 +# +# Authors: +# Felix Moessbauer +# +# SPDX-License-Identifier: MIT +# +# This class adds a mechanism to deploy files to the DEPLOY_DIR_IMAGE +# directory. Simply overwrite the deploy_firmware task and copy the +# to-be-deployed files into DEPLOYDIR_FIRMWARE. + +inherit dpkg-base + +DEPLOYDIR_FIRMWARE = "${WORKDIR}/deploy-fw" +SSTATETASKS += "do_deploy_firmware" + +do_deploy_firmware[cleandirs] += "${DEPLOYDIR_FIRMWARE}" +do_deploy_firmware[sstate-inputdirs] = "${DEPLOYDIR_FIRMWARE}" +do_deploy_firmware[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}" +do_deploy_firmware() { + die "This should never be called, overwrite it in your derived class" +} + +python do_deploy_firmware_setscene () { + sstate_setscene(d) +} +addtask do_deploy_firmware_setscene + +addtask deploy_firmware after do_dpkg_build before do_deploy_deb diff --git a/recipes-bsp/opensbi/opensbi.inc b/recipes-bsp/opensbi/opensbi.inc index 0108231..6d84026 100644 --- a/recipes-bsp/opensbi/opensbi.inc +++ b/recipes-bsp/opensbi/opensbi.inc @@ -4,13 +4,11 @@ # SPDX-License-Identifier: MIT inherit dpkg +inherit deploy-firmware U_BOOT_PACKAGE ?= "u-boot-${MACHINE}" PLATFORM ?= "generic" -DEPLOYDIR_FIRMWARE = "${WORKDIR}/deploy-fw" -SSTATETASKS += "do_deploy" - SRC_URI = " \ https://github.com/riscv/opensbi/archive/v${PV}.tar.gz;downloadfilename=opensbi-${PV}.tar.gz;name=opensbi" @@ -27,18 +25,8 @@ do_prepare_build() { echo "build/platform/${PLATFORM}/firmware/fw_payload.bin /usr/lib/opensbi/${MACHINE}/" > ${S}/debian/install } -do_deploy[cleandirs] += "${DEPLOYDIR_FIRMWARE}" -do_deploy[sstate-inputdirs] = "${DEPLOYDIR_FIRMWARE}" -do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}" -do_deploy() { +do_deploy_firmware() { dpkg --fsys-tarfile "${WORKDIR}/${PN}_${PV}_${DISTRO_ARCH}.deb" | \ tar xOf - "./usr/lib/opensbi/${MACHINE}/fw_payload.bin" \ > "${DEPLOYDIR_FIRMWARE}/fw_payload.bin" } - -python do_deploy_setscene () { - sstate_setscene(d) -} -addtask do_deploy_setscene - -addtask deploy after do_dpkg_build before do_deploy_deb diff --git a/recipes-bsp/u-boot/u-boot-qemu-common.inc b/recipes-bsp/u-boot/u-boot-qemu-common.inc index 4d8b240..b222155 100644 --- a/recipes-bsp/u-boot/u-boot-qemu-common.inc +++ b/recipes-bsp/u-boot/u-boot-qemu-common.inc @@ -9,25 +9,13 @@ # SPDX-License-Identifier: MIT # +inherit deploy-firmware require recipes-bsp/u-boot/u-boot-common.inc U_BOOT_BIN = "u-boot.bin" -DEPLOYDIR_U_BOOT = "${WORKDIR}/deploy-u-boot" -SSTATETASKS += "do_deploy" - -do_deploy[cleandirs] += "${DEPLOYDIR_U_BOOT}" -do_deploy[sstate-inputdirs] = "${DEPLOYDIR_U_BOOT}" -do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}" -do_deploy() { +do_deploy_firmware() { dpkg --fsys-tarfile "${WORKDIR}/u-boot-${MACHINE}_${PV}_${DISTRO_ARCH}.deb" | \ tar xOf - "./usr/lib/u-boot/${MACHINE}/${U_BOOT_BIN}" \ - > "${DEPLOYDIR_U_BOOT}/firmware.bin" -} - -python do_deploy_setscene () { - sstate_setscene(d) + > "${DEPLOYDIR_FIRMWARE}/firmware.bin" } -addtask do_deploy_setscene - -addtask deploy after do_dpkg_build before do_deploy_deb