Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Korsgaard <peter@korsgaard.com>
To: buildroot@buildroot.org
Cc: Martin Bark <martin@barkynet.com>,
	Julien Grossholtz <julien.grossholtz@openest.io>
Subject: [Buildroot] [PATCH 2/3] board/raspberrypi/post-image.sh: generate genimage config from template if not present
Date: Wed,  5 Jul 2023 18:46:15 +0200	[thread overview]
Message-ID: <20230705164616.671351-2-peter@korsgaard.com> (raw)
In-Reply-To: <20230705164616.671351-1-peter@korsgaard.com>

The rpi genimage configurations are all identical, except for the boot
partition files, which include:

- Device tree files (*.dtb)
- rpi-firmware files (rpi-firmware/*)
- Kernel image (Image/zImage)

All of these are quite simple to figure out programatically based on the
content of BINARIES_DIR, so extend post-image.sh to fall back to generating
a genimage configuration based on genimage.cfg.in if a board specific one
does not exist.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
 board/raspberrypi/genimage.cfg.in | 25 +++++++++++++++++++++++++
 board/raspberrypi/post-image.sh   | 17 +++++++++++++++++
 2 files changed, 42 insertions(+)
 create mode 100644 board/raspberrypi/genimage.cfg.in

diff --git a/board/raspberrypi/genimage.cfg.in b/board/raspberrypi/genimage.cfg.in
new file mode 100644
index 0000000000..fd38b86a0c
--- /dev/null
+++ b/board/raspberrypi/genimage.cfg.in
@@ -0,0 +1,25 @@
+image boot.vfat {
+	vfat {
+		files = {
+#BOOT_FILES#
+		}
+	}
+
+	size = 32M
+}
+
+image sdcard.img {
+	hdimage {
+	}
+
+	partition boot {
+		partition-type = 0xC
+		bootable = "true"
+		image = "boot.vfat"
+	}
+
+	partition rootfs {
+		partition-type = 0x83
+		image = "rootfs.ext4"
+	}
+}
diff --git a/board/raspberrypi/post-image.sh b/board/raspberrypi/post-image.sh
index 6cad20fb9e..9b9eac972b 100755
--- a/board/raspberrypi/post-image.sh
+++ b/board/raspberrypi/post-image.sh
@@ -7,6 +7,23 @@ BOARD_NAME="$(basename ${BOARD_DIR})"
 GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg"
 GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
 
+# generate genimage from template if a board specific variant doesn't exists
+if [ ! -e "${GENIMAGE_CFG}" ]; then
+	GENIMAGE_CFG="${BINARIES_DIR}/genimage.cfg"
+	FILES=()
+
+	for i in "${BINARIES_DIR}"/*.dtb "${BINARIES_DIR}"/rpi-firmware/*; do
+		FILES+=( "${i#${BINARIES_DIR}/}" )
+	done
+
+	KERNEL=$(sed -n 's/^kernel=//p' "${BINARIES_DIR}/rpi-firmware/config.txt")
+	FILES+=( "${KERNEL}" )
+
+	BOOT_FILES=$(printf '\\t\\t\\t"%s",\\n' "${FILES[@]}")
+	sed "s|#BOOT_FILES#|${BOOT_FILES}|" "${BOARD_DIR}/genimage.cfg.in" \
+		> "${GENIMAGE_CFG}"
+fi
+
 # Pass an empty rootpath. genimage makes a full copy of the given rootpath to
 # ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk
 # space. We don't rely on genimage to build the rootfs image, just to insert a
-- 
2.30.2

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

  reply	other threads:[~2023-07-05 16:46 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-05 16:46 [Buildroot] [PATCH 1/3] board/raspberry: handle dtb overlays for all variants Peter Korsgaard
2023-07-05 16:46 ` Peter Korsgaard [this message]
2023-09-29  7:13   ` [Buildroot] [PATCH 2/3] board/raspberrypi/post-image.sh: generate genimage config from template if not present Peter Korsgaard
2023-07-05 16:46 ` [Buildroot] [PATCH 3/3] board/raspberrypi: drop variant-specific genimage files Peter Korsgaard
2023-07-05 18:10   ` Peter Korsgaard
2023-09-29  7:13   ` Peter Korsgaard
2023-07-06 11:57 ` [Buildroot] [PATCH 1/3] board/raspberry: handle dtb overlays for all variants Peter Korsgaard
2023-07-17 12:13   ` Peter Korsgaard

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=20230705164616.671351-2-peter@korsgaard.com \
    --to=peter@korsgaard.com \
    --cc=buildroot@buildroot.org \
    --cc=julien.grossholtz@openest.io \
    --cc=martin@barkynet.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox