mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-11 14:02:52 +02:00
544737c864
some checks check for specific utils, which are then used to indicate the existence of other utils, which means that building them singularly, as is currently done, may result in errors later if another tool doesn't exist compiled yet this is an obscure bug, fixed by this patch. more of a workaround really. a dirty hack. when checking for any of the coreboot utilities required, build all coreboot utilities that are possibly required the utilities are small enough that this does not add much extra time to build, and in most cases, all of them will be needed anyway
123 lines
3.4 KiB
Bash
Executable File
123 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
|
|
#
|
|
# helper script: generate release archive (ROM images)
|
|
#
|
|
# Copyright (C) 2020,2021,2022 Leah Rowe <info@minifree.org>
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
#
|
|
|
|
# This script assumes that the working directory is the root
|
|
# of git or release archive
|
|
|
|
[ "x${DEBUG+set}" = 'xset' ] && set -v
|
|
set -u -e
|
|
|
|
projectname="$(cat projectname)"
|
|
|
|
version="version-unknown"
|
|
if [ -f version ]; then
|
|
version="$(cat version)"
|
|
fi
|
|
versiondate="version-date-unknown"
|
|
if [ -f versiondate ]; then
|
|
versiondate="$(cat versiondate)"
|
|
fi
|
|
|
|
if [ ! -d "bin/" ]; then
|
|
printf "build/release/roms: no ROMs built yet. Exiting.\n"
|
|
exit 1
|
|
fi
|
|
|
|
[ ! -d "release/" ] && \
|
|
mkdir -p release/
|
|
[ ! -d "release/${version}/" ] && \
|
|
mkdir -p "release/${version}/"
|
|
[ -d "release/${version}/roms/" ] && \
|
|
rm -Rf "release/${version}/roms/"
|
|
[ ! -d "release/${version}/roms/" ] && \
|
|
mkdir -p "release/${version}/roms/"
|
|
|
|
printf "Building ROM image archives for version %s\n" "${version}"
|
|
|
|
for romdir in bin/*; do
|
|
target="${romdir##*/}"
|
|
|
|
echo ${target}
|
|
if [ ! -d "${romdir}/" ]; then
|
|
continue
|
|
fi
|
|
|
|
CONFIG_HAVE_MRC="y"
|
|
CONFIG_HAVE_ME_BIN="y"
|
|
grep "CONFIG_HAVE_ME_BIN=y" "resources/coreboot/${target}/config/"* || CONFIG_HAVE_ME_BIN="n"
|
|
grep "CONFIG_HAVE_MRC=y" "resources/coreboot/${target}/config/"* || CONFIG_HAVE_MRC="n"
|
|
|
|
# remove ME/MRC from ROM images
|
|
if [ "${CONFIG_HAVE_ME_BIN}" = "y" ]; then
|
|
if [ ! -d coreboot/default ]; then
|
|
./download coreboot default || exit 1
|
|
fi
|
|
|
|
ifdtooldir="coreboot/default/util/ifdtool"
|
|
ifdtool="${ifdtooldir}/ifdtool"
|
|
if [ ! -f "${ifdtool}" ]; then
|
|
./build module cbutils default || exit 1
|
|
fi
|
|
|
|
cbfstooldir="coreboot/default/util/cbfstool"
|
|
cbfstool="${cbfstooldir}/cbfstool"
|
|
if [ ! -f "${cbfstool}" ]; then
|
|
./build module cbutils default || exit 1
|
|
fi
|
|
|
|
rm -Rf "${romdir}_tmp" # dirty hack, to reduce disk io later
|
|
# rather than using /tmp, which might not be tmpfs
|
|
mkdir "${romdir}_tmp"
|
|
|
|
for romfile in "${romdir}"/*.rom
|
|
do
|
|
if [ ! -f "${romfile}" ]
|
|
then
|
|
continue
|
|
fi
|
|
${ifdtool} --nuke me "${romfile}" || exit 1
|
|
mv "${romfile}" "${romdir}_tmp"/
|
|
mv "${romfile}.new" "${romfile}"
|
|
|
|
if [ "${CONFIG_HAVE_MRC}" = "y" ]
|
|
then
|
|
${cbfstool} "${romfile}" remove -n mrc.bin || exit 1
|
|
${cbfstool} "${romfile}" print
|
|
fi
|
|
done
|
|
fi
|
|
|
|
printf "Generating release/%s/roms/%s-%s_%s.tar.xz\n" "${version}" "${projectname}" "${version}" "${target##*/}"
|
|
printf "%s\n" "${version}" > "${romdir}/version"
|
|
printf "%s\n" "${versiondate}" > "${romdir}/versiondate"
|
|
printf "%s\n" "${projectname}" > "${romdir}/projectname"
|
|
tar -c "${romdir}/" | xz -9e >"release/${version}/roms/${projectname}-${version}_${target##*/}.tar.xz"
|
|
|
|
if [ -d "${romdir}_tmp" ]
|
|
then
|
|
rm -Rf "${romdir}"
|
|
mv "${romdir}_tmp" "${romdir}"
|
|
fi
|
|
done
|
|
|
|
printf "\nROM image release archives available at release/%s/roms/\n\n" "${version}"
|
|
|