diff options
author | Leah Rowe <leah@libreboot.org> | 2024-12-30 14:13:49 +0000 |
---|---|---|
committer | Leah Rowe <leah@libreboot.org> | 2024-12-30 14:14:19 +0000 |
commit | f64b59962790936f49399b13f9a940d5e6230d32 (patch) | |
tree | 463a9b29c25ba9da5261bce07e7ea75e7837ccec /script | |
parent | 295463d281e4beeb0ad3aa9d0fe390227e0d5ddc (diff) |
Merge path.sh into script/trees
The code is simple enough now that I'm happy for it
to just be part of the main script.
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'script')
-rwxr-xr-x | script/trees | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/script/trees b/script/trees index 57e19b63..786461dc 100755 --- a/script/trees +++ b/script/trees @@ -8,14 +8,14 @@ set -u -e . "include/lib.sh" . "include/git.sh" -. "include/path.sh" XBMKPATH="$PATH" eval `setvars "" xarch srcdir premake cmakedir xlang mode makeargs elfdir cmd \ project target target_dir targets xtree _f release bootstrapargs mkhelper \ autoconfargs listfile autogenargs btype tree rev tree_depend build_depend \ - defconfig postmake mkhelpercfg dry dest_dir mdir cleanargs`; badhash="n" + defconfig postmake mkhelpercfg dry dest_dir mdir cleanargs gccver gccfull \ + gnatver gnatfull gccdir`; badhash="n" main() { @@ -215,6 +215,45 @@ check_cross_compiler() done; return 0 } +# fix mismatching gcc/gnat versions on debian trixie/sid +check_gnat_path() +{ + rm -f xbmkpath/* || $err "Cannot clear xbmkpath/" + + eval `setvars "" gccver gccfull gnatver gnatfull gccdir` + gnu_setver gcc gcc || $err "Command 'gcc' unavailable." + gnu_setver gnat gnat || : + + [ -z "$gccver" ] && $err "Cannot detect host GCC version" + [ "$gnatfull" = "$gccfull" ] && return 0 + + gccdir="$(dirname "$(command -v gcc)")" + for _gnatbin in "$gccdir/gnat-"*; do + [ -f "$_gnatbin" ] || continue + [ "${_gnatbin#"$gccdir/gnat-"}" = "$gccver" ] || continue + gnatver="${_gnatbin#"$gccdir/gnat-"}"; break + done + gnu_setver "gnat" "$gccdir/gnat-$gccver" || $err "Unknown gnat version" + [ "$gnatfull" = "$gccfull" ] || $err "GCC/GNAT versions do not match." + + ( + x_ cd xbmkpath + for _gnatbin in "$gccdir/gnat"*"-$gccver"; do + [ -e "$_gnatbin" ] || continue; _gnatutil="${_gnatbin##*/}" + x_ ln -s "$_gnatbin" "${_gnatutil%"-$gccver"}" + done + ) || $err "Cannot create gnat-$gccver link in $gccdir"; : +} + +gnu_setver() +{ + eval "$2 --version 1>/dev/null 2>/dev/null || return 1" + eval "${1}ver=\"`$2 --version 2>/dev/null | head -n1`\"" + eval "${1}ver=\"\${${1}ver##* }\"" + eval "${1}full=\"\${$1}ver\"" + eval "${1}ver=\"\${${1}ver%%.*}\""; : +} + check_defconfig() { [ -f "$defconfig" ] || $dry $err "$project/$target: missing defconfig" |