mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-16 13:16:47 +02:00
quackboot (same idea as klompboot), from audit6
this is based directly on the audit6 final revision. same idea as klompboot. remove u-boot and arm support, remove pico-serprog, remove support for making release archives, and basically see how small the build system can possible get. quackboot *beats* the very first klompboot, at 790 lines, because klompboot 1 was just over 800 lines. klompboot 2 was 701 lines. vendor file logic is about 200 sloc so the next klompboot will be about 600 lines. this is the very first quackboot. Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
@@ -16,115 +16,16 @@ fi
|
||||
. "include/vendor.sh"
|
||||
. "include/mrc.sh"
|
||||
|
||||
eval `setvars "" vdir src_dirname srcdir mode xp ser`
|
||||
err="fail"
|
||||
|
||||
main()
|
||||
{
|
||||
[ $# -lt 1 ] && $err "bad command"
|
||||
spath="script/$1"
|
||||
spath="script/$1"; shift 1
|
||||
|
||||
for g in "which git" "git config --global user.name" \
|
||||
"git config --global user.email" "git_init"; do
|
||||
eval "$g 1>/dev/null 2>/dev/null || git_err \"$g\""
|
||||
done
|
||||
|
||||
case "${1}" in
|
||||
version) printf "%s\nWebsite: %s\n" "$relname" "$projectsite" ;;
|
||||
release) shift 1; mkrelease $@ ;;
|
||||
inject) shift 1; vendor_inject $@ ;;
|
||||
download) shift 1; vendor_download $@ ;;
|
||||
roms)
|
||||
if [ $# -gt 1 ] && [ "$2" = "serprog" ]; then
|
||||
x_ ./update trees -b stm32-vserprog
|
||||
x_ ./update trees -b pico-serprog; return 0
|
||||
fi; shift 1
|
||||
x_ ./update trees -b coreboot $@ ;;
|
||||
*)
|
||||
[ -f "$spath" ] || $err "bad command"
|
||||
shift 1; "$spath" $@ || $err "excmd: $spath $@" ;;
|
||||
esac
|
||||
set -u -e # some commands disable them. turn them on!
|
||||
}
|
||||
|
||||
git_init()
|
||||
{
|
||||
[ -L ".git" ] && return 1
|
||||
[ -e ".git" ] && return 0
|
||||
eval `setvars "$(date -Rud @$versiondate)" cdate _nogit`
|
||||
|
||||
git init || return 1
|
||||
git add -A . || return 1
|
||||
git commit -m "$projectname $version" --date "$cdate" \
|
||||
--author="xbmk <xbmk@example.com>" || return 1
|
||||
git tag -a "$version" -m "$projectname $version" || return 1
|
||||
}
|
||||
|
||||
git_err()
|
||||
{
|
||||
printf "You need to set git name/email, like so:\n%s\n\n" "$1" 1>&2
|
||||
$err "Git name/email not configured"
|
||||
}
|
||||
|
||||
mkrelease()
|
||||
{
|
||||
export XBMK_RELEASE="y"
|
||||
|
||||
vdir="release"
|
||||
while getopts d:m: option; do
|
||||
[ -z "$OPTARG" ] && $err "empty argument not allowed"
|
||||
case "$option" in
|
||||
d) vdir="$OPTARG" ;;
|
||||
m) mode="$OPTARG" ;;
|
||||
*) $err "invalid option '-$option'" ;;
|
||||
esac
|
||||
done
|
||||
|
||||
vdir="$vdir/$version"
|
||||
src_dirname="${relname}_src"
|
||||
srcdir="$vdir/$src_dirname"
|
||||
|
||||
[ -e "$vdir" ] && $err "already exists: \"$vdir\""
|
||||
mkdir -p "$vdir" || $err "mkvdir: !mkdir -p \"$vdir\""
|
||||
git clone . "$srcdir" || $err "mkdir: !gitclone \"$srcdir\""
|
||||
touch "$srcdir/lock" || $err "can't make lock file in $srcdir/"
|
||||
|
||||
build_release
|
||||
|
||||
printf "\n\nDONE! Check release files under %s\n" "$vdir"
|
||||
}
|
||||
|
||||
build_release()
|
||||
{
|
||||
(
|
||||
cd "$srcdir" || $err "$vdir: !cd \"$srcdir\""
|
||||
./update trees -f
|
||||
rmgit .
|
||||
x_ rm -Rf tmp
|
||||
x_ mv src/docs docs
|
||||
) || $err "can't create release files"
|
||||
|
||||
git log --graph --pretty=format:'%Cred%h%Creset %s %Creset' \
|
||||
--abbrev-commit > "$srcdir/CHANGELOG" || $err "!gitlog $srcdir"
|
||||
rm -f "$srcdir/lock" || $err "can't remove lock file in $srcdir"
|
||||
|
||||
(
|
||||
cd "${srcdir%/*}" || $err "$vdir: mktarball \"$srcdir\""
|
||||
mktarball "${srcdir##*/}" "${srcdir##*/}.tar.xz" || $err "$vdir: mksrc"
|
||||
) || $err "can't create src tarball"
|
||||
[ "$mode" = "src" ] && return 0
|
||||
|
||||
touch "$srcdir/lock" || $err "can't make lock file in $srcdir/"
|
||||
|
||||
(
|
||||
cd "$srcdir" || $err "$vdir: 2 !cd \"$srcdir\""
|
||||
./update trees -b coreboot || $err "$vdir: roms-all"
|
||||
./update trees -b pico-serprog || $err "$vdir: rp2040"
|
||||
./update trees -b stm32-vserprog || $err "$vdir: stm32"
|
||||
x_ mv bin ../roms
|
||||
) || $err "can't build rom images"
|
||||
|
||||
rm -Rf "$srcdir" || $err "!rm -Rf $srcdir"
|
||||
[ "${spath#script/}" = "download" ] && vendor_download $@ && return 0
|
||||
[ -f "$spath" ] || $err "bad command"
|
||||
"$spath" $@ || $err "excmd: $spath $(echo "$@")"; set -u -e
|
||||
}
|
||||
|
||||
fail()
|
||||
|
||||
Reference in New Issue
Block a user