summaryrefslogtreecommitdiff
path: root/mk
diff options
context:
space:
mode:
Diffstat (limited to 'mk')
-rwxr-xr-xmk61
1 files changed, 14 insertions, 47 deletions
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"