summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/get.sh11
-rw-r--r--include/init.sh15
-rw-r--r--include/lib.sh20
-rw-r--r--include/tree.sh7
4 files changed, 32 insertions, 21 deletions
diff --git a/include/get.sh b/include/get.sh
index 667ab398..ae2c5a35 100644
--- a/include/get.sh
+++ b/include/get.sh
@@ -22,7 +22,7 @@ fetch_project()
eval "`setvars "" xtree`"
eval "`setcfg "config/git/$project/pkg.cfg"`"
- chkvars url
+ chkvars url bkup_url
[ -n "$xtree" ] && x_ ./mk -f coreboot "$xtree"
[ -z "$depend" ] || for d in $depend ; do
@@ -85,9 +85,12 @@ xbmkget()
echk="f" && [ "$1" = "git" ] && echk="d"
for url in "$2" "$3"; do
- [ -n "$url" ] && try_file "$url" "$@" && \
- eval "[ -$echk \"$4\" ] && return 0"
- done && err "$1 $2 $3 $4: not downloaded"; :
+ [ -n "$url" ] || err "empty URL given in: xbmkget $*"
+ try_file "$url" "$@" || continue
+ eval "[ -$echk \"$4\" ] || continue"
+ return 0 # successful download/copy
+ done
+ err "$1 $2 $3 $4: not downloaded"; :
}
try_file()
diff --git a/include/init.sh b/include/init.sh
index cd4acf43..38eb1c81 100644
--- a/include/init.sh
+++ b/include/init.sh
@@ -30,7 +30,7 @@ xbmk_init()
id -u 1>/dev/null 2>/dev/null || err "suid check failed (id -u)"
[ "$(id -u)" != "0" ] || err "this command as root is not permitted"
- for init_cmd in get_version set_env git_init child_exec; do
+ for init_cmd in get_version set_env set_threads git_init child_exec; do
xbmk_$init_cmd "$@" || break
done
}
@@ -76,7 +76,7 @@ xbmk_set_env()
if [ "$is_child" = "y" ]; then
[ -z "${XBMK_CACHE+x}" ] && err "XBMK_CACHE unset on child"
- [ -z "${XBMK_THREADS+x}" ] && err "XBMK_THREADS unset on child"
+ [ -z "${XBMK_THREADS+x}" ] && xbmk_set_threads
e "lock" f missing && err "lock file absent on child"
return 1
fi
@@ -104,10 +104,6 @@ xbmk_set_env()
[ "$XBMK_RELEASE" = "Y" ] && export XBMK_RELEASE="y"
[ "$XBMK_RELEASE" = "y" ] || export XBMK_RELEASE="n"
- [ -z "${XBMK_THREADS+x}" ] && export XBMK_THREADS=1
- expr "X$XBMK_THREADS" : "X-\{0,1\}[0123456789][0123456789]*$" \
- 1>/dev/null 2>/dev/null || export XBMK_THREADS=1
-
xbmk_set_version
export LOCALVERSION="-$projectname-${version%%-*}"
@@ -117,6 +113,13 @@ xbmk_set_env()
xbmk_set_pyver
}
+xbmk_set_threads()
+{
+ [ -z "${XBMK_THREADS+x}" ] && export XBMK_THREADS=1
+ expr "X$XBMK_THREADS" : "X-\{0,1\}[0123456789][0123456789]*$" \
+ 1>/dev/null 2>/dev/null || export XBMK_THREADS=1
+}
+
xbmk_set_version()
{
version_="$version"
diff --git a/include/lib.sh b/include/lib.sh
index 6c831795..7c4d71ea 100644
--- a/include/lib.sh
+++ b/include/lib.sh
@@ -53,8 +53,10 @@ setvars()
fi
val="$1"
shift 1
- for var in "$@"; do
- _setvars="$var=\"$val\"; $_setvars"
+ while true; do
+ [ $# -lt 1 ] && break
+ _setvars="$1=\"$val\"; $_setvars"
+ shift 1
done
printf "%s\n" "${_setvars% }"
}
@@ -69,9 +71,11 @@ setcfg()
chkvars()
{
- for var in "$@"; do
- eval "[ -n \"\${$var+x}\" ] || err \"$var unset\""
- eval "[ -n \"\$$var\" ] || err \"$var unset\""
+ while true; do
+ [ $# -lt 1 ] && break
+ eval "[ -n \"\${$1+x}\" ] || err \"$1 unset\""
+ eval "[ -n \"\$$1\" ] || err \"$1 unset\""
+ shift 1
done; :
}
@@ -106,9 +110,9 @@ fx_()
dx_()
{
- [ -f "$2" ] && while read -r fx; do
- $1 "$fx" || return 1
- done < "$2"; :
+ [ ! -f "$2" ] || while read -r fx; do
+ $1 "$fx" || return 1; :
+ done < "$2" || err "dx_ $*: cannot read '$2'"; :
}
x_()
diff --git a/include/tree.sh b/include/tree.sh
index 25d4732c..8d787d4c 100644
--- a/include/tree.sh
+++ b/include/tree.sh
@@ -332,8 +332,9 @@ check_makefile()
copy_elf()
{
- [ -f "$listfile" ] && x_ mkdir -p "$dest_dir" && while read -r f; do
- [ -f "$srcdir/$f" ] && x_ cp "$srcdir/$f" "$dest_dir"
- done < "$listfile"
+ [ -f "$listfile" ] && x_ mkdir -p "$dest_dir"
+ [ ! -f "$listfile" ] || while read -r f; do
+ [ -f "$srcdir/$f" ] && x_ cp "$srcdir/$f" "$dest_dir"; :
+ done < "$listfile" || err "copy_elf $*: cannot read '$listfile'"; :
x_ make clean -C "$srcdir" $cleanargs
}