The commit 6889056f1e (support/scripts/genimage.sh) adds support for
creating bmap images.
Since then, the script genimage.sh looses the error returned by the
genimage command.
As a consequence, the target-finalize target looses the error as well,
and so on up to make.
This adds the shell option -e to exit immediately if a command ends with
an error, so the error is not ignored.
Fixes:
gportay@archlinux ~/src/rtone-br2-external $ make
(...)
>>> Executing post-image script support/scripts/genimage.sh
INFO: cmd: "mkdir -p "/home/gportay/src/rtone-br2-external/output/build/genimage.tmp"" (stderr):
INFO: cmd: "rm -rf "/home/gportay/src/rtone-br2-external/output/build/genimage.tmp"/*" (stderr):
INFO: cmd: "mkdir -p "/home/gportay/src/rtone-br2-external/output/build/genimage.tmp"" (stderr):
INFO: cmd: "cp -a "/tmp/tmp.EclKGwtA4R" "/home/gportay/src/rtone-br2-external/output/build/genimage.tmp/root"" (stderr):
INFO: cmd: "mkdir -p "/home/gportay/src/rtone-br2-external/output/images"" (stderr):
INFO: vfat(efi-part.vfat): cmd: "mkdosfs '/home/gportay/src/rtone-br2-external/output/images/efi-part.vfat'" (stderr):
INFO: vfat(efi-part.vfat): adding file 'efi-part/EFI' as 'EFI' ...
INFO: vfat(efi-part.vfat): cmd: "MTOOLS_SKIP_CHECK=1 mcopy -sp -i '/home/gportay/src/rtone-br2-external/output/images/efi-part.vfat' '/home/gportay/src/rtone-br2-external/output/images/efi-part/EFI' '::EFI'" (stderr):
Disk full
INFO: vfat(efi-part.vfat): cmd: "rm -f "/home/gportay/src/rtone-br2-external/output/images/efi-part.vfat"" (stderr):
ERROR: vfat(efi-part.vfat): failed to generate efi-part.vfat
INFO: cmd: "rm -rf "/home/gportay/src/rtone-br2-external/output/build/genimage.tmp/"" (stderr):
make[1]: Leaving directory '/home/gportay/src/rtone-br2-external/buildroot'
gportay@archlinux ~/src/rtone-br2-external $ echo $?
0
Signed-off-by: Gaël PORTAY <gael.portay+rtone@gmail.com>
Signed-off-by: Julien Olivain <ju.o@free.fr>
61 lines
1.4 KiB
Bash
Executable File
61 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
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"
|
|
done < <(grep '^image ' "${GENIMAGE_CFG}" | cut -d ' ' -f 2)
|
|
fi
|