1#!/bin/bash
2
3set -e
4
5BOARD_DIR="$(dirname $0)"
6BOARD_NAME="$(basename ${BOARD_DIR})"
7GENIMAGE_CFG="${BOARD_DIR}/genimage-${BOARD_NAME}.cfg"
8GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
9
10# generate genimage from template if a board specific variant doesn't exists
11if [ ! -e "${GENIMAGE_CFG}" ]; then
12	GENIMAGE_CFG="${BINARIES_DIR}/genimage.cfg"
13	FILES=()
14
15	for i in "${BINARIES_DIR}"/*.dtb "${BINARIES_DIR}"/rpi-firmware/*; do
16		FILES+=( "${i#${BINARIES_DIR}/}" )
17	done
18
19	KERNEL=$(sed -n 's/^kernel=//p' "${BINARIES_DIR}/rpi-firmware/config.txt")
20	FILES+=( "${KERNEL}" )
21
22	BOOT_FILES=$(printf '\\t\\t\\t"%s",\\n' "${FILES[@]}")
23	sed "s|#BOOT_FILES#|${BOOT_FILES}|" "${BOARD_DIR}/genimage.cfg.in" \
24		> "${GENIMAGE_CFG}"
25fi
26
27# Pass an empty rootpath. genimage makes a full copy of the given rootpath to
28# ${GENIMAGE_TMP}/root so passing TARGET_DIR would be a waste of time and disk
29# space. We don't rely on genimage to build the rootfs image, just to insert a
30# pre-built one in the disk image.
31
32trap 'rm -rf "${ROOTPATH_TMP}"' EXIT
33ROOTPATH_TMP="$(mktemp -d)"
34
35rm -rf "${GENIMAGE_TMP}"
36
37genimage \
38	--rootpath "${ROOTPATH_TMP}"   \
39	--tmppath "${GENIMAGE_TMP}"    \
40	--inputpath "${BINARIES_DIR}"  \
41	--outputpath "${BINARIES_DIR}" \
42	--config "${GENIMAGE_CFG}"
43
44exit $?
45