#!/bin/bash usage() { cat <<- EOF usage: tools/dep-tree [variant] [variant] If no parameter is given the selected-variant is used. Possible variants: node layer3 To display the tree pipe it to dot: tools/dep-tree | dot -Tx11 EOF } builddir=./build variant=$(cat selected_variant) [ $# = 0 ] || variant="$@" feeds=$builddir/feeds feed=fff tmpfile=$(mktemp) write_deps() { local deps local dep local pkg=$1 deps=$(awk -v RS="@@" "/Package: $pkg\\n/ { print }" "${feeds}/${feed}".index | grep ^Depends: | sed 's/Depends: //' | tr -d +) for dep in $deps; do echo "\"$pkg\" -> \"$dep\"" >> "$tmpfile" done for dep in $deps; do grep "Package:" "${feeds}/${feed}.index" | grep " $dep$" &> /dev/null && write_deps "$dep" done } for v in base $variant; do defaults="$defaults fff-$v" done # start tree for package in $defaults; do write_deps "$package" done # write the gv file to stdout echo "digraph G {" sort "$tmpfile" | uniq | grep -v libc | grep -v libssp | grep -v libpthread | grep -v librt echo "}" [ -s $tmpfile ] || usage rm "$tmpfile" # vim: ts=4