summaryrefslogtreecommitdiffstats
path: root/inc/functions.inc.sh
diff options
context:
space:
mode:
Diffstat (limited to 'inc/functions.inc.sh')
-rw-r--r--inc/functions.inc.sh96
1 files changed, 96 insertions, 0 deletions
diff --git a/inc/functions.inc.sh b/inc/functions.inc.sh
new file mode 100644
index 0000000..9535750
--- /dev/null
+++ b/inc/functions.inc.sh
@@ -0,0 +1,96 @@
+
+. ./inc/chroot-functions.inc.sh
+. ./inc/color.inc.sh
+. ./inc/helper.inc.sh
+
+cleanup_tmp(){
+ rm -f /tmp/.broot* >/dev/null 2>&1
+}
+
+runtasks() {
+ echo "tasks=(${tasks[@]:0} cleanup)" > /tmp/.broot.tasks
+ touch /tmp/.broot.runtime_events
+ while [ -f /tmp/.broot.tasks -a ! -f /tmp/.broot.exit ]
+ do
+ # reread tasks list
+ . /tmp/.broot.tasks
+ . /tmp/.broot.runtime_events
+
+ [ -f $BROOT_BUILDROOT_PATH/.broot.packages.installed ] || mkdir -p $BROOT_BUILDROOT_PATH && touch $BROOT_BUILDROOT_PATH/.broot.packages.installed
+ . $BROOT_BUILDROOT_PATH/.broot.packages.installed
+
+ if [ -f /tmp/.broot.tasks.replace ]; then
+ mv /tmp/.broot.tasks.replace /tmp/.broot.tasks
+ . /tmp/.broot.tasks
+ fi
+
+ #TODO: check dependencies
+ fulltasks=${tasks[@]:0}
+ t=${tasks[@]:0:1}
+ tmp_tasks=${tasks[@]:1}
+ if [ -e "./tasks/$t.task.sh" ]; then
+ #echo "DEBUG: parsing task: $t"
+ #echo "DEBUG: rest of list: $tmp_tasks"
+ #echo "DEBUG: fulltasklist $fulltasks"
+ . ./tasks/$t.task.sh
+ eval append=\$${t}_append
+
+ still_need=""
+
+ eval runtime_dependencies=\$${t}_runtime_dependencies
+ have_all_runtime_dependencies=1
+ for d in $runtime_dependencies
+ do
+ eval dep=\$${d}_finished
+ ##echo "check for $dep"
+ if [ "x$dep" != "x1" ]; then
+ have_all_runtime_dependencies=0
+ if [ "x$still_need" == "x" ]; then
+ still_need="$d"
+ else
+ still_need="$d $still_need"
+ fi
+ fi
+ done
+
+ eval package_dependencies=\$${t}_package_dependencies
+ have_all_package_dependencies=1
+ for d in $package_dependencies
+ do
+ eval dep=\$${d}_installed
+ # echo "check for $dep"
+ if [ "x$dep" != "x1" ]; then
+ have_all_package_dependencies=0
+ if [ "x$still_need" == "x" ]; then
+ still_need="$d"
+ else
+ still_need="$d $still_need"
+ fi
+ fi
+ done
+
+ if [ "x$have_all_runtime_dependencies" == "x0" -o "x$have_all_package_dependencies" == "x0" ]; then
+ echo "tasks=($still_need $fulltasks)" > /tmp/.broot.tasks
+ #echo "DEBUG: unmatched dependencies: prepending: $still_need; tasks: $fulltasks"
+ else
+ echo "-- [$t] --"
+ eval $t
+ echo "--"
+ echo "${t}_finished=1" >> /tmp/.broot.runtime_events
+ # TODO:
+ echo "${t}_installed=1" >> $BROOT_BUILDROOT_PATH/.broot.packages.installed
+ echo "tasks=($append $tmp_tasks)" > /tmp/.broot.tasks
+ #echo "DEBUG: appended tasks: $append; old tasklist $tmp_tasks"
+ fi
+ else
+ echo "Error: task \"$t\" not found.."
+ echo "Unfinished tasks: $fulltasks"
+ echo "Try to fix the problem and run: \"$0 resume\""
+ echo "tasks=($fulltasks)" > $BROOT_BUILDROOT_PATH/.resume
+ exit 42
+ fi
+ done
+ rm -f /tmp/.broot.tasks
+ rm -f /tmp/.broot.exit
+ rm -f /tmp/.broot.runtime_events
+}