diff options
Diffstat (limited to 'include/tree.sh')
-rw-r--r-- | include/tree.sh | 45 |
1 files changed, 16 insertions, 29 deletions
diff --git a/include/tree.sh b/include/tree.sh index 83887864..7bfddf67 100644 --- a/include/tree.sh +++ b/include/tree.sh @@ -45,8 +45,7 @@ trees() [ -z "$_f" ] && err "missing flag ($flags)" [ -z "$project" ] && fx_ "x_ ./mk $_f" x_ ls -1 config/git && return 1 - [ -f "config/git/$project/pkg.cfg" ] || \ - err "config/git/$project/pkg.cfg missing" + e "config/git/$project/pkg.cfg" f missing && err "$project: no pkg.cfg" for d in "elf" "config/data" "config" "src"; do eval "${d#*/}dir=\"$d/$project\"" @@ -58,7 +57,7 @@ trees() mkhelpercfg="$datadir/mkhelper.cfg" if e "$mkhelpercfg" f missing; then - mkhelpercfg="$xbmktmp/mkhelper.cfg" + mkhelpercfg="$xbtmp/mkhelper.cfg" x_ touch "$mkhelpercfg" fi @@ -75,9 +74,7 @@ build_project() [ ! -f "$listfile" ] || $dry elfcheck || return 0 [ "$mode" = "distclean" ] && mode="clean" - run_make_command || return 0 - - [ -n "$mode" ] || $dry copy_elf; : + run_make_command && [ -z "$mode" ] && $dry copy_elf; : } build_targets() @@ -89,13 +86,9 @@ build_targets() unset CROSS_COMPILE export PATH="$xbmkpath" [ "$x" = "list" ] && x_ ls -1 "config/$project" && \ - listfile="" && break - - target="$x" + listfile="" && break; target="$x" printf "'make %s', '%s', '%s'\n" "$mode" "$project" "$target" - x_ handle_defconfig - - [ -n "$mode" ] || x_ $postmake + x_ handle_defconfig && [ -z "$mode" ] && x_ $postmake; : done; : } @@ -120,8 +113,7 @@ handle_defconfig() [ "$_f" = "-d" ] || defconfig="$y" [ -n "$mode" ] || check_defconfig || continue - handle_makefile - [ -n "$mode" ] || $dry copy_elf + handle_makefile && [ -z "$mode" ] && $dry copy_elf; : done; : } @@ -130,8 +122,7 @@ configure_project() eval "`setvars "" cleanargs build_depend autoconfargs xtree postmake \ makeargs btype mkhelper bootstrapargs premake release xlang xarch \ badhash`" - _tcfg="$1/target.cfg" - [ -f "$_tcfg" ] || btype="auto" + _tcfg="$1/target.cfg" && [ ! -f "$_tcfg" ] && btype="auto" e "$datadir/mkhelper.cfg" f && eval "`setcfg "$datadir/mkhelper.cfg"`" while e "$_tcfg" f || [ "$cmd" != "build_project" ]; do @@ -144,8 +135,7 @@ configure_project() [ "$do_make" != "n" ] && break [ "${_tcfg%/*/target.cfg}" = "${_tcfg%"/$tree/target.cfg"}" ] \ - && break - _tcfg="${_tcfg%/*/target.cfg}/$tree/target.cfg" + && break; _tcfg="${_tcfg%/*/target.cfg}/$tree/target.cfg" done [ "$XBMK_RELEASE" = "y" ] && [ "$release" = "n" ] && return 1 [ -z "$btype" ] || [ "${mode%config}" = "$mode" ] || return 1 @@ -181,14 +171,13 @@ check_project_hashes() fx_ "x_ sha512sum" find "$datadir" "$configdir/$tree" "$mdir" \ -type f -not -path "*/.git*/*" | awk '{print $1}' > \ - "$xbmktmp/project.hash" || err "!h $project $tree" + "$xbtmp/project.hash" || err "!h $project $tree" - pjhash="$(sha512sum "$xbmktmp/project.hash" | awk '{print $1}')" || : + pjhash="$(sha512sum "$xbtmp/project.hash" | awk '{print $1}')" || : [ "$pjhash" != "$old_pjhash" ] && badhash="y" [ -f "$XBMK_CACHE/hash/$project$tree" ] || badhash="y" - printf "%s\n" "$pjhash" > "$XBMK_CACHE/hash/$project$tree" || \ - err "!mk $XBMK_CACHE/hash/$project$tree" + printf "%s\n" "$pjhash" > "$XBMK_CACHE/hash/$project$tree" || err [ "$badhash" != "y" ] || x_ rm -Rf "src/$project/$tree" \ "elf/$project/$tree" "elf/$project/$target"; : @@ -279,8 +268,6 @@ handle_makefile() $dry x_ make -C "$srcdir" $cleanargs clean [ -f "$defconfig" ] && x_ cp "$defconfig" "$srcdir/.config" - [ -n "$mode" ] || [ -n "$btype" ] || $dry make -C \ - "$srcdir" silentoldconfig || make -C "$srcdir" oldconfig || : run_make_command || err "handle_makefile $srcdir: no makefile!" @@ -297,15 +284,17 @@ run_make_command() { [ -n "$mode" ] || x_ $premake - $dry check_cmake "$srcdir" && [ -z "$mode" ] && \ - $dry check_autoconf "$srcdir" + $dry check_cmake "$srcdir" + [ -n "$mode" ] || ( $dry check_autoconf "$srcdir" ) || err $dry check_makefile "$srcdir" || return 1 $dry x_ make -C "$srcdir" $mode -j$XBMK_THREADS $makeargs [ -n "$mode" ] || x_ $mkhelper + check_makefile "$srcdir" || return 0 [ "$mode" != "clean" ] || \ - $dry make -C "$srcdir" $cleanargs distclean || :; : + $dry make -C "$srcdir" $cleanargs distclean || \ + $dry x_ make -C "$srcdir" $cleanargs clean; : } check_cmake() @@ -317,12 +306,10 @@ check_cmake() check_autoconf() { - ( x_ cd "$1" [ -f "bootstrap" ] && x_ ./bootstrap $bootstrapargs [ -f "autogen.sh" ] && x_ ./autogen.sh $autogenargs [ -f "configure" ] && x_ ./configure $autoconfargs; : - ) || err "can't bootstrap project: $1"; : } check_makefile() |