summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/git.sh4
-rw-r--r--include/lib.sh23
-rw-r--r--include/rom.sh8
-rw-r--r--include/vendor.sh63
-rwxr-xr-xmk61
5 files changed, 56 insertions, 103 deletions
diff --git a/include/git.sh b/include/git.sh
index 30f9729a..42b04010 100644
--- a/include/git.sh
+++ b/include/git.sh
@@ -34,8 +34,8 @@ fetch_project()
clone_project
for x in config/git/*; do
- [ -d "$x" ] && nuke "${x##*/}" "src/${x##*/}" 2>/dev/null
- done; return 0
+ [ -d "$x" ] && nuke "${x##*/}" "src/${x##*/}" 2>/dev/null; :
+ done; :
}
clone_project()
diff --git a/include/lib.sh b/include/lib.sh
index ac0003f0..cb8e0303 100644
--- a/include/lib.sh
+++ b/include/lib.sh
@@ -50,7 +50,7 @@ chkvars()
}
eval "`setvars "" _nogit board reinstall versiondate aur_notice configdir \
- datadir version relname xbmk_parent`"
+ datadir version relname`"
for fv in version versiondate; do
eval "[ ! -f \".$fv\" ] || read -r $fv < \".$fv\" || :"
@@ -128,19 +128,21 @@ if [ -z "${TMPDIR+x}" ]; then
export TMPDIR="/tmp"
export TMPDIR="$(mktemp -d -t xbmk_XXXXXXXX)"
touch lock || $err "cannot create 'lock' file"
- rm -Rf "$XBMK_CACHE/xbmkpath" "$XBMK_CACHE/gnupath" || \
- $err "cannot remove xbmkpath"
- mkdir -p "$XBMK_CACHE/gnupath" "$XBMK_CACHE/xbmkpath" || \
- $err "cannot create gnupath"
- export PATH="$XBMK_CACHE/xbmkpath:$XBMK_CACHE/gnupath:$PATH" || \
- $err "Can't create gnupath/xbmkpath"
+ x_ rm -Rf "$XBMK_CACHE/xbmkpath" "$XBMK_CACHE/gnupath"
+ x_ mkdir -p "$XBMK_CACHE/gnupath" "$XBMK_CACHE/xbmkpath"
+ export PATH="$XBMK_CACHE/xbmkpath:$XBMK_CACHE/gnupath:$PATH"
(
# set up python v3.x in PATH, in case it's not set up correctly.
# see code above that detected the correct python3 command.
cd "$XBMK_CACHE/xbmkpath" || $err "can't cd $XBMK_CACHE/xbmkpath"
x_ ln -s "`command -v "$python"`" python
) || $err "Can't set up python symlink in $XBMK_CACHE/xbmkpath"
- xbmk_parent="y"
+
+ xbmk_rval=0
+ ./mk "$@" || xbmk_rval=1
+ rm -Rf "$TMPDIR" || xbmk_rval=1
+ rm -f lock || xbmk_rval=1
+ exit $xbmk_rval
fi
# if "y": a coreboot target won't be built if target.cfg says release="n"
@@ -165,7 +167,7 @@ versiondate_="$versiondate"
--pretty='%ct' HEAD)" || versiondate="$versiondate_"
for p in version versiondate; do
chkvars "$p"
- eval "x_ printf \"%s\\n\" \"\$$p\" > .$p"
+ eval "printf \"%s\\n\" \"\$$p\" > .$p || $err \"can't save $p\""
done
relname="$projectname-$version"
export LOCALVERSION="-$projectname-${version%%-*}"
@@ -236,8 +238,7 @@ download()
dl_fail="n" # 1 url, 2 url backup, 3 destination, 4 checksum
vendor_checksum "$4" "$cached" 2>/dev/null && dl_fail="y"
[ "$dl_fail" = "n" ] && e "$3" f && return 0
- mkdir -p "${3%/*}" "$XBMK_CACHE/file" || \
- $err "!mkdir '$3' '$XBMK_CACHE/file'"
+ x_ mkdir -p "${3%/*}" "$XBMK_CACHE/file"
for url in "$1" "$2"; do
[ "$dl_fail" = "n" ] && break
[ -z "$url" ] && continue
diff --git a/include/rom.sh b/include/rom.sh
index f2609bba..7e2271f1 100644
--- a/include/rom.sh
+++ b/include/rom.sh
@@ -63,13 +63,12 @@ mkpayload_grub()
eval "`setvars "" grub_modules grub_install_modules`"
$dry eval "`setcfg "$grubdata/module/$tree"`"
$dry x_ rm -f "$srcdir/grub.elf"; $dry \
- "$srcdir/grub-mkstandalone" --grub-mkimage="$srcdir/grub-mkimage" \
+ x_ "$srcdir/grub-mkstandalone" --grub-mkimage="$srcdir/grub-mkimage" \
-O i386-coreboot -o "$srcdir/grub.elf" -d "${srcdir}/grub-core/" \
--fonts= --themes= --locales= --modules="$grub_modules" \
--install-modules="$grub_install_modules" \
"/boot/grub/grub_default.cfg=${srcdir}/.config" \
- "/boot/grub/grub.cfg=$grubdata/memdisk.cfg" || \
- $err "$tree: cannot build grub.elf"; :
+ "/boot/grub/grub.cfg=$grubdata/memdisk.cfg"; :
}
mkvendorfiles()
@@ -285,6 +284,5 @@ mkcoreboottar()
[ "$XBMK_RELEASE" = "y" ] || return 0
[ "$release" != "n" ] || return 0
$dry mkrom_tarball "bin/$target"
- $dry ./mk inject "bin/${relname}_${target}.tar.xz" nuke || \
- $err "Can't nuke vendorfiles in 'bin/${relname}_$target.tar.xz'"; :
+ $dry x_ ./mk inject "bin/${relname}_${target}.tar.xz" nuke; :
}
diff --git a/include/vendor.sh b/include/vendor.sh
index d98bde7e..ceea429a 100644
--- a/include/vendor.sh
+++ b/include/vendor.sh
@@ -124,8 +124,7 @@ fetch()
rm -Rf "${_dl}_extracted" || $err "!rm ${_ul}_extracted. $dontflash"
e "$_dest" f && return 0
- mkdir -p "${_dest%/*}" || \
- $err "mkdirs: !mkdir -p ${_dest%/*} - $dontflash"
+ x_ mkdir -p "${_dest%/*}"
remkdir "$appdir"
extract_archive "$_dl" "$appdir" "$dl_type" || \
[ "$dl_type" = "e6400vga" ] || \
@@ -165,8 +164,7 @@ extract_intel_me_bruteforce()
e "$_metmp" f && return 0
[ -z "$sdir" ] && sdir="$(mktemp -d)"
- mkdir -p "$sdir" || \
- $err "extract_intel_me: !mkdir -p \"$sdir\" - $dontflash"
+ x_ mkdir -p "$sdir"
set +u +e
(
@@ -192,7 +190,7 @@ extract_intel_me_bruteforce()
cdir="$1"; [ "${cdir#/a}" != "$cdir" ] && cdir="${cdir#/}"
cd "$cdir" || :
done
- )
+ ) || :
rm -Rf "$sdir" || $err "extract_intel_me: !rm -Rf $sdir - $dontflash"
}
@@ -200,11 +198,10 @@ apply_me11_deguard_mod()
{
(
x_ cd src/deguard/
- ./finalimage.py --delta "data/delta/$ME11delta" \
+ x_ ./finalimage.py --delta "data/delta/$ME11delta" \
--version "$ME11version" \
--pch "$ME11pch" --sku "$ME11sku" --fake-fpfs data/fpfs/zero \
- --input "$_metmp" --output "$_me" || \
- $err "Error running deguard for $_me - $dontflash"
+ --input "$_metmp" --output "$_me"
) || $err "Error running deguard for $_me - $dontflash"
}
@@ -230,8 +227,7 @@ decat_fspfd()
_fspdir="$2"
_fspsplit="$cbdir/3rdparty/fsp/Tools/SplitFspBin.py"
- $python "$_fspsplit" split -f "$_fspfd" -o "$_fspdir" -n "Fsp.fd" || \
- $err "decat_fspfd '$1' '$2': Can't de-concatenate; $dontflash"; :
+ x_ $python "$_fspsplit" split -f "$_fspfd" -o "$_fspdir" -n "Fsp.fd"
}
extract_kbc1126ec()
@@ -273,8 +269,7 @@ extract_e6400vga()
$err "extract_e6400vga: can't extract bios.bin - $dontflash"
"$e6400_unpack" bios.bin || printf "TODO: fix dell extract util\n"
) || $err "can't extract e6400 vga rom - $dontflosh"
- cp "$appdir/$E6400_VGA_romname" "$_dest" || \
- $err "extract_e6400vga $board: can't cp $_dest - $dontflash"; :
+ x_ cp "$appdir/$E6400_VGA_romname" "$_dest"
}
extract_sch5545ec()
@@ -287,8 +282,7 @@ extract_sch5545ec()
_sch5545ec_fw="$_sch5545ec_fw/0 Raw section/body.bin" # <-- this!
"$uefiextract" "$_bios" || $err "sch5545 !extract - $dontflash"
- cp "$_sch5545ec_fw" "$_dest" || \
- $err "$_dest: !sch5545 copy - $dontflash"; :
+ x_ cp "$_sch5545ec_fw" "$_dest"
}
# Lenovo ThunderBolt firmware updates:
@@ -303,14 +297,11 @@ extract_tbfw()
while read -r f; do
[ -f "$f" ] || continue
[ -L "$f" ] && continue
- cp "$f" "tmp/tb.bin" || \
- $err "extract_tbfw $_dest: Can't copy TBT.bin - $dontflash"
+ x_ cp "$f" "tmp/tb.bin"
break
done < "tmp/tb.txt"
- dd if=/dev/null of=tmp/tb.bin bs=1 seek=$TBFW_size || \
- $err "extract_tbfw $_dest: Can't pad TBT.bin - $dontflash"
- cp "tmp/tb.bin" "$_dest" || \
- $err "extract_tbfw $_dest: copy error - $dontflash "; :
+ x_ dd if=/dev/null of=tmp/tb.bin bs=1 seek=$TBFW_size
+ x_ cp "tmp/tb.bin" "$_dest"
}
extract_fspm()
@@ -326,8 +317,7 @@ extract_fsps()
# this copies the fsp s/m; re-base is handled by ./mk inject
copy_fsp()
{
- cp "$appdir/Fsp_$1.fd" "$_dest" || \
- $err "copy_fsp: Can't copy $1 to $_dest - $dontflash"; :
+ x_ cp "$appdir/Fsp_$1.fd" "$_dest"
}
fail_inject()
@@ -337,7 +327,7 @@ fail_inject()
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"
- fail "$1"
+ err_ "$1"
}
vendor_inject()
@@ -374,7 +364,9 @@ vendor_inject()
readcfg && need_files="y"
if [ "$need_files" = "y" ] || [ -n "$new_mac" ]; then
- [ "$nukemode" = "nuke" ] || x_ ./mk download "$board"
+ if [ "$nukemode" != "nuke" ] && [ "$need_files" = "y" ]; then
+ x_ ./mk download "$board"
+ fi
patch_release_roms
fi
[ "$need_files" != "y" ] && printf \
@@ -470,6 +462,7 @@ patch_release_roms()
x_ tar -xf "$archive" -C "${tmpromdir%"/bin/$board"}"
for _hashes in $hashfiles; do
+ [ "$need_files" = "y" ] || break
e "$tmpromdir/$_hashes" f && has_hashes="y" && \
hashfile="$_hashes" && break; :
done
@@ -493,17 +486,18 @@ patch_release_roms()
"$vguide" > "$tmpromdir/README.md" || :
else
printf "Skipping vendorfiles on '%s'\n" "$archive" 1>&2
+ need_files="n"
fi
(
+ [ "$need_files" = "y" ] || exit 0
cd "$tmpromdir" || $err "patch '$archive': can't cd $tmpromdir"
# NOTE: For compatibility with older rom releases, defer to sha1
if [ "$has_hashes" = "y" ] && [ "$nukemode" != "nuke" ]; then
sha512sum --status -c "$hashfile" || \
sha1sum --status -c "$hashfile" || \
$err "'$archive' -> Can't verify vendor hashes. $dontflash"
- rm -f "$hashfile" || \
- $err "$archive: Can't rm hashfile. $dontflash"
+ x_ rm -f "$hashfile"
fi
) || $err "'$archive' -> Can't verify vendor hashes. $dontflash"
@@ -513,8 +507,7 @@ patch_release_roms()
[ "$xchanged" = "y" ] || rm -Rf "$tmpromdel" || :
[ "$xchanged" = "y" ] || return 0
(
- cd "${tmpromdir%"/bin/$board"}" || \
- $err "Can't cd '${tmpromdir%"/bin/$board"}'; $dontflash"
+ x_ cd "${tmpromdir%"/bin/$board"}"
mkrom_tarball "bin/$board"
) || $err "Cannot re-generate '$archive' - $dontflash"
@@ -538,7 +531,7 @@ process_release_rom()
_xromnew="${_xrom%/*}/${_xromname#"$vfix"}"
stat -c '%s' "$_xrom" > "tmp/rom.size" || \
- $err "$_xrom: Can't get rom size. $dontflash"
+ $err "$_xrom: Can't resize '$_xrom' (out: tmp/rom.size)"
read -r xromsize < "tmp/rom.size" || \
$err "$_xrom: Can't read rom size. $dontflash"
@@ -551,8 +544,7 @@ process_release_rom()
[ $xromsize -lt 524288 ] && \
$err "$_xrom size too small; likely not a rom. $dontflash"
- dd if="$_xrom" of="$_xromnew" bs=$xromsize count=1 || \
- $err "$_xrom: Can't resize. $dontflash"
+ x_ dd if="$_xrom" of="$_xromnew" bs=$xromsize count=1
rm -f "$_xrom" || $err "Can't rm $_xrom - $dontflash"
_xrom="$_xromnew"
@@ -567,7 +559,7 @@ process_release_rom()
# Rename the file, prefixing a warning saying not to flash
cat "$_xrom" tmp/zero.1b > "${_xrom%/*}/$vfix${_xrom##*/}" || \
$err "'$archive' -> can't pad/rename '$_xrom'. $dontflash"
- rm -f "$_xrom" || $err "'$archive' -> can't rm '$_xrom'. $dontflash"
+ x_ rm -f "$_xrom"
}
patch_rom()
@@ -634,13 +626,8 @@ inject()
$err "failed: inject '$_t' '$_dest' on '$rom'"
[ "$nukemode" != "nuke" ] || "$ifdtool" $ifdprefix --nuke $_t \
"$rom" -O "$rom" || $err "$rom: !nuke IFD/$_t"
- xchanged="y"
- return 0
elif [ "$nukemode" = "nuke" ]; then
- "$cbfstool" "$rom" remove -n "$cbfsname" || \
- $err "inject $rom: can't remove $cbfsname"
- xchanged="y"
- return 0
+ x_ "$cbfstool" "$rom" remove -n "$cbfsname"
elif [ "$_t" = "stage" ]; then # the only stage we handle is refcode
x_ mkdir -p tmp
x_ rm -f "tmp/refcode"
diff --git a/mk b/mk
index b1d6cea0..2f5b6057 100755
--- a/mk
+++ b/mk
@@ -17,7 +17,6 @@ fi
. "include/mrc.sh"
eval "`setvars "" vdir src_dirname srcdir mode xp ser`"
-err="fail"
main()
{
@@ -31,18 +30,12 @@ main()
case "$1" in
version) printf "%s\nWebsite: %s\n" "$relname" "$projectsite" ;;
- release)
+ release|download|inject)
+ cmd="vendor_$1" && [ "$1" = "release" ] && cmd="mkrelease"
shift 1
- mkrelease "$@" ;;
- inject)
- shift 1
- vendor_inject "$@" ;;
- download)
- shift 1
- vendor_download "$@" ;;
- -*)
- rval=1 ;;
- *) $err "bad command"
+ $cmd "$@" ;;
+ -*) rval=1 ;;
+ *) $err "bad command" ;;
esac
set -u -e # some commands disable them. turn them on!
return $rval
@@ -119,23 +112,7 @@ build_release()
rm -Rf "$srcdir" || $err "!rm -Rf $srcdir"
}
-fail()
-{
- tmp_cleanup || printf "WARNING: can't rm tmpfiles: %s\n" "$TMPDIR" 1>&2
- err_ "${1}"
-}
-
-tmp_cleanup()
-{
- [ "$xbmk_parent" = "y" ] || return 0
- [ "$TMPDIR" = "/tmp" ] || rm -Rf "$TMPDIR" || return 1
- rm -f lock || return 1
-}
-
-if main "$@"; then
- tmp_cleanup || err_ "can't rm TMPDIR upon non-zero exit: $TMPDIR"
- exit 0
-fi
+main "$@" && exit 0
# what follows was formerly script/trees, whose main() is now trees()
@@ -151,10 +128,6 @@ trees()
{
flags="f:b:m:u:c:x:s:l:n:d:"
- [ $# -lt 1 ] && $err "No argument provided"
- [ "${1%-*}" = "$1" ] && $err \
- "First argument must be a flag ($flags)"
-
while getopts $flags option; do
[ -n "$_f" ] && $err "only one flag is permitted"
_f="$1"
@@ -311,14 +284,13 @@ build_dependencies()
bd_t="${bd##*/}"
[ -z "$bd_p" ] && $dry $err "$project/$tree: !bd '$bd'"
[ "${bd##*/}" = "$bd" ] && bd_t=""
- [ -z "$bd_p" ] || $dry ./mk -b $bd_p $bd_t \
- || $err "!mk $project/$tree $bd_p/$bd_t"; :
+ [ -z "$bd_p" ] || $dry x_ ./mk -b $bd_p $bd_t; :
done; :
}
check_project_hashes()
{
- mkdir -p "$XBMK_CACHE/hash" || $err "!mkdir '$XBMK_CACHE/hash'"
+ x_ mkdir -p "$XBMK_CACHE/hash"
old_pjhash=""
[ ! -f "$XBMK_CACHE/hash/$project$tree" ] || \
read -r old_pjhash < "$XBMK_CACHE/hash/$project$tree"
@@ -337,7 +309,7 @@ check_project_hashes()
$err "!sort project tmp/list"
while read -r rmchk; do
- [ ! -f "$rmchk" ] || sha512sum "$rmchk" | awk \
+ [ ! -f "$rmchk" ] || x_ sha512sum "$rmchk" | awk \
'{print $1}' >> "$TMPDIR/project.hash" || $err "!h $rmchk"
done < "$TMPDIR/project.list"
@@ -369,8 +341,7 @@ check_cross_compiler()
xfix="${_xarch%-*}" && [ "$xfix" = "x86_64" ] && xfix="x64"
# match gnat-X to gcc
- check_gnu_path gcc gnat || check_gnu_path gnat gcc || \
- $err "Cannot match host GCC/GNAT versions"
+ check_gnu_path gcc gnat || x_ check_gnu_path gnat gcc
# sometimes buildgcc fails for like no reason. try twice.
make -C "$cbdir" crossgcc-$xfix $xgccargs || \
@@ -476,7 +447,7 @@ run_make_command()
$dry check_autoconf "$srcdir"
$dry check_makefile "$srcdir" || return 1
- $dry make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs || $err "!$mode"
+ $dry x_ make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs
mkhelp "$mkhelper"
[ "$mode" != "clean" ] || \
@@ -486,10 +457,8 @@ run_make_command()
check_cmake()
{
[ -z "$cmakedir" ] || $dry check_makefile "$1" || cmake -B "$1" \
- "$1/$cmakedir" || $dry check_makefile "$1" || $err \
- "$1: !cmk $cmakedir"
- [ -z "$cmakedir" ] || $dry check_makefile "$1" || \
- $err "check_cmake $1: can't generate Makefile"; :
+ "$1/$cmakedir" || $dry x_ check_makefile "$1"
+ [ -z "$cmakedir" ] || $dry x_ check_makefile "$1"; :
}
check_autoconf()
@@ -510,7 +479,7 @@ check_makefile()
mkhelp()
{
- [ -z "$1" ] || [ -n "$mode" ] || "$1" || $err "mkhelp: !$1"; :
+ [ -z "$1" ] || [ -n "$mode" ] || eval "$1" || $err "mkhelp: !$1"; :
}
copy_elf()
@@ -525,5 +494,3 @@ if trees "$@"; then
. "$mkhelpercfg"
$cmd
fi
-
-tmp_cleanup || err_ "can't rm TMPDIR upon non-zero exit: $TMPDIR"