summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeah Rowe <leah@libreboot.org>2025-05-06 14:56:33 +0100
committerLeah Rowe <leah@libreboot.org>2025-05-06 14:56:33 +0100
commit0a93c8238847fc3f595d7431c8a2e12f0603a6ef (patch)
tree2b789fc74085721c7527a69c86b7bd0e5eb69676
parent7d73e45f5b8656371e286cdca006f9731d1b58ca (diff)
parente8be3fd1d41c3c0a81c2cfecb3fa68271ad794ca (diff)
Merge branch 'master' into 25.04_branch25.04_branch
-rw-r--r--include/git.sh25
-rw-r--r--include/init.sh2
-rw-r--r--include/inject.sh25
-rw-r--r--include/lib.sh51
-rw-r--r--include/rom.sh27
-rwxr-xr-xmk6
6 files changed, 47 insertions, 89 deletions
diff --git a/include/git.sh b/include/git.sh
index ded12625..0a05b5ab 100644
--- a/include/git.sh
+++ b/include/git.sh
@@ -54,9 +54,7 @@ git_prep()
chkvars rev
tmpclone "$1" "$2" "$tmpgit" "$rev" "$_patchdir"
if singletree "$project" || [ $# -gt 4 ]; then
- [ -f "$mdir/module.list" ] && while read -r msrcdir; do
- fetch_submodule "$msrcdir"
- done < "$mdir/module.list"; :
+ dx_ fetch_submodule "$mdir/module.list"
fi
[ "$_loc" != "$XBMK_CACHE/repo/$project" ] && \
@@ -66,15 +64,6 @@ git_prep()
mv "$tmpgit" "$_loc" || err "git_prep: !mv $tmpgit $_loc"
}
-# return 0 if project is single-tree, otherwise 1
-# e.g. coreboot is multi-tree, so 1
-singletree()
-{
- for targetfile in "config/${1}/"*/target.cfg; do
- [ -e "$targetfile" ] && [ -f "$targetfile" ] && return 1; :
- done; :
-}
-
fetch_submodule()
{
mcfgdir="$mdir/${1##*/}"; eval \
@@ -119,23 +108,13 @@ tmpclone()
(
[ $# -gt 5 ] || git clone "$repodir" "$3" || err "!clone $repodir $3"
git -C "$3" reset --hard "$4" || err "!reset $1 $2 $3 $4 $5"
- git_am_patches "$3" "$5"
+ fx_ "eval x_ git -C \"$3\" am" "$5" -type f
) || repofail="y"
[ "$repofail" = "y" ] && [ $# -lt 6 ] && tmpclone "$@" retry
[ "$repofail" = "y" ] && err "!clone $1 $2 $3 $4 $5"; :
}
-git_am_patches()
-{
- for p in "$2/"*; do
- [ -L "$p" ] && continue
- [ -e "$p" ] || continue
- [ -d "$p" ] && git_am_patches "$1" "$p" && continue
- [ ! -f "$p" ] || git -C "$1" am "$p" || err "$1 $2: !am $p"
- done; :
-}
-
nuke()
{
e "config/${1%/}/nuke.list" f missing || while read -r nukefile; do
diff --git a/include/init.sh b/include/init.sh
index 8f5ab059..1be860ea 100644
--- a/include/init.sh
+++ b/include/init.sh
@@ -14,8 +14,6 @@ projectsite="https://libreboot.org/"
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games"
xbmkpath="$PATH"
-xbmk_err="err_"
-
eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \
datadir version xbmkpwd relname xbmkpwd xbmktmp python pyver xbmklocal \
xbmklock`"
diff --git a/include/inject.sh b/include/inject.sh
index 6aceb52c..3cfe891c 100644
--- a/include/inject.sh
+++ b/include/inject.sh
@@ -49,9 +49,8 @@ download()
readkconfig()
{
x_ rm -f "$xbmktmp/cbcfg"
- cbcfg="`check_defconfig "$boarddir"`" || for cbc in $cv; do
- grep "$cbc" "$cbcfg" 1>>"$xbmktmp/cbcfg" 2>/dev/null || :
- done
+ fe_ scankconfig "$boarddir/config" -type f
+
eval "`setcfg "$xbmktmp/cbcfg" 1`"
for c in $cvchk; do
@@ -63,6 +62,13 @@ readkconfig()
return 1
}
+scankconfig()
+{
+ for cbc in $cv; do
+ grep "$cbc" "$1" 1>>"$xbmktmp/cbcfg" 2>/dev/null || :
+ done
+}
+
bootstrap()
{
x_ ./mk -f coreboot ${cbdir##*/}
@@ -254,23 +260,12 @@ copy_tbfw()
extract_fsp()
{
x_ python "$cbdir/3rdparty/fsp/Tools/SplitFspBin.py" split -f "$1" \
- -o "$2" -n "Fsp.fd" && x_ cp "$appdir/"Fsp_*.fd "${_dest%/*}"
-}
-
-fail_inject()
-{
- [ -L "$tmpromdel" ] || [ ! -d "$tmpromdel" ] || \
- rm -Rf "$tmpromdel" || :
- printf "\n\n%s\n\n" "$dontflash" 1>&2
- printf "WARNING: File '%s' was NOT modified.\n\n" "$archive" 1>&2
- printf "Please MAKE SURE vendor files are inserted before flashing\n\n"
- err_ "$1"
+ -o "${_dest%/*}" -n "Fsp.fd"
}
inject()
{
need_files="n"
- xbmk_err="fail_inject"
remkdir "$tmpromdel"
set +u +e
diff --git a/include/lib.sh b/include/lib.sh
index 43b1a318..572fcf68 100644
--- a/include/lib.sh
+++ b/include/lib.sh
@@ -105,14 +105,6 @@ mk()
done; :
}
-check_defconfig()
-{
- [ -d "$1" ] || err "Target '$1' not defined."
- for x in "$1"/config/*; do
- [ -f "$x" ] && printf "%s\n" "$x" && return 1
- done; :
-}
-
setvars()
{
_setvars=""
@@ -144,6 +136,13 @@ chkvars()
done; :
}
+# return 0 if project is single-tree, otherwise 1
+# e.g. coreboot is multi-tree, so 1
+singletree()
+{
+ ( fx_ "exit 1" "config/$1/"*/ -type f -name "target.cfg" ) || return 1
+}
+
fe_()
{
find_ex "x_" "$@"
@@ -159,17 +158,21 @@ find_ex()
xmsg="$1" && shift 1
fd="`mktemp`" && x_ rm -f "$fd" && x_ touch "$fd"
xx="$1" && shift 1
- $xmsg find "$@" 2>/dev/null | sort > "$fd" || \
+ $xmsg find "$@" 2>/dev/null | sort 1>"$fd" 2>/dev/null || \
err "!find $(echo "$@") > \"$fd\""
- while read -r fx; do
- $xx "$fx" || break; :
- done < "$fd"
+ dx_ "$xx" "$fd"
x_ rm -f "$fd"
}
+dx_()
+{
+ [ -f "$2" ] && while read -r fx; do
+ $1 "$fx"
+ done < "$2"; :
+}
+
x_()
{
- [ $# -lt 1 ] && printf "WARNING: x_ called without arguments\n" 1>&2
[ $# -lt 1 ] || [ -n "$1" ] || err "Empty first arg: x_ $(echo "$@")"
[ $# -lt 1 ] || "$@" || err "Unhandled error for: $(echo "$@")"; :
}
@@ -177,28 +180,6 @@ x_()
err()
{
set -u -e
-
- xbmk_err_val=0
- real_err="" && [ -n "${xbmk_err+x}" ] && real_err="$xbmk_err"
-
- if [ -z "$real_err" ]; then
- printf "WARNING: err not set. Defaulting to 'err_'\n" 1>&2
- real_err="err_"
- fi
-
- (
- $real_err "$@" || err_ "Error function '$real_err' *returned* 1"
- err_ "Error function '$real_err' didn't exit"
- exit 1 # just in case!
- ) || xbmk_err_val=1 # otherwise, it wrongly did exit 0, not exit 1
-
- [ $xbmk_err_val -eq 0 ] && err_ "Error function '$real_err' did exit 0"
- exit 1 # just in case!
-}
-
-err_()
-{
- [ $# -lt 1 ] && printf "ERROR (but no error message provided)\n" 1>&2
[ $# -lt 1 ] || printf "ERROR %s: %s\n" "$0" "$1" 1>&2 || :
exit 1
}
diff --git a/include/rom.sh b/include/rom.sh
index af739d92..0eebdabb 100644
--- a/include/rom.sh
+++ b/include/rom.sh
@@ -192,9 +192,7 @@ mkseagrub()
[ "$payload_grubsea" = "y" ] && pname="grub"
[ "$payload_grubsea" = "y" ] || \
cbfs "$tmprom" "$grubdata/bootorder" bootorder raw
- for keymap in config/data/grub/keymap/*.gkb; do
- [ -f "$keymap" ] && cprom "${keymap##*/}"; :
- done; :
+ fe_ "cprom" "$grubdata/keymap" -type f -name "*.gkb"
}
add_uboot()
@@ -243,16 +241,25 @@ add_uboot()
cprom()
{
- newrom="bin/$target/${pname}_${target}_$initmode.rom"
+ cpcmd="cp"
+
+ tmpnew=""; newrom="bin/$target/${pname}_${target}_$initmode.rom"
[ -n "$displaymode" ] && newrom="${newrom%.rom}_$displaymode.rom"
- [ $# -gt 0 ] && [ "$1" != "seauboot" ] && \
- newrom="${newrom%.rom}_${1%.gkb}.rom"
+ [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ] && tmpnew="${1##*/}" && \
+ newrom="${newrom%.rom}_${tmpnew%.gkb}.rom"
- x_ mkdir -p "bin/$target"
- x_ cp "$tmprom" "$newrom" && [ $# -gt 0 ] && [ "$1" != "seauboot" ] && \
- cbfs "$newrom" "config/data/grub/keymap/$1" keymap.gkb raw
+ irom="$tmprom"
+ [ $# -lt 1 ] || irom="`mktemp`" || err "!mk irom, $(echo "$@")"
+ [ $# -gt 0 ] && x_ cp "$tmprom" "$irom" && cpcmd="mv"
+
+ [ $# -gt 0 ] && [ "${1%.gkb}" != "$1" ] && \
+ cbfs "$irom" "$grubdata/keymap/$tmpnew" keymap.gkb raw
[ $# -gt 0 ] && [ "$1" = "seauboot" ] && \
- cbfs "$newrom" "config/data/grub/bootorder_uboot" bootorder raw; :
+ cbfs "$irom" "$grubdata/bootorder_uboot" bootorder raw; :
+
+ printf "Creating new %s image: '%s'\n" "$projectname" "$newrom"
+ x_ mkdir -p "bin/$target"
+ x_ $cpcmd "$irom" "$newrom"
}
cbfs()
diff --git a/mk b/mk
index dcf135a1..a438d653 100755
--- a/mk
+++ b/mk
@@ -370,10 +370,8 @@ check_defconfig()
elfcheck()
{
- # TODO: very hacky check. do it properly (based on build.list)
- for elftest in "$dest_dir"/*; do
- [ -e "$elftest" ] && e "$elftest" f && return 1
- done; :
+ # TODO: *STILL* very hacky check. do it properly (based on build.list)
+ ( fx_ "exit 1" "$dest_dir" -type f ) || return 1; :
}
handle_makefile()