trees: support build dependencies, not just fetch

We already have this to an extent, e.g. the xtree variable.

The xtree variable could probably be removed, in favour of
this, and used for the same purpose.

It works like this, for example:

build_depend="coreboot/default grub/xhci seabios u-boot/gru_bob flashprog"

the "/" denotes a tree, if it's a multi-tree project. However, specifying
the entire multi-tree project without slash is possible, for example:

build_depend="coreboot"

this would specify that all coreboot trees must be built.

This functionality will be used in follow-up commits, centralising
script/trees into mk on the main directory, repacing "build".

Signed-off-by: Leah Rowe <leah@libreboot.org>
audit2
Leah Rowe 2024-07-06 04:29:03 +01:00 committed by Leah Rowe
parent 1b75d738bf
commit 07769f3341
1 changed files with 10 additions and 2 deletions

View File

@ -11,7 +11,7 @@ set -u -e
eval `setvars "" xarch cdir defconfig cmakedir xlang mode makeargs elfdir cmd \ eval `setvars "" xarch cdir defconfig cmakedir xlang mode makeargs elfdir cmd \
project target target_dir targets xtree _f target1 bootstrapargs mkhelper \ project target target_dir targets xtree _f target1 bootstrapargs mkhelper \
autoconfargs listfile autogenargs btype tree rev tree_depend` autoconfargs listfile autogenargs btype tree rev tree_depend build_depend`
main() main()
{ {
@ -140,7 +140,7 @@ handle_src_tree()
load_target_config() load_target_config()
{ {
eval `setvars "" xarch xlang bootstrapargs autoconfargs xtree \ eval `setvars "" xarch xlang bootstrapargs autoconfargs xtree \
tree_depend makeargs btype mkhelper` tree_depend makeargs btype mkhelper build_depend`
[ -f "$1/target.cfg" ] || btype="auto" [ -f "$1/target.cfg" ] || btype="auto"
[ -f "$datadir/mkhelper.cfg" ] && eval `setcfg "$datadir/mkhelper.cfg"` [ -f "$datadir/mkhelper.cfg" ] && eval `setcfg "$datadir/mkhelper.cfg"`
@ -159,6 +159,14 @@ load_target_config()
[ -z "$btype" ] || [ "${mode%config}" = "$mode" ] || return 1 [ -z "$btype" ] || [ "${mode%config}" = "$mode" ] || return 1
[ -z "$mode" ] && for bd in $build_depend; do
bd_project="${bd%%/*}"; bd_tree="${bd##*/}"
[ -z "$bd_project" ] && $err "$project/$tree: bad bd: '$bd'"
[ "${bd##*/}" = "$bd" ] && bd_tree=""
[ -z "$bd_project" ] || ./update trees -b $bd_project \
$bd_tree || $err "$project/$tree: !bd $bd"; continue
done
[ "$mode" = "fetch" ] || return 0 [ "$mode" = "fetch" ] || return 0
[ -f "CHANGELOG" ] && return 1; fetch_${cmd#build_}; return 1 [ -f "CHANGELOG" ] && return 1; fetch_${cmd#build_}; return 1
} }