| #!/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" |
| done < <(grep '^image ' "${GENIMAGE_CFG}" | cut -d ' ' -f 2) |
| fi |