mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-11 05:52:36 +02:00
f4b2a588e2
don't run it directly at the bottom of err.sh, because otherwise the version and versiondate files will be generated when running "./build dependencies distroname" which would then create these files, but as root because the user runs that specific command as root. the rest of lbmk, for any other command, prevents use of the root account, so running check_project during "./build dependencies distroname" will cause the build system to fail (because as non-root user, the user will run lbmk and it will try to update those files, and fail because it can't, due to lack of permissions) this patch fixes the issue, by only generating those files if the user is *not* root Signed-off-by: Leah Rowe <leah@libreboot.org>
147 lines
3.3 KiB
Python
Executable File
147 lines
3.3 KiB
Python
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>
|
|
|
|
[ "x${DEBUG+set}" = 'xset' ] && set -v
|
|
set -u -e
|
|
|
|
export LC_COLLATE=C
|
|
export LC_ALL=C
|
|
|
|
. "include/err.sh"
|
|
. "include/option.sh"
|
|
|
|
eval "$(setvars "" option aur_notice tmpdir)"
|
|
|
|
tmpdir_was_set="y"
|
|
set | grep TMPDIR 1>/dev/null 2>/dev/null || tmpdir_was_set="n"
|
|
if [ "${tmpdir_was_set}" = "y" ]; then
|
|
tmpdir="${TMPDIR##*/}"
|
|
tmpdir="${TMPDIR%_*}"
|
|
if [ "${tmpdir}" = "lbmk" ]; then
|
|
tmpdir=""
|
|
tmpdir_was_set="n"
|
|
fi
|
|
fi
|
|
if [ "${tmpdir_was_set}" = "n" ]; then
|
|
export TMPDIR="/tmp"
|
|
tmpdir="$(mktemp -d -t lbmk_XXXXXXXX)"
|
|
export TMPDIR="${tmpdir}"
|
|
else
|
|
export TMPDIR="${TMPDIR}"
|
|
fi
|
|
tmpdir="${TMPDIR}"
|
|
|
|
linkpath="${0}"
|
|
linkname="${linkpath##*/}"
|
|
buildpath="./script/${linkname}"
|
|
|
|
main()
|
|
{
|
|
xx_ id -u 1>/dev/null 2>/dev/null
|
|
[ $# -lt 1 ] && fail "Too few arguments. Try: ${0} help"
|
|
if [ "${1}" = "dependencies" ]; then
|
|
xx_ install_packages $@
|
|
lbmk_exit 0
|
|
fi
|
|
|
|
initialise_command $@ && shift 1
|
|
|
|
check_git
|
|
check_project "fail"
|
|
git_init
|
|
|
|
execute_command $@
|
|
lbmk_exit 0
|
|
}
|
|
|
|
initialise_command()
|
|
{
|
|
[ "$(id -u)" != "0" ] || fail "this command as root is not permitted"
|
|
|
|
check_project
|
|
|
|
case "${1}" in
|
|
help) usage ${0} && lbmk_exit 0 ;;
|
|
list) items "${buildpath}" && lbmk_exit 0 ;;
|
|
esac
|
|
option="${1}"
|
|
}
|
|
|
|
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"
|
|
|
|
. "config/dependencies/${2}"
|
|
|
|
xx_ ${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" ] && fail "Reference .git is a symlink"
|
|
[ -e ".git" ] && return 0
|
|
eval "$(setvars "$(date -Rd @${versiondate})" cdate _nogit)"
|
|
|
|
git init || fail "${PWD}: cannot initialise Git repository"
|
|
git add -A . || fail "${PWD}: cannot add files to Git repository"
|
|
git commit -m "${projectname} ${version}" --date "${cdate}" || \
|
|
fail "${PWD}: can't commit ${projectname}/${version}, date ${cdate}"
|
|
git tag -a "${version}" -m "${projectname} ${version}" || \
|
|
fail "${PWD}: cannot git-tag ${projectname}/${version}"
|
|
}
|
|
|
|
execute_command()
|
|
{
|
|
lbmkcmd="${buildpath}/${option}"
|
|
[ -f "${lbmkcmd}" ] || fail "Invalid command. Run: ${linkpath} help"
|
|
"${lbmkcmd}" $@ || fail "execute_command: ${lbmkcmd} ${@}"
|
|
}
|
|
|
|
usage()
|
|
{
|
|
progname=${0}
|
|
cat <<- EOF
|
|
USAGE: ${progname} <OPTION>
|
|
|
|
possible values for 'OPTION':
|
|
$(items "${buildpath}")
|
|
|
|
Refer to ${projectname} documentation for more info.
|
|
EOF
|
|
}
|
|
|
|
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 $@
|