99 lines
2.0 KiB
Bash
Executable File
99 lines
2.0 KiB
Bash
Executable File
#!/bin/bash -e
|
|
|
|
link_image() {
|
|
SRC="$1"
|
|
DST="$2"
|
|
message "Linking $DST from $SRC..."
|
|
ln -rsf "$SRC" "$DST"
|
|
}
|
|
|
|
build_firmware()
|
|
{
|
|
mkdir -p "$RK_FIRMWARE_DIR"
|
|
|
|
# Legacy rockdev/
|
|
rm -rf "$RK_ROCKDEV_DIR"
|
|
ln -rsf "$RK_FIRMWARE_DIR" "$RK_ROCKDEV_DIR"
|
|
|
|
"$RK_SCRIPTS_DIR/check-grow-align.sh"
|
|
|
|
link_image "$RK_CHIP_DIR/$RK_PARAMETER" "$RK_FIRMWARE_DIR/parameter.txt"
|
|
|
|
"$RK_SCRIPTS_DIR/mk-extra-parts.sh"
|
|
|
|
# Make sure that the loader is ready
|
|
if [ ! -r "$RK_FIRMWARE_DIR/MiniLoaderAll.bin" ]; then
|
|
notice "Loader is not ready, building it..."
|
|
"$RK_SCRIPTS_DIR/mk-loader.sh"
|
|
fi
|
|
|
|
notice "Packed files:"
|
|
for f in "$RK_FIRMWARE_DIR"/*; do
|
|
NAME=$(basename "$f")
|
|
|
|
if [ ! -r "$f" ]; then
|
|
warning "$NAME($(readlink -f "$f")) is invalid!"
|
|
continue
|
|
fi
|
|
|
|
echo -n "$NAME"
|
|
if [ -L "$f" ]; then
|
|
echo -n "($(readlink -f "$f"))"
|
|
fi
|
|
|
|
FILE_SIZE=$(ls -lLh $f | xargs | cut -d' ' -f 5)
|
|
echo ": $FILE_SIZE"
|
|
|
|
echo "$NAME" | grep -q ".img$" || continue
|
|
|
|
# Assert the image's size smaller then the limit
|
|
PART_NAME="${NAME%.img}"
|
|
PART_SIZE_KB="$(rk_partition_size_kb "$PART_NAME")"
|
|
|
|
if [ "$PART_NAME" = rootfs -a "$PART_SIZE_KB" -eq 0 ]; then
|
|
PART_NAME=system
|
|
PART_SIZE_KB="$(rk_partition_size_kb "$PART_NAME")"
|
|
fi
|
|
|
|
[ ! "$PART_SIZE_KB" -eq 0 ] || continue
|
|
|
|
FILE_SIZE_KB="$(( $(stat -Lc "%s" "$f") / 1024 ))"
|
|
if [ "$PART_SIZE_KB" -lt "$FILE_SIZE_KB" ]; then
|
|
error "error: $NAME's size exceed parameter's $PART_NAME partition size limit!"
|
|
return 1
|
|
fi
|
|
done
|
|
|
|
[ -z "$RK_UPDATE" ] || "$RK_SCRIPTS_DIR/mk-updateimg.sh"
|
|
|
|
message "Images under $RK_FIRMWARE_DIR/ are ready!"
|
|
|
|
finish_build
|
|
}
|
|
|
|
# Hooks
|
|
|
|
usage_hook()
|
|
{
|
|
usage_oneline "firmware" "pack and check firmwares"
|
|
}
|
|
|
|
clean_hook()
|
|
{
|
|
rm -rf "$RK_FIRMWARE_DIR" "$RK_ROCKDEV_DIR"
|
|
}
|
|
|
|
POST_BUILD_CMDS="firmware"
|
|
post_build_hook()
|
|
{
|
|
message "=========================================="
|
|
message " Start packing firmwares"
|
|
message "=========================================="
|
|
|
|
build_firmware
|
|
}
|
|
|
|
source "${RK_BUILD_HELPER:-$(dirname "$(realpath "$0")")/build-helper}"
|
|
|
|
post_build_hook $@
|