mirror of https://github.com/pygos/build.git
41 lines
930 B
Bash
Executable File
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"
|
|
}
|