lib.sh: new function mk() to handle trees in bulk

single-tree projects cannot be handled in bulk, e.g.
./mk -f project1 project2 project3

that is still the case, from the shell, but internally
it is now possible:
mk -f project1 project2 project3

mk() is a function that simply handles the given flag,
and all projects specified.

it does not handle cases without argument, for example
you cannot do:
mk -f

arguments must be provided. it can be used internally,
to simplify cases where multiple single-tree projects
must be handled, but *also* allows multi-tree projects
to be specified, without being able to actually handle
trees within that multi-tree project; so for example,
you can only specify coreboot, and then it would run
on every coreboot tree.

Signed-off-by: Leah Rowe <leah@libreboot.org>
3050wip
Leah Rowe 2024-07-28 13:30:25 +01:00
parent 7fa6052de0
commit 59894ed555
4 changed files with 14 additions and 14 deletions

12
build
View File

@ -36,11 +36,9 @@ main()
inject) shift 1; vendor_inject $@ ;;
download) shift 1; vendor_download $@ ;;
roms)
if [ $# -gt 1 ] && [ "$2" = "serprog" ]; then
x_ ./mk -b stm32-vserprog
x_ ./mk -b pico-serprog; return 0
fi; shift 1
x_ ./mk -b coreboot $@ ;;
[ $# -gt 1 ] && [ "$2" = "serprog" ] && \
mk -b stm32-vserprog pico-serprog && return 0
shift 1; x_ ./mk -b coreboot $@ ;;
*)
[ -f "$spath" ] || $err "bad command"
$shcmd; "$spath" $@ || $err "excmd: $spath $(echo "$@")" ;;
@ -110,9 +108,7 @@ build_release()
touch "$srcdir/lock" || $err "can't make lock file in $srcdir/"
(
cd "$srcdir" || $err "$vdir: 2 !cd \"$srcdir\""
./mk -b coreboot || $err "$vdir: roms-all"
./mk -b pico-serprog || $err "$vdir: rp2040"
./mk -b stm32-vserprog || $err "$vdir: stm32"
mk -b coreboot pico-serprog stm32-vserprog
x_ mv bin ../roms
) || $err "can't build rom images"

View File

@ -212,3 +212,11 @@ cbfs()
lzma="-c lzma" && [ $# -gt 3 ] && lzma="-t raw"
x_ "$cbfstool" "$1" $ccmd -f "$2" -n "$3" $lzma
}
mk()
{
mk_flag="$1" || $err "No argument given"
shift 1 && for mk_arg in $@; do
./mk $mk_flag $mk_arg || $err "./mk $mk_flag $mk_arg"; :
done; :
}

View File

@ -48,9 +48,7 @@ readkconfig()
bootstrap()
{
x_ ./mk -f coreboot ${cbdir##*/}
for d in uefitool biosutilities bios_extract; do
x_ ./mk -b "$d"
done
mk -b uefitool biosutilities bios_extract
[ -d "${kbc1126_ec_dump%/*}" ] && x_ make -C "$cbdir/util/kbc1126"
[ -n "$MRC_refcode_cbtree" ] && \
cbfstoolref="elf/cbfstool/$MRC_refcode_cbtree/cbfstool" && \

View File

@ -36,9 +36,7 @@ main()
project="${OPTARG#src/}"; shift 2
done
[ -z "$_f" ] && $err "missing flag (-m/-u/-b/-c/-x/-f/-s/-l/-n)"
[ -z "$project" ] && for p in $(ls -1 config/git); do
./mk $_f "$p" || $err "!./mk $_f $p"; :
done && return 1
[ -z "$project" ] && mk $_f $(ls -1 config/git) && return 1
[ -f "config/git/$project/pkg.cfg" ] || $err "'$project' not defined"