mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-29 18:51:12 -09:00
The patch adds the possibility to create, in addition to the usual image, an image of type bmap that drastically reduces the amount of data that needs to be written to an SD card, resulting in time savings. It looks at whether BR2_PACKAGE_HOST_BMAP_TOOLS is enabled to decide whether it should or not generate bmap tool images. It generates bmap images for all images referenced in the genimage configuration file, as long as they exist in $(BINARIES_DIR). Signed-off-by: Dario Binacchi <dario.binacchi@amarulasolutions.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
60 lines
1.4 KiB
Bash
Executable File
60 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
die() {
|
|
cat <<EOF >&2
|
|
Error: $@
|
|
|
|
Usage: ${0} -c GENIMAGE_CONFIG_FILE
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
# Parse arguments and put into argument list of the script
|
|
opts="$(getopt -n "${0##*/}" -o c: -- "$@")" || exit $?
|
|
eval set -- "$opts"
|
|
|
|
GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
|
|
|
|
while true ; do
|
|
case "$1" in
|
|
-c)
|
|
GENIMAGE_CFG="${2}";
|
|
shift 2 ;;
|
|
--) # Discard all non-option parameters
|
|
shift 1;
|
|
break ;;
|
|
*)
|
|
die "unknown option '${1}'" ;;
|
|
esac
|
|
done
|
|
|
|
[ -n "${GENIMAGE_CFG}" ] || die "Missing argument"
|
|
|
|
# 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
|
|
# pre-built one in the disk image.
|
|
|
|
trap 'rm -rf "${ROOTPATH_TMP}"' EXIT
|
|
ROOTPATH_TMP="$(mktemp -d)"
|
|
|
|
rm -rf "${GENIMAGE_TMP}"
|
|
|
|
genimage \
|
|
--rootpath "${ROOTPATH_TMP}" \
|
|
--tmppath "${GENIMAGE_TMP}" \
|
|
--inputpath "${BINARIES_DIR}" \
|
|
--outputpath "${BINARIES_DIR}" \
|
|
--config "${GENIMAGE_CFG}"
|
|
|
|
if grep -Eq "^BR2_PACKAGE_HOST_BMAP_TOOLS=y$" "${BR2_CONFIG}"; then
|
|
while IFS= read -r image; do
|
|
image_path="${BINARIES_DIR}/${image}"
|
|
if ! test -f "${image_path}"; then
|
|
continue
|
|
fi
|
|
bmaptool create "${image_path}" -o "${image_path}.bmap"
|
|
gzip -c "${image_path}" > "${image_path}.gz"
|
|
done < <(grep '^image ' "${GENIMAGE_CFG}" | cut -d ' ' -f 2)
|
|
fi
|