Files
lbmk/include/mk/release.sh
T
Leah Rowe 2fc37b4b47 use -mindepth alongside -maxdepth in find
use of maxdepth 1 does not exclude the main
directory, which is undesired in these contexts,
though excluded in practise due to how find is
actually used.

technically, mindepth should be used, just in
case, as a defensive measure. the context here
is files and directories within a main directory,
used as arguments in other commands.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2026-09-14 08:48:16 +01:00

117 lines
2.3 KiB
Bash

# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (c) 2023-2026 Leah Rowe <leah@libreboot.org>
eval "`newvar reldest reldir relmode rsrc vdir`"
release()
{
export XBMK_RELEASE="y"
reldir="release"
while getopts m: option
do
[ -z "$OPTARG" ] && \
err "empty argument not allowed" "release" "$@"
[ "$option" != "m" ] && \
err "invalid option '-$option'" "release" "$@"
relmode="$OPTARG"
done
reldest="$reldir/$version"
[ -e "$reldest" ] && \
err "already exists: \"$reldest\"" "release" "$@"
vdir="`mktemp -d || err "can't make vdir"`" || \
err "can't make tmp vdir" "release" "$@"
vdir="$vdir/$version"
rsrc="$vdir/${relname}_src"
remkdir "$vdir"
x_ git clone . "$rsrc"
update_xbmkver "$rsrc"
prep_release src
prep_release tarball
[ "$relmode" != "src" ] && \
prep_release bin
x_ rm -Rf "$rsrc"
x_ mkdir -p "$reldir"
x_ mv "$vdir" "$reldir"
x_ rm -Rf "${vdir%"/$version"}"
printf "\n\nDONE! Check release files under %s\n" "$reldest"
}
prep_release()
{
(
if [ "$1" != "tarball" ]; then
x_ cd "$rsrc"
[ ! -e "cache" ] && \
x_ ln -s "$XBMK_CACHE" "cache"; :
fi
prep_release_$1
) || err "can't prep release $1" "prep_release" "$@"
}
prep_release_src()
{
x_ cp -R "util/sbase" "util/sbase2"
x_ ./mk -f
fx_ "x_ rm -Rf" x_ find . -name ".git"
fx_ "x_ rm -Rf" x_ find . -name ".gitmodules"
( fx_ nuke x_ find config -type f -name "nuke.list" ) || \
err "can't prune project files" "prep_release_src" "$@"; :
}
nuke()
{
r="$rsrc/src/${1#config/}"
if [ -d "${r%/*}" ]; then
x_ cd "${r%/*}"
dx_ "x_ rm -Rf" "$rsrc/$1"
fi
}
prep_release_tarball()
{
git log --graph --pretty=format:'%Cred%h%Creset %s %Creset' \
--abbrev-commit > "$rsrc/CHANGELOG" || \
err "can't create '$rsrc/CHANGELOG'" "prep_release_tarball" "$@"
x_ rm -f "$rsrc/lock" "$rsrc/cache"
x_ rm -Rf "$rsrc/xbmkwd" "$rsrc/util/sbase"
x_ mv "$rsrc/util/sbase2" "$rsrc/util/sbase"
(
x_ cd "${rsrc%/*}"
x_ mktarball "${rsrc##*/}" "${rsrc##*/}.tar.xz"
) || err "can't create src tarball" "prep_release_tarball" "$@"; :
}
prep_release_bin()
{
x_ ./mk -d coreboot
x_ ./mk -b coreboot
x_ ./mk -b pico-serprog
x_ ./mk -b stm32-vserprog
x_ ./mk -b pcsx-redux
fx_ mkrom_tarball x_ find bin -mindepth 1 -maxdepth 1 \
-type d -name "serprog_*"
x_ mv bin ../roms
}