Skip to content
Snippets Groups Projects
Unverified Commit 57a95b08 authored by Matthias Schiffer's avatar Matthias Schiffer
Browse files

contrib: depdot: use processed package info

Instead of poorly parsing Makefiles using grep, use OpenWrt's processed
package info files. This fixes handling of DEPENDS fields spanning
multiple lines and adds support for source packages building multiple
binary packages.

Closes #2814
parent 8c48f20c
No related branches found
No related tags found
No related merge requests found
......@@ -2,7 +2,6 @@
# Script to output the dependency graph of Gluon's packages
# Limitations:
# * Works only if directory names and package names are the same (true for all Gluon packages)
# * Doesn't show dependencies through virtual packages correctly
set -e
......@@ -16,7 +15,7 @@ escape_name() {
echo -n "_$1" | tr -c '[:alnum:]' _
}
print_node () {
print_node() {
echo "$(escape_name "$1") [label=\"$1\", shape=box];"
}
......@@ -24,19 +23,34 @@ print_dep() {
echo "$(escape_name "$1") -> $(escape_name "$2");"
}
echo 'digraph G {'
for makefile in ./package/*/Makefile; do
dir="$(dirname "$makefile")"
package="$(basename "$dir")"
deps=$(grep -w DEPENDS "$makefile" | cut -d= -f2 | tr -d +)
print_package() {
local package="$1" depends="$2"
# shellcheck disable=SC2086
set -- $depends
print_node "$package"
for dep in $deps; do
for dep in "$@"; do
print_node "$dep"
print_dep "$package" "$dep"
done
}
make -C openwrt -s prepare-tmpinfo
echo 'digraph G {'
cat ./openwrt/tmp/info/.packageinfo-feeds_gluon_base_* | while read -r key value; do
case "$key" in
'Package:')
package="$value"
;;
'Depends:')
depends="${value//+/}"
;;
'@@')
print_package "$package" "$depends"
;;
esac
done | sort -u
popd >/dev/null
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment