changeset 659:9e199f8590e3

scripts: add lint-deps.sh
author David Demelier <markand@malikania.fr>
date Tue, 30 Jul 2019 20:30:00 +0200
parents 936f40a89c99
children 6900637ca719
files Scripts/lint-deps.sh
diffstat 1 files changed, 95 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Scripts/lint-deps.sh	Tue Jul 30 20:30:00 2019 +0200
@@ -0,0 +1,95 @@
+#!/bin/sh
+#
+# lint-deps.sh -- ensure that dependencies listed in PKGDEPENDS exist
+#
+# Copyright (c) 2019 David Demelier <markand@malikania.fr>
+#
+# Permission to use, copy, modify, and/or distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# 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"
+
+TOP=$(realpath $(dirname $0)/../)
+PROGNAME=$(basename $0)
+
+usage()
+{
+	echo "usage: $PROGNAME [category/package]" 1>&2
+	exit 1
+}
+
+scriptfile()
+{
+	echo $1/$(basename $1).sh
+}
+
+list()
+{
+	if [ $# -eq 0 ]; then
+		find $TOP -mindepth 2 -maxdepth 2 -type d | grep -v '\.hg'
+	else
+		file=$(scriptfile $1)
+
+		if [ ! -f $file ]; then
+			echo "abort: invalid package specified '$1'" 1>&2
+			exit 1
+		fi
+
+		echo $1
+	fi
+}
+
+check()
+{
+	file=$(scriptfile $1)
+	failed=0
+
+	echo -n "checking dependencies for $1: "
+
+	# Reset PKGDEPENDS in case script is broken.
+	PKGDEPENDS=""
+
+	. $file
+
+	for d in $PKGDEPENDS; do
+		file=$TOP/$(scriptfile ${d%:*})
+
+		if [ ! -f $file ]; then
+			# Only print "error" once.
+			if [ $failed -eq 0 ]; then
+				failed=1
+				echo "error"
+			fi
+
+			echo "missing ${d%:*}" 1>&2
+		fi
+	done
+
+	if [ $failed -eq 0 ]; then
+		echo "ok"
+	fi
+}
+
+process()
+{
+	list $@ | while read pkg; do
+		check $pkg
+	done
+}
+
+process "$@"