build/util/depends.sh

41 lines
930 B
Bash
Executable File

dependencies_recursive() {
local NAME="$1"
local PKGDIR="$2"
if [ -e "$SCRIPTDIR/$PKGDIR/$NAME/depends" ]; then
while read DEP; do
echo "$NAME $DEP"
done < "$SCRIPTDIR/$PKGDIR/$NAME/depends"
while read DEP; do
dependencies_recursive "$DEP" "$PKGDIR"
done < "$SCRIPTDIR/$PKGDIR/$NAME/depends"
fi
}
dependencies() {
local RAW="$1"
local PKGLIST="$2"
local PKGDIR="$3"
local TEMP=$(mktemp)
truncate -s 0 "$PKGLIST"
# handle toplevel packages _with_ depenendencies
while read pkgname; do
dependencies_recursive "$pkgname" "$PKGDIR" >> "$TEMP"
done < "$RAW"
# handle toplevel packages without dependencies
while read pkgname; do
if [ ! -e "$SCRIPTDIR/$PKGDIR/$pkgname/depends" ]; then
grep -q "$pkgname" "$TEMP" &> /dev/null || \
echo "$pkgname" >> "$PKGLIST"
fi
done < "$RAW"
# generate topologically sorted list of packages
sort -u "$TEMP" | tsort | tac >> "$PKGLIST"
rm "$TEMP"
}