summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/init.sh81
-rwxr-xr-xmk18
2 files changed, 58 insertions, 41 deletions
diff --git a/include/init.sh b/include/init.sh
index 2e60883d..a88bd13f 100644
--- a/include/init.sh
+++ b/include/init.sh
@@ -18,8 +18,14 @@ err="err_"
setvars()
{
- _setvars="" && [ $# -lt 2 ] && $err "setvars: too few arguments"
- val="$1" && shift 1 && for var in "$@"; do
+ _setvars=""
+ if [ $# -lt 2 ]; then
+ printf "\$err \"setvars: too few args\\n\""
+ return 0
+ fi
+ val="$1"
+ shift 1
+ for var in "$@"; do
_setvars="$var=\"$val\"; $_setvars"
done
printf "%s\n" "${_setvars% }"
@@ -47,12 +53,9 @@ 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 fv in version versiondate; do
- eval "[ ! -f \".$fv\" ] || read -r $fv < \".$fv\" || :"
- done
-
- for xbmk_cmd in setpyver init_vars init_ver xbmk_child_init; do
- $xbmk_cmd "$@"
+ for init_cmd in set_pyver set_env set_version git_init create_tmpdir \
+ lock create_pathdirs child_exec; do
+ xbmk_$init_cmd "$@" || break
done
}
@@ -86,7 +89,7 @@ chkvars()
done; :
}
-setpyver()
+xbmk_set_pyver()
{
pyv="import sys; print(sys.version_info[:])"
python="python3"
@@ -136,7 +139,7 @@ pybin()
command -v "$1" 2>/dev/null || return 1
}
-init_vars()
+xbmk_set_env()
{
# XBMK_CACHE is a directory, for caching downloads and git repon
[ -z "${XBMK_CACHE+x}" ] && export XBMK_CACHE="$xbmkpwd/cache"
@@ -153,16 +156,20 @@ init_vars()
[ -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
+ 1>/dev/null 2>/dev/null || export XBMK_THREADS=1; :
+}
+
+xbmk_set_version()
+{
+ for fv in version versiondate; do
+ eval "[ ! -f \".$fv\" ] || read -r $fv < \".$fv\" || :"
+ done
[ -e ".git" ] || [ -f ".version" ] || printf "unknown\n" > .version \
|| $err "Cannot generate unknown .version file"
[ -e ".git" ] || [ -f ".versiondate" ] || printf "1716415872\n" > \
- .versiondate || $err "Cannot generate unknown .versiondate file"
-}
+ .versiondate || $err "Cannot generate unknown .versiondate file"; :
-init_ver()
-{
version_="$version"
[ ! -e ".git" ] || version="$(git describe --tags HEAD 2>&1)" || \
version="git-$(git rev-parse HEAD 2>&1)" || version="$version_"
@@ -178,22 +185,47 @@ init_ver()
export LOCALVERSION="-$projectname-${version%%-*}"
}
-# if this instance is the main parent, re-run as a child process and exit.
-xbmk_child_init()
+xbmk_git_init()
+{
+ [ -L ".git" ] && return 1
+ [ -e ".git" ] && return 0
+ eval "`setvars "$(date -Rud @$versiondate)" cdate _nogit`"
+
+ x_ git init 1>/dev/null 2>/dev/null
+ x_ git add -A . 1>/dev/null 2>/dev/null
+ x_ git commit -m "$projectname $version" --date "$cdate" \
+ --author="xbmk <xbmk@example.com>" 1>/dev/null 2>/dev/null
+ x_ git tag -a "$version" -m "$projectname $version" 1>/dev/null \
+ 2>/dev/null
+
+ for gitarg in "--global user.name" "--global user.email"; do
+ gitcmd="git config $gitarg"; $gitcmd || $err \
+ "Please run this first: $gitcmd \"your ${gitcmd##*.}\""
+ done
+}
+
+xbmk_create_tmpdir()
{
# unify all temporary files/directories in a single TMPDIR
[ -z "${TMPDIR+x}" ] || [ "${TMPDIR%_*}" = "/tmp/xbmk" ] || \
unset TMPDIR
[ -n "${TMPDIR+x}" ] && export TMPDIR="$TMPDIR" && xbmktmp="$TMPDIR"
- [ -z "${TMPDIR+x}" ] || return 0 # this is a child instance, so return
+ [ -z "${TMPDIR+x}" ] || return 1 # child instance, so return
# parent instance of xbmk, so don't return. set up TMPDIR
- # and re-run as a child instance:
- [ -f "lock" ] && $err "$xbmkpwd/lock exists. Is a build running?"
export TMPDIR="/tmp"
export TMPDIR="$(mktemp -d -t xbmk_XXXXXXXX)"
xbmktmp="$TMPDIR"
- touch lock || $err "cannot create 'lock' file"
+}
+
+xbmk_lock()
+{
+ [ -f "lock" ] && $err "$xbmkpwd/lock exists. Is a build running?"
+ touch lock || $err "cannot create 'lock' file"; :
+}
+
+xbmk_create_pathdirs()
+{
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"
@@ -202,10 +234,13 @@ xbmk_child_init()
# see code above that detected the correct python3 command.
cd "$XBMK_CACHE/xbmkpath" || $err "can't cd $XBMK_CACHE/xbmkpath"
x_ ln -s "`pybin "$python"`" python
- ) || $err "Can't set up python symlink in $XBMK_CACHE/xbmkpath"
+ ) || $err "Can't set up python symlink in $XBMK_CACHE/xbmkpath"; :
+}
+xbmk_child_exec()
+{
xbmk_rval=0
- ./mk "$@" || xbmk_rval=1
+ ( x_ ./mk "$@" ) || xbmk_rval=1
rm -Rf "$xbmktmp" || xbmk_rval=1
rm -f lock || xbmk_rval=1
exit $xbmk_rval
diff --git a/mk b/mk
index c0184384..bc816229 100755
--- a/mk
+++ b/mk
@@ -23,11 +23,6 @@ main()
{
cmd="" && [ $# -gt 0 ] && cmd="$1" && shift 1
- for g in "command -v git" "git config --global user.name" \
- "git config --global user.email" "git_init"; do
- eval "$g 1>/dev/null 2>/dev/null || $err \"Unconfigured: $g\""
- done
-
case "$cmd" in
version) printf "%s\nWebsite: %s\n" "$relname" "$projectsite" ;;
release|download|inject) $cmd "$@" ;;
@@ -37,19 +32,6 @@ main()
set -u -e # some commands disable them. turn them on!
}
-git_init()
-{
- [ -L ".git" ] && return 1
- [ -e ".git" ] && return 0
- eval "`setvars "$(date -Rud @$versiondate)" cdate _nogit`"
-
- git init || return 1
- git add -A . || return 1
- git commit -m "$projectname $version" --date "$cdate" \
- --author="xbmk <xbmk@example.com>" || return 1
- git tag -a "$version" -m "$projectname $version" || return 1
-}
-
release()
{
export XBMK_RELEASE="y"