diff options
-rw-r--r-- | include/git.sh | 25 | ||||
-rw-r--r-- | include/init.sh | 2 | ||||
-rw-r--r-- | include/inject.sh | 25 | ||||
-rw-r--r-- | include/lib.sh | 51 | ||||
-rw-r--r-- | include/rom.sh | 27 | ||||
-rwxr-xr-x | mk | 6 |
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() @@ -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() |