34 lines
977 B
Bash
34 lines
977 B
Bash
|
#!/bin/sh -e
|
||
|
|
||
|
. "$LIXROOT/lib/built.sh"
|
||
|
. "$LIXROOT/lib/reverse.sh"
|
||
|
. "$LIXROOT/lib/versionpasses.sh"
|
||
|
|
||
|
dependencies() { # <contents of a 'deps' file>
|
||
|
seen=""
|
||
|
deps="$(echo "$1" | while read line; do
|
||
|
eval "printf '%s\n' "\"$line\"""
|
||
|
done)"
|
||
|
|
||
|
echo "$deps" | while read line; do
|
||
|
[ "$line" ] || continue;
|
||
|
|
||
|
# eval inline expressions and convert all whitespace to single spaces.
|
||
|
line="$(echo "$line" | tr -s '[:space:]' ' ')"
|
||
|
dep="$(echo "$line" | cut -d' ' -f1)"
|
||
|
depreq="$(echo "$line" | cut -d' ' -f2-)"
|
||
|
depver="$(built "$dep" | reverse | while read ver; do
|
||
|
[ "$ver" ] || continue;
|
||
|
if [ "$(versionpasses "$dep" "$ver" "$depreq")" = "yes" ]; then
|
||
|
echo "$ver"
|
||
|
break
|
||
|
fi
|
||
|
done)"
|
||
|
|
||
|
resolved="$(printf '%s\t%s\n' "$dep" "$depver")"
|
||
|
echo "$seen" | grep -q "^$resolved\$" || echo "$resolved"
|
||
|
|
||
|
seen="$resolved\n$seen"
|
||
|
done
|
||
|
}
|