From 560f001e991f985f6ae285e5086cf104d541c012 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Tue, 10 Dec 2019 10:34:26 +0000 Subject: [PATCH] rpi-eeprom-update: Add support for config txt processing hooks --- rpi-eeprom-update | 19 +++++++++++++++++-- rpi-eeprom-update-default | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/rpi-eeprom-update b/rpi-eeprom-update index 9936005..3295234 100755 --- a/rpi-eeprom-update +++ b/rpi-eeprom-update @@ -57,6 +57,9 @@ cleanup() { if [ -f "${TMP_EEPROM_CONFIG}" ]; then rm -f "${TMP_EEPROM_CONFIG}" fi + if [ -f "${NEW_EEPROM_CONFIG}" ]; then + rm -f "${NEW_EEPROM_CONFIG}" + fi if [ -d "${TMP_BOOTFS_MNT}" ]; then umount "${TMP_BOOTFS_MNT}" rmdir "${TMP_BOOTFS_MNT}" @@ -64,6 +67,7 @@ cleanup() { TMP_BOOTFS_MNT= TMP_EEPROM_IMAGE= TMP_EEPROM_CONFIG= + NEW_EEPROM_CONFIG= } trap cleanup EXIT @@ -77,6 +81,7 @@ prepareImage() [ -f "${BOOTLOADER_UPDATE_IMAGE}" ] || die "EEPROM image \'${BOOTLOADER_UPDATE_IMAGE}\' not found" TMP_EEPROM_IMAGE="$(mktemp)" TMP_EEPROM_CONFIG="$(mktemp)" + NEW_EEPROM_CONFIG="$(mktemp)" mkdir -p "${FIRMWARE_BACKUP_DIR}" @@ -85,7 +90,17 @@ prepareImage() backup="${FIRMWARE_BACKUP_DIR}/pieeprom-backup-$(date +%Y%m%d-%H%M%S).conf" cp -f "${TMP_EEPROM_CONFIG}" "${backup}" - if [ "$(wc -l "${TMP_EEPROM_CONFIG}" | awk '{print $1}')" -lt 3 ]; then + if [ -x "${EEPROM_CONFIG_HOOK}" ]; then + echo "Running EEPROM config hook ${EEPROM_CONFIG_HOOK}" + if ! "${EEPROM_CONFIG_HOOK}" -u "${BOOTLOADER_UPDATE_IMAGE}" < "${TMP_EEPROM_CONFIG}" > "${NEW_EEPROM_CONFIG}"; then + echo "EEPROM config hook \"${EEPROM_CONFIG_HOOK}\" failed. Using original configuration" + cp -f "${TMP_EEPROM_CONFIG}" "${NEW_EEPROM_CONFIG}" + fi + else + cp -f "${TMP_EEPROM_CONFIG}" "${NEW_EEPROM_CONFIG}" + fi + + if [ "$(wc -l "${NEW_EEPROM_CONFIG}" | awk '{print $1}')" -lt 3 ]; then # Don't propagate empty EEPROM config files and also prevent the initial # bootloader config with WAKE_ON_GPIO=0 propgating to newer versions by # accident. @@ -97,7 +112,7 @@ prepareImage() if [ "${OVERWRITE_CONFIG}" = 0 ]; then "${script_dir}/rpi-eeprom-config" \ --out "${TMP_EEPROM_IMAGE}" \ - --config "${TMP_EEPROM_CONFIG}" "${BOOTLOADER_UPDATE_IMAGE}" + --config "${NEW_EEPROM_CONFIG}" "${BOOTLOADER_UPDATE_IMAGE}" fi } diff --git a/rpi-eeprom-update-default b/rpi-eeprom-update-default index d2f409a..f567b6a 100644 --- a/rpi-eeprom-update-default +++ b/rpi-eeprom-update-default @@ -5,3 +5,4 @@ FIRMWARE_IMAGE_DIR="${FIRMWARE_ROOT}/${FIRMWARE_RELEASE_STATUS}" FIRMWARE_BACKUP_DIR="/var/lib/raspberrypi/bootloader/backup" BOOTFS=/boot USE_FLASHROM=0 +EEPROM_CONFIG_HOOK=