From: Marcus Folkesson <marcus.folkesson@gmail.com>
To: openembedded-core@lists.openembedded.org,
Quentin Schulz <quentin.schulz@cherry.de>,
kweihmann@outlook.com
Cc: Marcus Folkesson <marcus.folkesson@gmail.com>
Subject: [PATCH v5 2/2] image-bootfiles.bbclass: new class, copy boot files to root filesystem
Date: Wed, 19 Jun 2024 14:38:53 +0200 [thread overview]
Message-ID: <20240619123853.2144538-3-marcus.folkesson@gmail.com> (raw)
In-Reply-To: <20240619123853.2144538-1-marcus.folkesson@gmail.com>
image-bootfiles class copy files listed in IMAGE_BOOT_FILES
to the IMAGE_BOOT_FILES_DIR directory of the root filesystem.
This is useful when there is no explicit boot partition but all boot
files should instead reside inside the root filesystem.
Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
---
Notes:
v3:
- Skip the intermediate bootfiles() function
- Rename variable names to be consistent
- Various python optimizations
v4:
- Correct usage description
- Create image_dst before copy
v5:
- Check if install_files is [] rather than None
- Print warning if overwriting files
- run as ROOTFS_POSTPROCESS_COMMAND instead
meta/classes/image-bootfiles.bbclass | 41 ++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
create mode 100644 meta/classes/image-bootfiles.bbclass
diff --git a/meta/classes/image-bootfiles.bbclass b/meta/classes/image-bootfiles.bbclass
new file mode 100644
index 0000000000..a17c92f66b
--- /dev/null
+++ b/meta/classes/image-bootfiles.bbclass
@@ -0,0 +1,41 @@
+#
+# SPDX-License-Identifier: MIT
+#
+# Copyright (C) 2024 Marcus Folkesson
+# Author: Marcus Folkesson <marcus.folkesson@gmail.com>
+#
+# Writes IMAGE_BOOT_FILES to the IMAGE_BOOT_FILES_DIR directory.
+#
+# Usage: add "inherit image-bootfiles" to your image.
+#
+
+IMAGE_BOOT_FILES_DIR ?= "boot"
+
+python bootfiles_populate() {
+ import shutil
+ from oe.bootfiles import get_boot_files
+
+ deploy_image_dir = d.getVar("DEPLOY_DIR_IMAGE")
+ boot_dir = os.path.join(d.getVar("IMAGE_ROOTFS"), d.getVar("IMAGE_BOOT_FILES_DIR"))
+
+ boot_files = d.getVar("IMAGE_BOOT_FILES")
+ if boot_files is None:
+ return
+
+ install_files = get_boot_files(deploy_image_dir, boot_files)
+ if not install_files:
+ bb.warn("Could not find any boot files to install even though IMAGE_BOOT_FILES is not empty")
+ return
+
+ os.makedirs(boot_dir, exist_ok=True)
+ for src, dst in install_files:
+ image_src = os.path.join(deploy_image_dir, src)
+ image_dst = os.path.join(boot_dir, dst)
+ if os.path.exists(image_dst):
+ bb.warn("%s does already exist and will be overwritten" % image_dst)
+
+ os.makedirs(os.path.dirname(image_dst), exist_ok=True)
+ shutil.copyfile(image_src, image_dst)
+}
+
+ROOTFS_POSTPROCESS_COMMAND += "bootfiles_populate;"
--
2.45.1
next prev parent reply other threads:[~2024-06-19 12:32 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-19 12:38 [PATCH v5 0/2] image-bootfiles: new class Marcus Folkesson
2024-06-19 12:38 ` [PATCH v5 1/2] bootimg-partition: break out code to a common library Marcus Folkesson
2024-06-19 12:38 ` Marcus Folkesson [this message]
[not found] ` <17DA67D349FBA8A0.21660@lists.openembedded.org>
2024-06-22 8:16 ` [OE-core] [PATCH v5 2/2] image-bootfiles.bbclass: new class, copy boot files to root filesystem Marcus Folkesson
2024-07-02 9:15 ` [PATCH v5 0/2] image-bootfiles: new class Marcus Folkesson
2024-07-03 4:51 ` Konrad Weihmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240619123853.2144538-3-marcus.folkesson@gmail.com \
--to=marcus.folkesson@gmail.com \
--cc=kweihmann@outlook.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=quentin.schulz@cherry.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.