From 802db3f96bf1f4d1a46d24624a892df3db090e36 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Thu, 10 Oct 2019 10:09:36 +0100 Subject: [PATCH 1/2] test: Add utility script to install updates from this git repo --- test/install | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100755 test/install diff --git a/test/install b/test/install new file mode 100755 index 0000000..be30017 --- /dev/null +++ b/test/install @@ -0,0 +1,30 @@ +#!/bin/sh + +# Convenience script for updating the rpi-eeprom updater via a git +# clone instead of apt install. + +# For test & debug only. + +set -e + +script_dir="$(cd "$(dirname "$0")" && pwd)" + +die() { + echo "$@" >&2 + exit 1 +} + +FIRMWARE_DIR="${script_dir}/../firmware" +CONFIG="/etc/default/rpi-eeprom-update" + +[ "$(id -u)" = "0" ] || die "$0 Must be run as root - try 'sudo $0 [-b]'" + +cp -rfv "${FIRMWARE_DIR}"/* /lib/firmware/raspberrypi/bootloader +cp -fv "${script_dir}/../rpi-eeprom-config" /usr/bin +cp -fv "${script_dir}/../rpi-eeprom-update" /usr/bin + +cp -fv "${script_dir}/../rpi-eeprom-update-default" /etc/default/rpi-eeprom-update + +if [ "$1" = "-b" ]; then + sed -i -e 's/^FIRMWARE_RELEASE_STATUS=.*/FIRMWARE_RELEASE_STATUS=beta/' "${CONFIG}" +fi From d8f713c20d4386886ce8213746ec1fb8f1af38c8 Mon Sep 17 00:00:00 2001 From: Tim Gover Date: Thu, 10 Oct 2019 10:16:31 +0100 Subject: [PATCH 2/2] recovery: Make recovery.bin specific to the release status Select the recovery.bin to use according to FIRMWARE_RELEASE_STATUS in order to allow a beta test version of recovery.bin to be provided without risking breaking the stable version of recovery.bin --- firmware/beta/recovery.bin | Bin 0 -> 60732 bytes firmware/{ => critical}/recovery.bin | Bin rpi-eeprom-update | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 firmware/beta/recovery.bin rename firmware/{ => critical}/recovery.bin (100%) diff --git a/firmware/beta/recovery.bin b/firmware/beta/recovery.bin new file mode 100644 index 0000000000000000000000000000000000000000..c2b40c94ad5ac3741010ebdd26e231c5d3a05122 GIT binary patch literal 60732 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