diff options
Diffstat (limited to 'mk')
-rwxr-xr-x | mk | 61 |
1 files changed, 14 insertions, 47 deletions
@@ -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" |