diff options
| author | Leah Rowe <leah@libreboot.org> | 2026-09-24 07:01:32 +0100 |
|---|---|---|
| committer | Leah Rowe <leah@libreboot.org> | 2026-09-24 07:09:13 +0100 |
| commit | 4b4fa831bba05202b94b18b5ff729ac935471144 (patch) | |
| tree | 083d11de5ca50ce252252dfb7ca438db9a903e43 | |
| parent | 1e78a7f4e4faace87b673edf775c8568350351c5 (diff) | |
mk: infinite tree loop detection
Signed-off-by: Leah Rowe <leah@libreboot.org>
| -rwxr-xr-x | mk | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -89,7 +89,7 @@ eval "`newvar if_not_make_config if_not_build if_not_dry_build if_not_fetch`" cfgvars="autogenargs cmakedir configureargs badhash badtghash bootstrapargs \ build_depend cleanargs fetch_depend makeargs mkhelper noconfig postmake \ premake release rev tree xarch xgcctree xlang cfgname defscan \ - if_not_skip_build cook_config" + if_not_skip_build cook_config seen" eval "`newvar buildcfg dest_dir elfdir flag forcepull listfile mdir \ mkhelpercfg mode project srcdir target target_dir _tcfg \ @@ -260,6 +260,17 @@ try_target_config() eval "`newvar rev tree`" . "$_tcfg" || err "Can't read '$_tcfg'" configure_target "$@" + + _tname="${_tcfg%/*}" + _tname="${_tname##*/}" + + for loopvar in $seen; do + [ "$loopvar" = "$_tname" ] && \ + err "$project/$target: infinite tree loop" + done + + seen="$seen $_tname" + if [ -n "$rev" ] && [ -z "$tree" ]; then # this makes setting tree= optional on configless projects tree="${_tcfg%/target.cfg}" @@ -280,7 +291,6 @@ try_target_config() # projects can specify which other projects # to build first, as declared dependencies: -# TODO: detect infinite loops mk_dependencies() { bdf="${1-}" |
