Mercurial > vanilla
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 "$@"