changeset 1025:21a87230c8a1

vanilla: update bulk.sh
author David Demelier <markand@malikania.fr>
date Thu, 29 Aug 2019 20:33:00 +0200
parents 2ef5d78d7712
children 3dfef64b81c1
files Scripts/bulk.sh
diffstat 1 files changed, 47 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/Scripts/bulk.sh	Thu Aug 29 21:00:00 2019 +0200
+++ b/Scripts/bulk.sh	Thu Aug 29 20:33:00 2019 +0200
@@ -17,29 +17,37 @@
 # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 #
 
-alias basename="busybox basename"
-alias dirname="busybox dirname"
-alias echo="busybox echo"
-alias find="busybox find"
-alias grep="busybox grep"
-alias realpath="busybox realpath"
+for applet in $(busybox --list); do
+	alias $applet="busybox $applet"
+done
 
 TOP=$(realpath $(dirname $0)/../)
 PROGNAME=$(basename $0)
+TMPDIR=/tmp/vanilla-bulk
 
-rm -f /tmp/fail.*
-
+# Options.
 force=0
 missing=0
 
 #
+# clean
+#
+# Remove temporary files.
+#
+clean()
+{
+	rm -f $TMPDIR/list
+}
+
+#
 # build
 #
-# Build a package if not already installed.
+# Build a package if not installed unless `force' (-f) has been given. Then
+# force its reinstallation.
 #
 build()
 {(
-	name=$(basename $1)
+	local name=$(basename $1)
 
 	if [ $force -eq 1 ] || ! vpk info $name > /dev/null 2>&1; then
 		# TODO: dependencies here.
@@ -47,11 +55,12 @@
 
 		cd $TOP/$pkg
 
-		if vpk build > /tmp/fail.$name 2>&1; then
+		if vpk build > $TMPDIR/fail.$name 2>&1; then
+			# TODO: make vpk add able to reinstall package.
 			rm -f /var/lib/vpk/$name
-			rm -f /tmp/fail.$name
+			rm -f $TMPDIR/fail.$name
 			echo "ok"
-			yes | vpk install -t none /tmp/vpk/$name*pkg.txz
+			vpk add -qt none /tmp/vpk/$name*pkg.txz
 		else
 			echo "failed"
 			return 1
@@ -66,16 +75,16 @@
 #
 build_missing()
 {
-	name=$(basename $1)
-	rebuild=0
+	local name=$(basename $1)
+	local rebuild=0
 
 	# Build if not installed at all.
 	if ! vpk info $name > /dev/null 2>&1; then
 		rebuild=1
 	else
-		version=$(vpk info -m version $name 2> /dev/null)
-		revision=$(vpk info -m revision $name 2> /dev/null)
-		filename="$name#$version-$revision-pkg.txz"
+		local version=$(vpk info -m version $name 2> /dev/null)
+		local revision=$(vpk info -m revision $name 2> /dev/null)
+		local filename="$name#$version-$revision-pkg.txz"
 
 		if [ ! -f /tmp/vpk/$filename ]; then
 			rebuild=1
@@ -110,10 +119,30 @@
 
 shift $((OPTIND - 1))
 
+trap "clean; exit 1" INT QUIT TERM
+rm -rf $TMPDIR
+mkdir -p $TMPDIR
+
+$TOP/Scripts/list.sh > $TMPDIR/list
+
+if [ ! -s $TMPDIR/list ]; then
+	echo "abort: no packages to build" 1>&2
+	exit 1
+fi
+
+total=$(wc -l $TMPDIR/list | awk '{ print $1 }')
+current=1
+
 $TOP/Scripts/list.sh "$@" | while read -r pkg; do
+	echo -n "($current/$total) "
+
 	if [ $missing -eq 1 ]; then
 		build_missing $pkg
 	else
 		build $pkg
 	fi
+
+	current=$((current + 1))
 done
+
+clean