xbmk: general cleanup

note: mecleaner check removed in vendor.sh, because
it's already guaranteed to be fetched. the check will
never indicate failure, so we can just assume that
the me cleaner python script exists.

Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
Leah Rowe
2026-09-17 09:30:52 +01:00
parent 1722964f66
commit 69875b8e10
6 changed files with 74 additions and 148 deletions
+9 -21
View File
@@ -39,14 +39,12 @@ single_tree_fetch()
x_ "$mk" -f $d
done
clone_project
$if_single_tree \
clone_project; :
}
clone_project()
{
singletree "$project" || \
return 0
loc="src/$project"
[ -d "$loc" ] && \
return 0
@@ -174,10 +172,8 @@ try_fetch_curl()
try_$2 "$cached" "$@" || \
return 1
[ -f "$5" ] && \
if bad_checksum "$6" "$5" 2>/dev/null; then
x_ cp "$cached" "$5"
fi
[ -f "$5" ] && bad_checksum "$6" "$5" 2>/dev/null && \
x_ cp "$cached" "$5"
if [ ! -f "$cached" ]; then
return 1
@@ -202,8 +198,7 @@ try_curl()
ua="Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"
( x_ curl --location --retry 3 -A "$ua" "$2" -o "$1" ) \
|| ( x_ wget --tries 3 -U "$ua" "$2" -O "$1" ) \
|| return 1; :
|| ( x_ wget --tries 3 -U "$ua" "$2" -O "$1" ) || return 1; :
}
try_copy()
@@ -230,15 +225,9 @@ try_git()
x_ mv "$tmpgitcache" "$gitdest"
fi
if git -C "$gitdest" show "$7" 1>/dev/null 2>/dev/null && \
[ "$forcepull" != "y" ]; then
# don't try to pull the latest changes if the given target
# revision already exists locally. this saves a lot of time
# during release builds, and reduces the chance that we will
# interact with grub.git or gnulib.git overall during runtime
return 0
fi
git -C "$gitdest" show "$7" 1>/dev/null 2>/dev/null && \
[ "$forcepull" != "y" ] && \
return 0 # don't pull changes if target rev exists locally
if [ "$XBMK_CACHE_MIRROR" = "y" ]; then
( x_ git -C "$gitdest" fetch ) || :; :
@@ -250,9 +239,8 @@ try_git()
bad_checksum()
{
if e "$2" f missing; then
e "$2" f missing && \
return 0
fi
build_sbase
csum="$(x_ "$sha512sum" "$2" | awk '{print $1}')" || \
+2 -4
View File
@@ -165,13 +165,11 @@ xbmk_parent_set_env()
x_ chmod -w "$xbmklock"
xbmk_parent_set_export
xbmk_set_version
forx 'xbmk_%s' parent_set_export set_version
remkdir "$xbtmp" "$xbtmp/xbmkpath"
xbmk_set_pyver
xbmk_set_mirror
forx 'xbmk_set_%s' pyver mirror
}
xbmk_parent_check_tmp()
+9 -17
View File
@@ -18,8 +18,7 @@ inject()
{
remkdir "$tmpromdel"
[ $# -lt 1 ] && \
err "No options specified" "inject" "$@"
[ $# -lt 1 ] && err "No options specified" "inject" "$@"
archive="$1";
new_mac="xx:xx:xx:xx:xx:xx"
@@ -58,9 +57,8 @@ check_release()
{
[ -L "$archive" ] && \
err "'$archive' is a symlink" "check_release" "$@"
if e "$archive" f missing; then
e "$archive" f missing && \
err "'$archive' missing" "check_release" "$@"
fi
archivename="`basename "$archive" || err "Can't get '$archive' name"`" \
|| err "can't get '$archive' name" "check_release" "$@"
@@ -100,7 +98,6 @@ check_target()
x_ "$mk" -d coreboot "$tree"
ifdtool="elf/coreboot/$tree/ifdtool"
[ -n "$IFD_platform" ] && \
ifdprefix="-p $IFD_platform"; :
}
@@ -125,8 +122,7 @@ patch_release()
fi
done
readkconfig || \
return 1
readkconfig || return 1
[ -n "$new_mac" ] && [ -n "$CONFIG_GBE_BIN_PATH" ] && \
modify_mac; :
@@ -137,15 +133,13 @@ readkconfig()
x_ rm -f "$xbtmp/cbcfg"
fx_ scankconfig x_ find "$boarddir/config" -type f
if e "$xbtmp/cbcfg" f missing; then
e "$xbtmp/cbcfg" f missing && \
return 1
fi
. "$xbtmp/cbcfg" || \
err "Can't read '$xbtmp/cbcfg'" "readkconfig" "$@"
setvfile "$@" || \
return 1; :
setvfile "$@" || return 1; :
}
scankconfig()
@@ -173,10 +167,9 @@ modify_mac()
newmac()
{
if e "$1" f; then
xchanged="y"
x_ "$ifdtool" $ifdprefix -i GbE:"$xbtmp/gbe" "$1" -O "$1"
fi
e "$1" f || return 0
xchanged="y"
x_ "$ifdtool" $ifdprefix -i GbE:"$xbtmp/gbe" "$1" -O "$1"
}
remktar()
@@ -190,6 +183,5 @@ remktar()
) || err "Cannot re-generate '$archive'" "remktar" "$@"
mv "${tmpromdir%"/bin/$board"}/bin/${relname}_${board}.tar.xz" \
"$archive" || \
err "'$archive' -> Can't overwrite" "remktar" "$@"; :
"$archive" || err "'$archive' -> Can't overwrite" "remktar" "$@"; :
}
+16 -39
View File
@@ -51,14 +51,12 @@ eval "`newvar DL_hash DL_url DL_url_bkup E6400_VGA_bin_hash E6400_VGA_DL_hash \
download()
{
[ $# -lt 1 ] && \
err "No argument given" "download" "$@"
[ $# -lt 1 ] && err "No argument given" "download" "$@"
export PATH="$PATH:/sbin"
board="$1"
check_target || return 0
readkconfig download
check_target && readkconfig download; :
}
getfiles()
@@ -108,14 +106,12 @@ fetch()
dlop="$6"
binsum="$7"
[ -z "$binsum" ] && \
err "binsum is empty (no checksum)" "fetch" "$@"
[ -z "$binsum" ] && err "binsum is empty (no checksum)" "fetch" "$@"
_dl="$XBMK_CACHE/file/$dlsum" # internet file to extract from e.g. .exe
_dl_bin="$XBMK_CACHE/file/$binsum" # extracted file e.g. me.bin
[ "$5" = "/dev/null" ] && \
return 0
[ "$5" = "/dev/null" ] && return 0 # fetch/extract disabled
# an extracted vendor file will be placed in pre_dest first, for
# verifying its checksum. if it matches, it is later moved to _dest
@@ -160,32 +156,24 @@ fetch()
[ ! -f "$_dest" ] || \
return 0; :
[ -z "$binsum" ] && \
printf "WARNING: %s: checksum undefined\n" "$_dest" 1>&2
x_ rm -f "$_dest"
[ -z "$binsum" ] && printf "WARNING: %s: no checksum\n" "$_dest" 1>&2
err "Can't safely extract '$_dest', for board '$board'" "fetch" "$@"
}
mkdst()
{
if bad_checksum "$1" "$2" 2>/dev/null; then
x_ rm -f "$2"
else
if ! bad_checksum "$1" "$2" 2>/dev/null; then
x_ mv "$2" "$_dl_bin"
x_ cp "$_dl_bin" "$_dest"
exit 1
fi
x_ rm -f "$2"
}
extract_intel_me()
{
if e "$mecleaner" f missing; then
err "$cbdir: me_cleaner missing" "extract_intel_me" "$@"
fi
mfs=""
_7ztest="$xbtmp/metmp/a"
_metmp="$xbtmp/me.bin"
@@ -228,10 +216,8 @@ extract_intel_me()
# must be called inside a subshell.
find_me()
{
[ -f "$_metmp" ] && \
exit 1 # me.bin found
[ -L "$1" ] && \
return 0 # symlinks disabled for security reasons
[ -f "$_metmp" ] && exit 1 # me.bin found
[ -L "$1" ] && return 0 # symlinks disabled for security reasons
_7ztest="${_7ztest}a"
@@ -268,8 +254,7 @@ find_me()
return 0 # can't extract, so try the next file
fi
[ -f "$_metmp" ] && \
exit 1 # me.bin found
[ -f "$_metmp" ] && exit 1 # me.bin found
( fx_ find_me x_ find "$_7ztest" -type f ) || exit 1; : # 1==me found
}
@@ -318,8 +303,7 @@ extract_kbc1126ec_dump()
unar -D 68*.CAB Rom.bin || \
err "!kbc1126 unar" "extract_kbc1126ec" "$@"
[ ! -f "ec.bin" ] && \
x_ mv Rom.bin ec.bin
[ -f "ec.bin" ] || x_ mv Rom.bin ec.bin
x_ e ec.bin f
x_ "$kbc1126_ec_dump" ec.bin
@@ -365,8 +349,7 @@ extract_sch5545ec()
# https://pcsupport.lenovo.com/us/en/products/laptops-and-netbooks/thinkpad-t-series-laptops/thinkpad-t480-type-20l5-20l6/20l5/solutions/ht508988
extract_tbfw()
{
[ -z "$TBFW_size" ] && \
err "$board: TBFW_size unset" "extract_tbfw" "$@"
[ -z "$TBFW_size" ] && err "$board: TBFW_size unset" extract_tbfw "$@"
fx_ copytb x_ find "$appdir" -type f -name "TBT.bin"
}
@@ -415,12 +398,8 @@ getvfile()
bootstrap
if [ $# -gt 0 ]; then
# download vendor files
getfiles
else
# inject vendor files
getfiles # ./mk download
else # ./mk inject
fx_ prep x_ find "$tmpromdir" -mindepth 1 -maxdepth 1 \
-type f -name "*.rom"
( check_vendor_hashes ) || \
@@ -484,8 +463,7 @@ prep()
( mksha512 "$_xrom" "vendorhashes" ) || err; :
fi
add_vfiles "$_xrom" || \
return 1 # no need to insert files
add_vfiles "$_xrom" || return 1 # no need to insert files
if [ "$nuke" = "nuke" ]; then
pad_one_byte "$_xrom"
@@ -548,8 +526,7 @@ add_vfiles()
vfile()
{
[ "$2" = "/dev/null" ] && \
return 0
[ "$2" = "/dev/null" ] && return 0
cbfsname="$1"
_dest="${2##*../}"
+1 -4
View File
@@ -80,8 +80,6 @@ e()
printf "%s %s\n" "$1" "$es2" 1>&2
}
# return 0 if project is single-tree, otherwise 1
# e.g. coreboot is multi-tree, so 1
singletree()
{
( fx_ "eval exit 1 && err" find "config/$1/"*/ -type f \
@@ -116,8 +114,7 @@ unpad_one_byte()
build_sbase()
{
[ ! -f "$sha512sum" ] && \
x_ make -C "$xbmkpwd/util/sbase"; :
[ ! -f "$sha512sum" ] && x_ make -C "$xbmkpwd/util/sbase"; :
}
remkdir()
+37 -63
View File
@@ -76,25 +76,17 @@ shift 1 2>/dev/null || :
eval "$(printf "version release download inject\n" | awk '{ for (i=1; i<=NF; \
i++) $i = "[ \""$i"\" = \"$_f\" ] && x_ "$i" \"$@\" && exit 0;"; print }')"
# flag e.g. "$mk" -b <-- mkflag would be "b"
flag=""
# macros, overridden depending on the flag
# : means false
if_do_make=""
if_not_do_make=":"
if_not_do_make=":" # : means false
if_make_config=":"
if_not_make_config=""
if_build=":" # can be false even if make is true
if_not_build=""
if_dry_build=":"
if_not_dry_build=""
if_single_tree=":"
eval "`newvar if_do_make if_not_make_config if_not_build if_not_dry_build`"
eval "`newvar configureargs autogenargs badhash badtghash bootstrapargs \
build_depend buildtype cleanargs cmakedir cmd defconfig dest_dir elfdir \
forcepull listfile makeargs mdir mkhelper mkhelpercfg mode postmake \
flag forcepull listfile makeargs mdir mkhelper mkhelpercfg mode postmake \
premake project release rev srcdir target target_dir tree xarch xgcctree \
xlang`"
@@ -119,9 +111,8 @@ main()
if_not_dry_build=":"
;;
-f|-F) # download source code for a project
eval "`newvar if_not_do_make if_dry_build`"
if_do_make=":"
if_not_do_make=""
if_dry_build=""
if_not_dry_build=":"
[ "$flag" = "-F" ] && \
forcepull="y"; : # never skip git fetch/pull
@@ -180,10 +171,10 @@ main()
fi
if singletree "$project"; then
cmd="single_tree_build"
cmd="mk_single_tree"
if_single_tree=""
else
cmd="multi_tree_build"
cmd="mk_multi_tree"
fi
remkdir "${tmpgit%/*}"
@@ -193,27 +184,24 @@ main()
$cmd "$@"
}
single_tree_build()
mk_single_tree()
{
configure_project "$configdir" || \
return 0
[ ! -f "$listfile" ] || \
$if_not_dry_build elfcheck || \
return 0
[ ! -f "$listfile" ] || $if_not_dry_build \
elfcheck || return 0
run_make_command && \
$if_build $if_not_dry_build \
run_make_command && $if_build $if_not_dry_build \
copy_elf; :
}
multi_tree_build()
mk_multi_tree()
{
[ ! -d "$configdir" ] && \
err "dir '$configdir' doesn't exist" multi_tree_build "$@"
[ $# -lt 1 ] && \
fx_ multi_tree_build find "$configdir" \
[ ! -d "$configdir" ] && err "missing '$configdir'" mk_multi_tree "$@"
[ $# -lt 1 ] && fx_ mk_multi_tree find "$configdir" \
-mindepth 1 -maxdepth 1 -type d
[ $# -gt 0 ] && for x in "$@"
do
unset CROSS_COMPILE
@@ -245,8 +233,7 @@ handle_defconfig()
configure_project "$target_dir" || \
return 0
[ -z "$tree" ] && \
err "$configdir: 'tree' not set" "handle_defconfig" "$@"
[ -z "$tree" ] && err "$configdir: 'tree' unset" handle_defconfig "$@"
srcdir="src/$project/$tree"
@@ -256,18 +243,16 @@ handle_defconfig()
$if_not_dry_build \
continue
$if_not_dry_build \
eval defconfig="$y"
$if_not_dry_build eval \
defconfig="$y"
$if_build \
prep_multi_tree_build || \
continue
prep_mk_multi_tree || continue
handle_makefile
$if_build \
$if_not_dry_build \
copy_elf; :
$if_build $if_not_dry_build \
copy_elf; :
done; :
}
@@ -279,8 +264,7 @@ configure_project()
build_depend buildtype cleanargs makeargs mkhelper postmake \
premake release xarch xgcctree xlang`"
[ ! -f "$_tcfg" ] && \
buildtype="auto"
[ ! -f "$_tcfg" ] && buildtype="auto"
# globally initialise all variables for a source tree / target:
if e "$datadir/mkhelper.cfg" f; then
@@ -290,16 +274,15 @@ configure_project()
fi
# override target/tree specific variables from per-target config:
while e "$_tcfg" f || [ "$cmd" != "single_tree_build" ]
while e "$_tcfg" f || [ "$cmd" != "mk_single_tree" ]
do
printf "Loading %s config: %s\n" "$project" "$_tcfg"
eval "`newvar rev tree`"
. "$_tcfg" || \
err "Can't read '$_tcfg'" "configure_project" "$@"
. "$_tcfg" || err "Can't read '$_tcfg'" configure_project "$@"
$if_dry_build \
eval build_depend=""
$if_dry_build eval \
build_depend=""
$if_single_tree \
break
@@ -313,22 +296,19 @@ configure_project()
[ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ] && \
return 1
[ -n "$buildtype" ] && \
$if_make_config \
return 1
[ -n "$buildtype" ] && $if_make_config \
return 1
$if_build \
$if_not_dry_build \
build_dependencies
$if_build $if_not_dry_build \
build_dependencies
mdir="$xbmkpwd/config/submodule/$project"
[ -n "$tree" ] && \
mdir="$mdir/$tree"
[ -n "$tree" ] && mdir="$mdir/$tree"
if [ ! -f "CHANGELOG" ]; then
delete_old_project_files
$if_not_do_make \
${cmd%_build}_fetch
${cmd#mk_}_fetch
fi
$if_not_do_make \
return 1
@@ -434,7 +414,7 @@ project_up_to_date()
eval "[ \"\$$badhashvar\" = \"y\" ] && return 1"; :
}
prep_multi_tree_build()
prep_mk_multi_tree()
{
dest_dir="$elfdir/$tree/$target/${defconfig#"$target_dir/config/"}"
@@ -455,8 +435,7 @@ check_xgcc()
cbelfdir="elf${cbdir#src}"
xfix="${1%-*}"
[ "$xfix" = "x86_64" ] && \
xfix="x64"
[ "$xfix" = "x86_64" ] && xfix="x64"
xgccfile="$cbelfdir/xgcc_${xfix}_was_compiled"
xgccargs="crossgcc-$xfix UPDATED_SUBMODULES=1 CPUS=$XBMK_THREADS"
@@ -472,10 +451,8 @@ check_xgcc()
[ -n "$xlang" ] && \
export BUILD_LANGUAGES="$xlang"
[ -f "$xgccfile" ] && \
return 0 # build exists already, so skip building
[ -f "$xgccfile" ] && return 0 # skip (build already exists)
# it sometimes fails for like, no reason
make -C "$cbdir" $xgccargs || x_ make -C "$cbdir" $xgccargs
x_ touch "$xgccfile" # prevent unnecessary re-build operations
@@ -484,15 +461,13 @@ check_xgcc()
elfcheck()
{
# TODO: *STILL* very hacky check. do it properly (based on build.list)
( fx_ "eval exit 1 && err" find "$dest_dir" -type f ) || return 1; :
}
handle_makefile()
{
check_makefile "$srcdir" && \
$if_not_dry_build \
x_ make -C "$srcdir" clean $cleanargs
check_makefile "$srcdir" && $if_not_dry_build \
x_ make -C "$srcdir" clean $cleanargs
[ -f "$defconfig" ] && \
x_ cp "$defconfig" "$srcdir/.config"
@@ -546,8 +521,7 @@ check_autoconf()
check_makefile()
{
[ ! -f "$1/Makefile" ] && [ ! -f "$1/makefile" ] && \
[ ! -f "$1/GNUmakefile" ] && \
return 1; :
[ ! -f "$1/GNUmakefile" ] && return 1; :
}
copy_elf()