Files
lbmk/include/err.sh
Leah Rowe f4b2a588e2 build: don't generate version/versiondate as root
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>
2023-11-08 06:11:24 +00:00

81 lines
2.0 KiB
Bash
Executable File

# SPDX-License-Identifier: MIT
# SPDX-FileCopyrightText: 2022, 2023 Leah Rowe <leah@libreboot.org>
version=""; versiondate=""; projectname=""; _nogit=""
x_() {
[ $# -lt 1 ] || ${@} || err_exit err ${@}
}
xx_() {
[ $# -lt 1 ] || ${@} || err_exit fail ${@}
}
err_exit()
{
_fail="${1}" && shift 1
echo "Non-zero exit: $@"
$_fail "Unhandled error"
}
check_git()
{
which git 1>/dev/null 2>/dev/null || \
git_err "git not installed. please install git-scm."
git config --global user.name 1>/dev/null 2>/dev/null || \
git_err "git config --global user.name \"John Doe\""
git config --global user.email 1>/dev/null 2>/dev/null || \
git_err "git config --global user.email \"john.doe@example.com\""
}
git_err()
{
printf "You need to set git name/email, like so:\n%s\n\n" "${1}" 1>&2
fail "Git name/email not configured" || \
err "Git name/email not configured"
}
check_project()
{
read projectname < projectname || :
[ ! -f version ] || read version < version || :
version_="${version}"
[ ! -e ".git" ] || version="$(git describe --tags HEAD 2>&1)" || \
version="git-$(git rev-parse HEAD 2>&1)" || version="${version_}"
[ ! -f versiondate ] || read versiondate < versiondate || :
versiondate_="${versiondate}"
[ ! -e ".git" ] || versiondate="$(git show --no-patch --no-notes \
--pretty='%ct' HEAD)" || versiondate="${versiondate_}"
[ ! -z ${versiondate} ] || fail "Unknown version date" || \
err "Unknown version date"
[ ! -z ${version} ] || fail "Unknown version" || \
err "Unknown version"
[ ! -z ${projectname} ] || fail "Unknown project" || \
err "Unknown project"
xx_ printf "%s\n" "${version}" > version || \
x_ printf "%s\n" "${version}" > version
xx_ printf "%s\n" "${versiondate}" > versiondate || \
x_ printf "%s\n" "${versiondate}" > versiondate
}
setvars()
{
_setvars=""
[ $# -lt 2 ] && err "setvars: too few arguments"
val="${1}"
shift 1
for var in $@; do
_setvars="${var}=\"${val}\"; ${_setvars}"
done
printf "%s\n" "${_setvars% }"
}
err()
{
printf "ERROR %s: %s\n" "${0}" "${1}" 1>&2
exit 1
}