mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-11 14:02:52 +02:00
cc1642096e
This results in much cleaner copyright and license declarations. SPDX headers are legally recognised and make auditing easier. Also, remove descriptions of each script, from each script. Libreboot documentation at docs/maintain/ describes them. Signed-off-by: Leah Rowe <leah@libreboot.org>
132 lines
3.0 KiB
Bash
Executable File
132 lines
3.0 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 <info@minifree.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>
|
|
|
|
[ "x${DEBUG+set}" = 'xset' ] && set -v
|
|
set -u -e
|
|
|
|
. "include/err.sh"
|
|
. "include/export.sh"
|
|
|
|
read projectname < projectname
|
|
linkpath="${0}"
|
|
linkname="${linkpath##*/}"
|
|
buildpath="./script/${linkname}"
|
|
mode=""
|
|
option=""
|
|
|
|
main()
|
|
{
|
|
id -u 1>/dev/null 2>/dev/null || \
|
|
fail "cannot ascertain user id"
|
|
|
|
initialise_command $@
|
|
shift 2
|
|
|
|
./checkgit || fail "Please read: https://libreboot.org/docs/build/"
|
|
./checkversion || fail "Cannot check ${projectname} version"
|
|
|
|
execute_command $@
|
|
lbmk_exit 0
|
|
}
|
|
|
|
initialise_command()
|
|
{
|
|
[ "${linkname}" = "lbmk" ] && fail "Don't run this script directly."
|
|
[ $# -lt 1 ] && fail "Too few arguments. Try: ${0} help"
|
|
|
|
mode="${1}"
|
|
[ "${mode}" != "dependencies" ] || \
|
|
install_packages $@ || fail "Can't install dependencies"
|
|
[ "$(id -u)" != "0" ] || \
|
|
fail "running this command as root is not permitted"
|
|
|
|
[ "${mode}" = "help" ] && usage ${0} && lbmk_exit 0
|
|
[ "${mode}" = "list" ] && ./build command options "${buildpath}" && \
|
|
lbmk_exit 0
|
|
[ $# -lt 2 ] && usage ${0} && lbmk_exit 1
|
|
|
|
option="${2}"
|
|
}
|
|
|
|
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
|
|
fail "install_packages: target not specified"
|
|
fi
|
|
|
|
[ -f "config/dependencies/${2}" ] || fail "Unsupported target"
|
|
|
|
aur_notice=""
|
|
. "config/dependencies/${2}"
|
|
|
|
${pkg_add} ${pkglist} || \
|
|
fail "install_packages: Error installing dependencies"
|
|
[ "${aur_notice}" = "" ] || \
|
|
printf "You must install AUR packages: %s\n" "${aur_notice}" 1>&2
|
|
|
|
lbmk_exit 0
|
|
}
|
|
|
|
execute_command()
|
|
{
|
|
if [ "${option}" = "list" ]; then
|
|
./build command options "${buildpath}/${mode}" || \
|
|
fail "execute_command: cannot list command options"
|
|
lbmk_exit 0
|
|
fi
|
|
[ -f "${buildpath}/${mode}/${option}" ] || \
|
|
fail "Invalid command. Run: ${linkpath} help"
|
|
"${buildpath}/${mode}/${option}" $@ || \
|
|
fail "execute_command: ${buildpath}/${mode}/${option} ${@}"
|
|
}
|
|
|
|
usage()
|
|
{
|
|
progname=${0}
|
|
cat <<- EOF
|
|
USAGE: ${progname} <MODE> <OPTION>
|
|
|
|
possible values for 'mode':
|
|
$(./build command options "${buildpath}")
|
|
|
|
For each of the above modes, you may also do:
|
|
${progname} <MODE> list
|
|
|
|
Example: ./build grub list, which would yield:
|
|
$(./build grub list)
|
|
|
|
Refer to ${projectname} documentation for more info.
|
|
EOF
|
|
}
|
|
|
|
lbmk_exit()
|
|
{
|
|
tmp_cleanup || \
|
|
err "lbmk_exit: could not remove tmpdir upon exit $1: ${tmpdir}"
|
|
exit $1
|
|
}
|
|
|
|
fail()
|
|
{
|
|
tmp_cleanup || printf "fail(): WARNING: cannot remove tmpdir: %s\n" \
|
|
"${tmpdir}" 1>&2
|
|
err "${1}"
|
|
}
|
|
|
|
tmp_cleanup()
|
|
{
|
|
if [ "${tmpdir_was_set}" = "n" ]; then
|
|
rm -Rf "${tmpdir}" || return 1
|
|
fi
|
|
}
|
|
|
|
main $@
|