2019-05-02 16:10:29 -06:00

50 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
if [ -z "$1" ]
then
echo "$0 [model]" >&2
exit 1
fi
MODEL="$1"
if [ ! -d "models/${MODEL}" ]
then
echo "model '${MODEL}' not found" >&2
exit 1
fi
MODEL_DIR="$(realpath "models/${MODEL}")"
rm -rf build
mkdir -p build
# Rebuild firmware-setup (used by edk2)
touch apps/firmware-setup/Cargo.toml
make -C apps/firmware-setup
# Rebuild CorebootPayloadPkg using edk2
export
./scripts/_build/edk2.sh build/UEFIPAYLOAD.fd \
-D FIRMWARE_OPEN_FIRMWARE_SETUP="firmware-setup/firmware-setup.inf"
# Rebuild coreboot
export FIRMWARE_OPEN_UEFIPAYLOAD="$(realpath build/UEFIPAYLOAD.fd)"
export FIRMWARE_OPEN_MODEL_DIR="${MODEL_DIR}"
COREBOOT="$(realpath "build/${MODEL}.rom")"
./scripts/_build/coreboot.sh "${MODEL_DIR}/coreboot.config" "${COREBOOT}"
# Rebuild firmware-update
set -x
SHASUM="$(sha384sum "${COREBOOT}" | cut -d " " -f 1)"
USB="$(realpath "build/${MODEL}.img")"
export BASEDIR="system76-${SHASUM}"
pushd apps/firmware-update >/dev/null
rm -rf "build/x86_64-efi-pe"
make "build/x86_64-efi-pe/boot.img"
cp -v "build/x86_64-efi-pe/boot.img" "${USB}.partial"
popd >/dev/null
mmd -i "${USB}.partial@@1M" "::${BASEDIR}/firmware"
mcopy -i "${USB}.partial@@1M" "${COREBOOT}" "::${BASEDIR}/firmware/firmware.rom"
mv -v "${USB}.partial" "${USB}"