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