summaryrefslogtreecommitdiffstats
path: root/scripts/lib/ptxd_make_license_report.awk
diff options
context:
space:
mode:
authorMichael Olbrich <m.olbrich@pengutronix.de>2011-02-07 16:34:53 +0100
committerMichael Olbrich <m.olbrich@pengutronix.de>2015-02-06 11:53:58 +0100
commit71e467c41089be03b03ee12c1500294144e47f23 (patch)
treebf7aa6e1d605edb895db7615e5f871ef5e3d1076 /scripts/lib/ptxd_make_license_report.awk
parentfedc6e9856987e388c6029dc541d02c556cef6f4 (diff)
downloadptxdist-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.awk73
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)
+ }
+}
+