mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-03-27 22:59:01 +02:00
release="n" is set in target.cfg on haswell build targets that use mrc.bin script/update/release exports LBMK_RELEASE="y" script/build/roms skips building a given target if release="n" in target.cfg *and* LBMK_RELEASE="y" you could also do the export yourself before running ./build roms, for example: export LBMK_RELEASE="y" ./build roms all This would skip these ROM images. The native haswell raminit is now stable enough in my testing, that I wish to delete the MRC-based targets. This is in line with Libreboot's Binary Blob Reduction Policy, which states: if a blob can be avoided, it should be avoided. The problem is that users often run the inject script in *lbmk* from Git, instead of from the src release archive. I forsee some users running this on modern lbmk with older release images. If the mrc-based target isn't there, the user may use an NRI-based target name, and think it works; they will insert without MRC. I foresaw this ages ago, which is why Caleb and I ensured that the script checks hashes, and hashes are included in releases. Therefore: for the time being, keep the MRC-based configs in lbmk but do not include images for them in releases. This can be done indefinitely, but I'll probably remove those configs entirely at some point. On the following boards, Libreboot now will *only* provide NRI-based ROM images for the following machines: * Dell OptiPlex 9020 SFF * Dell OptiPlex 9020 MT * Lenovo ThinkPad T440p * Lenovo ThinkPad W541/W540 I now recommend exclusive use of NRI-based images, on Haswell hardware. It's stable enough in my testing, and now supports S3. Signed-off-by: Leah Rowe <leah@libreboot.org>
154 lines
3.5 KiB
Bash
Executable File
154 lines
3.5 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
# SPDX-FileCopyrightText: 2014,2015,2020,2021,2023 Leah Rowe <leah@libreboot.org>
|
|
# SPDX-FileCopyrightText: 2015 Patrick "P. J." McDermott <pj@pehjota.net>
|
|
# SPDX-FileCopyrightText: 2015, 2016 Klemens Nanni <contact@autoboot.org>
|
|
# SPDX-FileCopyrightText: 2022, Caleb La Grange <thonkpeasant@protonmail.com>
|
|
|
|
set -u -e
|
|
|
|
export LC_COLLATE=C
|
|
export LC_ALL=C
|
|
|
|
. "include/err.sh"
|
|
. "include/option.sh"
|
|
|
|
export LBMK_RELEASE="$lbmk_release"
|
|
|
|
eval "$(setvars "" option aur_notice tmpdir)"
|
|
err="fail"
|
|
|
|
tmpdir_was_set="y"
|
|
set | grep TMPDIR 1>/dev/null 2>/dev/null || tmpdir_was_set="n"
|
|
if [ "${tmpdir_was_set}" = "y" ]; then
|
|
[ "${TMPDIR%_*}" = "/tmp/lbmk" ] || tmpdir_was_set="n"
|
|
fi
|
|
if [ "${tmpdir_was_set}" = "n" ]; then
|
|
export TMPDIR="/tmp"
|
|
tmpdir="$(mktemp -d -t lbmk_XXXXXXXX)"
|
|
export TMPDIR="${tmpdir}"
|
|
else
|
|
export TMPDIR="${TMPDIR}"
|
|
tmpdir="${TMPDIR}"
|
|
fi
|
|
|
|
linkpath="${0}"
|
|
linkname="${linkpath##*/}"
|
|
buildpath="./script/${linkname}"
|
|
|
|
main()
|
|
{
|
|
x_ id -u 1>/dev/null 2>/dev/null
|
|
[ $# -lt 1 ] && $err "Too few arguments. Try: ${0} help"
|
|
|
|
[ "$1" = "dependencies" ] && x_ install_packages $@ && lbmk_exit 0
|
|
|
|
for cmd in initcmd check_git check_project git_init excmd; do
|
|
eval "${cmd} \$@"
|
|
done
|
|
lbmk_exit 0
|
|
}
|
|
|
|
initcmd()
|
|
{
|
|
[ "$(id -u)" != "0" ] || $err "this command as root is not permitted"
|
|
|
|
check_project
|
|
|
|
case "${1}" in
|
|
help) usage ${0} ;;
|
|
list) items "${buildpath}" ;;
|
|
version) mkversion ;;
|
|
*)
|
|
option="${1}"
|
|
return 0 ;;
|
|
esac
|
|
lbmk_exit 0
|
|
}
|
|
|
|
install_packages()
|
|
{
|
|
if [ $# -lt 2 ]; then
|
|
printf "You must specify a distro, namely:\n" 1>&2
|
|
printf "Look at files under config/dependencies/\n" 1>&2
|
|
printf "Example: ./build dependencies debian\n" 1>&2
|
|
$err "install_packages: target not specified"
|
|
fi
|
|
|
|
[ -f "config/dependencies/${2}" ] || $err "Unsupported target"
|
|
|
|
. "config/dependencies/${2}"
|
|
|
|
x_ ${pkg_add} ${pkglist}
|
|
[ -z "${aur_notice}" ] && return 0
|
|
printf "You must install AUR packages: %s\n" "$aur_notice" 1>&2
|
|
}
|
|
|
|
# release archives contain .gitignore, but not .git.
|
|
# lbmk can be run from lbmk.git, or an archive.
|
|
git_init()
|
|
{
|
|
[ -L ".git" ] && $err "Reference .git is a symlink"
|
|
[ -e ".git" ] && return 0
|
|
eval "$(setvars "$(date -Rd @${versiondate})" cdate _nogit)"
|
|
|
|
git init || $err "${PWD}: cannot initialise Git repository"
|
|
git add -A . || $err "${PWD}: cannot add files to Git repository"
|
|
git commit -m "${projectname} ${version}" --date "${cdate}" \
|
|
--author="lbmk <lbmk@libreboot.org>" || \
|
|
$err "$PWD: can't commit ${projectname}/${version}, date $cdate"
|
|
git tag -a "${version}" -m "${projectname} ${version}" || \
|
|
$err "${PWD}: cannot git-tag ${projectname}/${version}"
|
|
}
|
|
|
|
excmd()
|
|
{
|
|
lbmkcmd="${buildpath}/${option}"
|
|
[ -f "${lbmkcmd}" ] || $err "Invalid command. Run: ${linkpath} help"
|
|
shift 1; "$lbmkcmd" $@ || $err "excmd: ${lbmkcmd} ${@}"
|
|
}
|
|
|
|
usage()
|
|
{
|
|
progname=${0}
|
|
cat <<- EOF
|
|
$(mkversion)
|
|
|
|
USAGE: ${progname} <OPTION>
|
|
|
|
possible values for 'OPTION':
|
|
$(items "${buildpath}")
|
|
|
|
To know what ${projectname} version you're on, type:
|
|
${progname} version
|
|
|
|
Refer to ${projectname} documentation for more info.
|
|
EOF
|
|
}
|
|
|
|
mkversion()
|
|
{
|
|
printf "revision: %s %s\n" "$projectname" "$version"
|
|
printf "revision date: %s\n" "$(date -Rud @${versiondate})"
|
|
}
|
|
|
|
lbmk_exit()
|
|
{
|
|
tmp_cleanup || err_ "lbmk_exit: can't rm tmpdir upon exit $1: $tmpdir"
|
|
exit $1
|
|
}
|
|
|
|
fail()
|
|
{
|
|
tmp_cleanup || printf "WARNING: can't rm tmpdir: %s\n" "$tmpdir" 1>&2
|
|
err_ "${1}"
|
|
}
|
|
|
|
tmp_cleanup()
|
|
{
|
|
[ "${tmpdir_was_set}" = "n" ] || return 0
|
|
rm -Rf "${tmpdir}" || return 1
|
|
}
|
|
|
|
main $@
|