summaryrefslogtreecommitdiff
path: root/script/update/release/roms
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2023-10-08 02:34:50 +0100
committerLeah Rowe <leah@libreboot.org>2023-10-08 08:08:39 +0100
commitd1ba94ea0842c2e464f2c9177529de5319c8a33f (patch)
tree50498b862e2d7cc8e1decbf0ffce3229374930d9 /script/update/release/roms
parente7a77b50e865c715bbf7c7566e87967c53136d8b (diff)
update/release/*: merge to update/project/release
The logic has been re-written, where source archives are concerned. This clones the current repository, and starts a new build from scratch. A custom release directory is possible, by passing -d This eliminates a step during build-testing, saving hours of time, because it builds the release archive *inside* the release archive, with git files removed, thus replicating the same setup that the user would have. This also makes everything a bit more consistent, because it's guaranteed that a release archive will always have the same files; previously, the release build script would only copy what was already built, without building anything. Now, this script builds everything itself. The script also builds serprog images, not just coreboot. Usage: ./update project release If -d is not passed, release/ is used inside lbmk. Otherwise, you could do: ./update project release -d /path/to/directory If the directory exists, this script will exit (error). Other minor fixes: build/fw/coreboot: make version in coreboot-version (file) not contain hyphens, to work around a quirk in coreboot's build system when not building on regular libreboot releases. this quirk only appears when lbmk is not being compiled under git. The other main benefit of this change is that the new script will probably require a lot less maintenance. Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'script/update/release/roms')
-rwxr-xr-xscript/update/release/roms175
1 files changed, 0 insertions, 175 deletions
diff --git a/script/update/release/roms b/script/update/release/roms
deleted file mode 100755
index cec93951..00000000
--- a/script/update/release/roms
+++ /dev/null
@@ -1,175 +0,0 @@
-#!/usr/bin/env sh
-# SPDX-License-Identifier: GPL-3.0-or-later
-# SPDX-FileCopyrightText: 2020,2021,2022,2023 Leah Rowe <leah@libreboot.org>
-
-[ "x${DEBUG+set}" = 'xset' ] && set -v
-set -u -e
-
-. "include/err.sh"
-
-tree="default"
-eval "$(setvars "" target CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN \
- CONFIG_KBC1126_FIRMWARE CONFIG_INCLUDE_SMSC_SCH5545_EC_FW)"
-ifdtool="cbutils/${tree}/ifdtool"
-cbfstool="cbutils/${tree}/cbfstool"
-microcode_required="y"
-
-main()
-{
- printf "Building ROM image archives for version %s\n" "${version}"
-
- init_check
- for romdir in bin/*; do
- [ -d "${romdir}" ] || continue
- make_archive "${romdir}"
- done
- printf "\nROM archives available at release/%s/roms/\n\n" "${version}"
-}
-
-init_check()
-{
- [ ! -d "bin/" ] && \
- err "init_check: no ROMs built yet (error)"
- [ -d "release/" ] || \
- x_ mkdir -p release/
- [ -d "release/${version}/" ] || \
- x_ mkdir -p "release/${version}/"
- [ ! -d "release/${version}/roms/" ] || \
- x_ rm -Rf "release/${version}/roms/"
- [ -d "release/${version}/roms/" ] && return 0
- x_ mkdir -p "release/${version}/roms/"
-}
-
-make_archive()
-{
- builddir="${1}"
- romdir="tmp/romdir"
- x_ rm -Rf "${romdir}"
- target="${builddir##*/}"
-
- if [ ! -f "config/coreboot/${target}/target.cfg" ]; then
- # No config, just make a tarball
- tarball=release/${version}/roms/${target}_${version}.tar.xz
- x_ tar -c "${builddir}" | xz -T0 -6 > ${tarball} || \
- x_ rm -f ${tarball}
- return 0
- fi
-
- romdir="${romdir}/bin/${target}"
- x_ mkdir -p "${romdir}"
- x_ cp "${builddir}"/* "${romdir}"
-
- printf "%s\n" "${target}"
-
- microcode_required="y"
- . "config/coreboot/${target}/target.cfg"
- if [ "${microcode_required}" != "y" ] && \
- [ "${microcode_required}" != "n" ]; then microcode_required="y"; fi
-
- for x in CONFIG_HAVE_MRC CONFIG_HAVE_ME_BIN CONFIG_KBC1126_FIRMWARE \
- CONFIG_INCLUDE_SMSC_SCH5545_EC_FW; do
- eval "${x}=\"y\""
- grep "${x}=y" "config/coreboot/${target}/config/"* || \
- eval "${x}=\"n\""
- done
-
- # remove ME/MRC/EC firmware from ROM images
- if [ "${CONFIG_HAVE_ME_BIN}" = "y" ] || \
- [ "${target}" = "e6400_4mb" ] || \
- [ "${microcode_required}" = "n" ]; then
- strip_archive "${romdir}"
- fi
-
- printf "Generating release/%s/roms/%s-%s_%s.tar.xz\n" \
- "${version}" "${projectname}" "${version}" "${target##*/}"
- x_ printf "%s\n" "${version}" > "${romdir}/version"
- x_ printf "%s\n" "${versiondate}" > "${romdir}/versiondate"
- x_ printf "%s\n" "${projectname}" > "${romdir}/projectname"
-
- for x in u-boot seabios coreboot; do
- [ -d "src/${x}/default" ] || \
- x_ ./update project trees -f ${x} default
- done
- [ -d src/grub ] || x_ ./update project trees -f grub
-
- # copy licenses to rom image archive, for completion
- x_ cp "src/grub/COPYING" "${romdir}/COPYING.grub"
- x_ cp "src/coreboot/default/COPYING" "${romdir}/COPYING.coreboot"
- x_ cp "src/seabios/default/COPYING" "${romdir}/COPYING.coreboot"
- x_ cp -R "src/u-boot/default/Licenses" "${romdir}/COPYING.u-boot"
-
- archivename="${projectname}-${version}_${target##*/}"
- f="release/${version}/roms/${archivename}"
- (
- x_ cd "${romdir%/bin/${target}}"
- x_ tar -c "bin/${target}/" | xz -T0 -9e > "${archivename}.tar.xz"
- )
- x_ mv "${romdir%/bin/${target}}/${archivename}.tar.xz" "${f}.tar.xz"
- x_ rm -Rf "${romdir%/bin/${target}}"
-}
-
-strip_archive()
-{
- romdir=${1}
- [ -d "src/coreboot/${tree}" ] || \
- x_ ./update project trees -f coreboot ${tree}
-
- x_ ./update project trees -b coreboot utils ${tree}
-
- if [ "${microcode_required}" = "n" ]; then
- for romfile in "${romdir}"/*.rom; do
- [ -f "${romfile}" ] || continue
- strip_ucode "${romfile}"
- done
- for romfile in "${romdir}"/*.tmprom; do
- [ -f "${romfile}" ] || continue
- x_ mv "${romfile}" "${romfile%.tmprom}.rom"
- done
- fi
-
- # Hash the rom before removing vendor files
- x_ rm -f "${romdir}/vendorhashes"
- x_ touch "${romdir}/vendorhashes"
- (
- x_ cd "${romdir}"
- x_ sha512sum *.rom >> vendorhashes
- )
- for romfile in "${romdir}"/*.rom; do
- [ -f "${romfile}" ] || continue
- strip_rom_image "${romfile}"
- done
-}
-
-strip_ucode()
-{
- romfile=${1}
- _newrom_b="${romfile%.rom}_nomicrocode.tmprom"
- x_ cp "${romfile}" "${_newrom_b}"
- microcode_present="y"
- "${cbfstool}" "${_newrom_b}" remove -n \
- cpu_microcode_blob.bin 2>/dev/null || microcode_present="n"
- [ "${microcode_present}" = "n" ] || return 0
- printf "REMARK: '%s' already lacks microcode\n" "${romfile}" 1>&2
- printf "Renaming default ROM file instead.\n" 1>&2
- x_ mv "${romfile}" "${_newrom_b}"
-}
-
-strip_rom_image()
-{
- [ -f "${1}" ] || return 0
- [ "${CONFIG_HAVE_ME_BIN}" != "y" ] || \
- x_ "${ifdtool}" --nuke me "${1}" -O "${1}"
- [ "${CONFIG_HAVE_MRC}" != "y" ] || \
- x_ "${cbfstool}" "${1}" remove -n mrc.bin
- [ "${CONFIG_INCLUDE_SMSC_SCH5545_EC_FW}" != "y" ] || \
- x_ "${cbfstool}" "${1}" remove -n sch5545_ecfw.bin
- if [ "${CONFIG_KBC1126_FIRMWARE}" = "y" ]; then
- x_ "${cbfstool}" "${1}" remove -n ecfw1.bin
- x_ "${cbfstool}" "${1}" remove -n ecfw2.bin
- fi
- # TODO: replace this board-specific hack
- [ "${target}" = "e6400_4mb" ] || return 0
- x_ "${cbfstool}" "${1}" remove -n "pci10de,06eb.rom"
-}
-
-main $@