diff options
author | Michael Olbrich <m.olbrich@pengutronix.de> | 2011-02-07 16:34:53 +0100 |
---|---|---|
committer | Michael Olbrich <m.olbrich@pengutronix.de> | 2015-02-06 11:53:58 +0100 |
commit | 71e467c41089be03b03ee12c1500294144e47f23 (patch) | |
tree | bf7aa6e1d605edb895db7615e5f871ef5e3d1076 /scripts/lib/ptxd_make_license_report.awk | |
parent | fedc6e9856987e388c6029dc541d02c556cef6f4 (diff) | |
download | ptxdist-71e467c41089be03b03ee12c1500294144e47f23.tar.gz ptxdist-71e467c41089be03b03ee12c1500294144e47f23.tar.xz |
new command create a license report of all the selected packages
Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
Diffstat (limited to 'scripts/lib/ptxd_make_license_report.awk')
-rw-r--r-- | scripts/lib/ptxd_make_license_report.awk | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/scripts/lib/ptxd_make_license_report.awk b/scripts/lib/ptxd_make_license_report.awk new file mode 100644 index 000000000..a8d3476c6 --- /dev/null +++ b/scripts/lib/ptxd_make_license_report.awk @@ -0,0 +1,73 @@ +#!/usr/bin/gawk -f +# +# Copyright (C) 2011 by Michael Olbrich <m.olbrich@pengutronix.de> +# +# See CREDITS for details about who has contributed to this project. +# +# For further information about the PTXdist project and license conditions +# see the README file. +# + +BEGIN { + FS = ":" + report_dir = ENVIRON["ptx_report_dir"] +} + +$1 == "DEP" { + pkg=$2 + sub($1":"$2":", "") + pkg_deps[pkg] = $0 +} + +$1 == "LICENSE" { + # add newline after each second license + gsub("[^,]*,[^,]*,", "&\\\\ ", $4); + gsub("_", "\\_", $4); + licenses[$2] = $4 + raw_names[$2] = $3 + gsub("_", "\\_", $3); + gsub("^host-", "", $3); + gsub("^cross-", "", $3); + names[$2] = $3 +} + +function make_more_dot(pkg, file, level, deps, i) { + if (level > 3) + return + printf "\"%s\" [ shape=box style=\"rounded corners\" fixedsize=false texlbl=\"\\small\\begin{tabular}{c}{\\Large\\hyperref[%s]{%s}}\\\\%s\\end{tabular}\" ];\n", pkg, raw_names[pkg], gensub("_", "\\_", "g", names[pkg]), licenses[pkg] > file + if (!(pkg in pkg_deps)) + return + split(pkg_deps[pkg], deps, ":") + for (i in deps) { + if (deps[i] == "") + continue + if (names[deps[i]] == "") + continue + if (pkg deps[i] in hit_deps) + continue + hit_deps[pkg deps[i]] = 1 + printf "\"%s\" -> \"%s\"[dir=back];\n", pkg, deps[i] > file + make_more_dot(deps[i], file, level + 1) + } +} + +function make_dot(pkg) { + file = report_dir"/"raw_names[pkg]"/graph.dot" + delete hit_deps + printf "digraph \"%s\" {\n", pkg > file + printf "rankdir=LR;\n" > file + printf "ratio=compress;\n" > file + printf "nodesep=0.1;\n" > file + printf "ranksep=0.1;\n" > file + printf "node [ shape=point fixedsize=true width=0.1 ];\n", pkg > file + make_more_dot(pkg, file, 0) + printf "}\n" > file + close(file) +} + +END { + for (pkg in licenses) { + make_dot(pkg) + } +} + |