summaryrefslogtreecommitdiff
path: root/include/init.sh
diff options
context:
space:
mode:
Diffstat (limited to 'include/init.sh')
-rw-r--r--include/init.sh81
1 files changed, 58 insertions, 23 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