From 34c6d442202ea8d112d164b8611a60b8e4832b12 Mon Sep 17 00:00:00 2001
From: "B. Watson" <yalhcru@gmail.com>
Date: Thu, 10 Mar 2022 15:27:56 -0500
Subject: sbqrun: added (build and install a list of slackbuilds)

---
 sbqrun | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 90 insertions(+)
 create mode 100755 sbqrun

(limited to 'sbqrun')

diff --git a/sbqrun b/sbqrun
new file mode 100755
index 0000000..6b35189
--- /dev/null
+++ b/sbqrun
@@ -0,0 +1,90 @@
+#!/bin/bash
+
+# sbrun wrapper, runs multiple builds.
+
+# usage: sbqrun arg [arg ...]
+
+if [ "$1" = "" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
+	cat <<EOF
+Usage: $( basename $0 ) [-n] [-t] arg [arg ...]
+
+Run this script from the top level of a SBo repo clone!
+
+If arg is a file, its contents are added to the list of builds. Use -
+to read a list of builds from stdin (possibly piped from sbodeps -q).
+
+If arg is a directory, it's added to the list.
+
+If arg is neither, it's assumed to be a bare build name (with no category/
+directory) and searched for.
+
+Full sbopkg queue syntax is NOT supported, only a simple list of builds
+(no |VAR=value, no @file, no -app). If you need sbopkg, use sbopkg!
+
+Once the list is built, each build is downloaded with sbodl, built with
+sbrun -c, and installed with upkg, in the order given. If the -n and/or
+-t options are given, they will be passed to sbrun.
+EOF
+	exit 0
+fi
+
+source ~/sbostuff/sbostuff.sh
+cdsb
+
+for arg; do
+	if [ "$arg" = "-t" -o "$arg" = "-n" ]; then
+		SBRUN_OPTS="$SBRUN_OPTS $arg"
+	elif [ "$arg" = "-" ]; then
+		while read build; do
+			BUILDS="$BUILDS $build"
+		done
+	elif [ -f "$arg" ]; then
+		BUILDS="$BUILDS `cat $arg`"
+	elif [ -d "$arg" ]; then
+		BUILDS="$BUILDS $arg"
+	else
+		arg=$( echo */$arg )
+		if [ -d "$arg" ]; then
+			BUILDS="$BUILDS $arg"
+		else
+			echo "!!! no idea what '$arg' is, skipping"
+		fi
+	fi
+done
+
+FAILED=""
+COUNT=0
+FAILCOUNT=0
+
+for build in $BUILDS; do
+	: $(( COUNT ++ ))
+	echo "==== sbqrun: COUNT=$COUNT, FAILCOUNT=$FAILCOUNT, starting $build"
+	if ! cdsb "$build"; then
+		echo "==== sbqrun: ERROR: no such build: $build"
+		FAILED+="$build "
+		: $(( FAILCOUNT ++ ))
+		continue
+	fi
+
+	sbodl || echo "==== sbqrun: WARN: download failed, trying build anyway"
+
+	if ! sbrun -c $SBRUN_OPTS; then
+		echo "==== sbqrun: BUILD FAILED: $build, see $(pwd)/build.log"
+		FAILED+="$build "
+		: $(( FAILCOUNT ++ ))
+	else
+		if ! upkg; then
+			echo "==== sbqrun: $build built, but FAILED to install"
+			: $(( FAILCOUNT ++ ))
+		fi
+	fi
+done
+
+echo "==== Processed $COUNT builds"
+if [ "$FAILCOUNT" = "0" ]; then
+	echo "==== No failures"
+	exit 0
+else
+	echo "==== $FAILCOUNT build failures: $FAILED"
+	exit 1
+fi
-- 
cgit v1.2.3