From patchwork Mon Aug 12 21:12:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Freihofer X-Patchwork-Id: 47709 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 E5E99C531DD for ; Mon, 12 Aug 2024 21:15:07 +0000 (UTC) Received: from mail-lf1-f47.google.com (mail-lf1-f47.google.com [209.85.167.47]) by mx.groups.io with SMTP id smtpd.web10.57872.1723497302706416282 for ; Mon, 12 Aug 2024 14:15:03 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@gmail.com header.s=20230601 header.b=jV+EF5wg; spf=pass (domain: gmail.com, ip: 209.85.167.47, mailfrom: adrian.freihofer@gmail.com) Received: by mail-lf1-f47.google.com with SMTP id 2adb3069b0e04-5314c6dbaa5so3959163e87.2 for ; Mon, 12 Aug 2024 14:15:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1723497300; x=1724102100; darn=lists.openembedded.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6ladx8L9nqOXtaOZBWO7bu+2AnNG4HnjVyFfCcSGOdI=; b=jV+EF5wgLHDXIsqCRyX65HsILdwKBQg7uPNOeCHlbikPZsj2ABWgMJXVAq+CLsfPOY liHZOKfiRM+zKcG6nSCOuoR9+UxtOBbwl2k31X81mwLMEzOo7ZEb46DyM9I28/uud4MF ELLrGP0fl0p4rvcUmHHdiCZp5vNO4AMZTy7YT62b9itegFy/SUaKr7GP3g8cj1PMM3o/ jRzVxVPK6+5SyI7/HP4cu/hb0TAPSD/Qq4r5Nd0XVxKA16THyS1EIfmC/NuNNLJk5Apo g3+j5f8pPWvCtO6LJrynJEFfFJ2TKG+Ko3Kch5ZvXFUnnKbSmiIW63MRkvVt8nIKLLQJ rbNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1723497300; x=1724102100; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=6ladx8L9nqOXtaOZBWO7bu+2AnNG4HnjVyFfCcSGOdI=; b=vNd3Q9GY/rvBI1fh3RGk9xNN78KzKC4oBMFY0ypS76Yps1y9Im4lDq5ICwzzCNSzqS Tcv9rBsjpDlrBBaZrb+/+Wi/6at6r3JHeELnW34unmXwEfRITjIGPOKsqQYgqQs1+2m3 9OVa2bxpj1Xgt+QJOCsNQl8xMESD0KjiBXfmNhzk8DuLXAveHqOLxkhopHBiGhv9x3ZU glBecC8bWtyETw7nspdkYzajiGn0Wu0rcr6ZgWg7VuO3WtNvYUPvb2Zt+6XjxkkTfXTV Y+Hjd2KSEUJ+dtRWL2wVB71szjYNK6Z+uyeKsQcVDukW11oBnS37QAteC8Bj91MtNJZ1 wcow== X-Gm-Message-State: AOJu0YyiUj+hXT3maU+2qcrXpOv52IL9htZlRlAgU+PA1DXczN9XvXy2 AeP9xC1cx38waMEL8YTVYlw4lAITaNnEK1RwiOboXpEaGDTUdr7LxDXv5Q== X-Google-Smtp-Source: AGHT+IEF9P6am4u0ranQTIzLgLr+DyOxnfXvA7d2xQX/Y5pqiQ77mQYvsWgVRlERRMIdczPSMzuVwg== X-Received: by 2002:a05:6512:1296:b0:52c:d819:517e with SMTP id 2adb3069b0e04-53213659efemr911653e87.30.1723497300203; Mon, 12 Aug 2024 14:15:00 -0700 (PDT) Received: from wsadrian16.fritz.box ([2a02:169:59a6:0:55c4:f628:91f3:4287]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a80f3fb069dsm10828366b.80.2024.08.12.14.14.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Aug 2024 14:14:59 -0700 (PDT) From: Adrian Freihofer To: openembedded-core@lists.openembedded.org Cc: Adrian Freihofer Subject: [PATCH 2/4] kernel-fitimage: refactor fitimage_assemble Date: Mon, 12 Aug 2024 23:12:55 +0200 Message-ID: <20240812211437.2736977-3-adrian.freihofer@gmail.com> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20240812211437.2736977-1-adrian.freihofer@gmail.com> References: <20240812211437.2736977-1-adrian.freihofer@gmail.com> MIME-Version: 1.0 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 ; Mon, 12 Aug 2024 21:15:07 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/203237 From: Adrian Freihofer Make the fitimage_assemble function usable with absolute paths for the generated its and the fitImage file. Later on this will allow to take the linux.bin and the DTB files from the sstated deploy derectory and write the generated files to a separate folder with independent sstate-cache handling. Signed-off-by: Adrian Freihofer --- meta/classes-recipe/kernel-fitimage.bbclass | 32 +++++++++++++++------ 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/meta/classes-recipe/kernel-fitimage.bbclass b/meta/classes-recipe/kernel-fitimage.bbclass index 02b5fd8e3f5..705b3ab657f 100644 --- a/meta/classes-recipe/kernel-fitimage.bbclass +++ b/meta/classes-recipe/kernel-fitimage.bbclass @@ -169,8 +169,9 @@ fitimage_emit_section_kernel() { ENTRYPOINT="${UBOOT_ENTRYPOINT}" if [ -n "${UBOOT_ENTRYSYMBOL}" ]; then + kernel_base=$(basename $3) ENTRYPOINT=`${HOST_PREFIX}nm vmlinux | \ - awk '$3=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'` + awk '$kernel_base=="${UBOOT_ENTRYSYMBOL}" {print "0x"$1;exit}'` fi cat << EOF >> $1 @@ -567,7 +568,7 @@ fitimage_assemble() { setupcount="" bootscr_id="" default_dtb_image="" - rm -f $1 arch/${ARCH}/boot/$2 + rm -f "$1" "arch/${ARCH}/boot/$(basename $2)" if [ -n "${UBOOT_SIGN_IMG_KEYNAME}" -a "${UBOOT_SIGN_KEYNAME}" = "${UBOOT_SIGN_IMG_KEYNAME}" ]; then bbfatal "Keys used to sign images and configuration nodes must be different." @@ -608,6 +609,17 @@ fitimage_assemble() { DTB=`basename $DTB` fi + # Find DTBs without sub-folders when running in deploy folder + if [ ! -e "$DTB_PATH" ]; then + DTB=$(basename $DTB) + DTB_PATH=$(readlink -f $DTB) + fi + + # Fail as early as possible if there is still no DTB file found + if [ ! -e "$DTB_PATH" ]; then + bberror "Cannot find the DTB file at $DTB_PATH" + fi + # Set the default dtb image if it exists in the devicetree. if [ "${FIT_CONF_DEFAULT_DTB}" = "$DTB" ];then default_dtb_image=$(echo "$DTB" | tr '/' '_') @@ -658,9 +670,8 @@ fitimage_assemble() { if [ -n "${UBOOT_ENV}" ] && [ -d "${STAGING_DIR_HOST}/boot" ]; then if [ -e "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY}" ]; then - cp ${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} ${B} bootscr_id="${UBOOT_ENV_BINARY}" - fitimage_emit_section_boot_script $1 "$bootscr_id" ${UBOOT_ENV_BINARY} + fitimage_emit_section_boot_script $1 "$bootscr_id" "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY}" else bbwarn "${STAGING_DIR_HOST}/boot/${UBOOT_ENV_BINARY} not found." fi @@ -669,9 +680,14 @@ fitimage_assemble() { # # Step 4: Prepare a setup section. (For x86) # + # Run from kernel build folder (bundled mode) if [ -e ${KERNEL_OUTPUT_DIR}/setup.bin ]; then setupcount=1 fitimage_emit_section_setup $1 $setupcount ${KERNEL_OUTPUT_DIR}/setup.bin + # Run from deploy folder (unbundled mode) + elif [ -e setup.bin ]; then + setupcount=1 + fitimage_emit_section_setup $1 $setupcount "$(readlink -f setup.bin)" fi # @@ -744,8 +760,8 @@ fitimage_assemble() { # ${UBOOT_MKIMAGE} \ ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \ - -f $1 \ - ${KERNEL_OUTPUT_DIR}/$2 + -f "$1" \ + "$2" # # Step 8: Sign the image @@ -754,7 +770,7 @@ fitimage_assemble() { ${UBOOT_MKIMAGE_SIGN} \ ${@'-D "${UBOOT_MKIMAGE_DTCOPTS}"' if len('${UBOOT_MKIMAGE_DTCOPTS}') else ''} \ -F -k "${UBOOT_SIGN_KEYDIR}" \ - -r ${KERNEL_OUTPUT_DIR}/$2 \ + -r "$2" \ ${UBOOT_MKIMAGE_SIGN_ARGS} fi } @@ -763,7 +779,7 @@ do_assemble_fitimage() { if echo ${KERNEL_IMAGETYPES} | grep -wq "fitImage"; then cd ${B} uboot_prep_kimage - fitimage_assemble fit-image.its fitImage-none "" + fitimage_assemble fit-image.its ${KERNEL_OUTPUT_DIR}/fitImage-none "" if [ "${INITRAMFS_IMAGE_BUNDLE}" != "1" ]; then ln -sf fitImage-none ${B}/${KERNEL_OUTPUT_DIR}/fitImage fi