diff options
Diffstat (limited to 'support/scripts/pkg-stats')
-rwxr-xr-x | support/scripts/pkg-stats | 284 |
1 files changed, 284 insertions, 0 deletions
diff --git a/support/scripts/pkg-stats b/support/scripts/pkg-stats new file mode 100755 index 000000000..7bb292830 --- /dev/null +++ b/support/scripts/pkg-stats @@ -0,0 +1,284 @@ +#!/bin/bash + +# Copyright (C) 2009 by Thomas Petazzoni <thomas.petazzoni@free-electrons.com> +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# This script generates an HTML file that contains a report about all +# Buildroot packages, their usage of the different package +# infrastructure and possible cleanup actions +# +# Run the script from the Buildroot toplevel directory: +# +# ./scripts/pkg-stats > /tmp/pkg.html +# + +echo "<head> +<style type=\"text/css\"> +table { + width: 100%; +} +td { + border: 1px solid black; +} +td.centered { + text-align: center; +} +tr.wrong td { + background: #ff9a69; +} +tr.correct td { + background: #d2ffc4; +} +</style> +</head> + +<a href=\"#results\">Results</a><br/> + +<table> +<tr> +<td rowspan=\"2\">Id</td> +<td rowspan=\"2\">Package</td> +<td>Patch count</td> +<td colspan=\"2\" class=\"centered\">AUTOTARGETS</td> +<td colspan=\"2\" class=\"centered\">GENTARGETS</td> +<td colspan=\"2\" class=\"centered\">CMAKETARGETS</td> +<td colspan=\"2\" class=\"centered\">manual</td> +<td rowspan=\"2\" class=\"centered\">Actions</td> +</tr> +<tr> +<td class=\"centered\">host</td> +<td class=\"centered\">target</td> +<td class=\"centered\">host</td> +<td class=\"centered\">target</td> +<td class=\"centered\">host</td> +<td class=\"centered\">target</td> +<td class=\"centered\">host</td> +<td class=\"centered\">target</td> +</tr>" + +convert_to_generic_target=0 +convert_to_generic_host=0 +convert_to_autotools=0 +total_patch_count=0 +cnt=1 +for i in $(find package/ -name '*.mk') ; do + + if test \ + $i = "package/java/java.mk" -o \ + $i = "package/games/games.mk" -o \ + $i = "package/multimedia/multimedia.mk" -o \ + $i = "package/customize/customize.mk" -o \ + $i = "package/gnuconfig/gnuconfig.mk" -o \ + $i = "package/matchbox/matchbox.mk" -o \ + $i = "package/x11r7/x11r7.mk" ; then + echo "skipping $i" 1>&2 + continue + fi + + cnt=$((cnt+1)) + + is_auto_host=0 + is_auto_target=0 + is_cmake_host=0 + is_cmake_target=0 + is_pkg_target=0 + is_pkg_host=0 + is_manual_target=0 + is_manual_host=0 + + if grep -E "\(call AUTOTARGETS,[^,]*,[^,]*,host\)" $i > /dev/null ; then + is_auto_host=1 + fi + + if grep -E "\(call AUTOTARGETS,[^,]*,[^,]*(,target|)\)" $i > /dev/null ; then + is_auto_target=1 + fi + + if grep -E "\(call GENTARGETS,[^,]*,[^,]*,host\)" $i > /dev/null ; then + is_pkg_host=1 + fi + + if grep -E "\(call GENTARGETS,[^,]*,[^,]*(,target|)\)" $i > /dev/null ; then + is_pkg_target=1 + fi + + if grep -E "\(call CMAKETARGETS,[^,]*,[^,]*,host\)" $i > /dev/null ; then + is_cmake_host=1 + fi + + if grep -E "\(call CMAKETARGETS,[^,]*,[^,]*(,target|)\)" $i > /dev/null ; then + is_cmake_target=1 + fi + + pkg=$(basename $i) + pkg=${pkg%.mk} + + if grep "^host-$pkg:" $i > /dev/null ; then + is_manual_host=1 + fi + + if test $is_pkg_target -eq 0 -a $is_auto_target -eq 0 -a $is_cmake_target -eq 0; then + is_manual_target=1 + fi + + tasks="" + + if [ $is_manual_target -eq 1 ] ; then + if grep "/configure" $i > /dev/null ; then + tasks=$tasks"<li>convert package to autotools ?</li>" + convert_to_target_autotools=$((convert_to_target_autotools+1)) + else + tasks=$tasks"<li>convert to generic target</li>" + convert_to_generic_target=$((convert_to_generic_target+1)) + fi + fi + + if [ $is_manual_host -eq 1 ]; then + if grep "/configure" $i > /dev/null ; then + tasks=$tasks"<li>convert package to autotools ?</li>" + convert_to_host_autotools=$((convert_to_host_autotools+1)) + else + tasks=$tasks"<li>convert to generic host</li>" + convert_to_generic_host=$((convert_to_generic_host+1)) + fi + fi + + if test -n "$tasks" ; then + echo "<tr class=\"wrong\">" + else + echo "<tr class=\"correct\">" + fi + + echo "<td>$cnt</td>" + echo "<td>$i</td>" + + package_dir=$(dirname $i) + patch_count=$(find ${package_dir} -name '*.patch' | wc -l) + total_patch_count=$(($total_patch_count+$patch_count)) + + if test $patch_count -lt 1 ; then + patch_count_color="#00ff00" + elif test $patch_count -lt 5 ; then + patch_count_color="#ffc600" + else + patch_count_color="#ff0000" + fi + + echo "<td class=\"centered\" style=\"color: $patch_count_color; font-weight: bold;\">" + echo $patch_count + echo "</td>" + + echo "<td class=\"centered\">" + if [ $is_auto_host -eq 1 ] ; then + echo "<b>YES</b>" + else + echo "NO" + fi + echo "</td>" + + echo "<td class=\"centered\">" + if [ $is_auto_target -eq 1 ] ; then + echo "<b>YES</b>" + else + echo "NO" + fi + echo "</td>" + + echo "<td class=\"centered\">" + if [ $is_pkg_host -eq 1 ] ; then + echo "<b>YES</b>" + else + echo "NO" + fi + echo "</td>" + + echo "<td class=\"centered\">" + if [ $is_pkg_target -eq 1 ] ; then + echo "<b>YES</b>" + else + echo "NO" + fi + echo "</td>" + + echo "<td class=\"centered\">" + if [ $is_cmake_host -eq 1 ] ; then + echo "<b>YES</b>" + else + echo "NO" + fi + echo "</td>" + + echo "<td class=\"centered\">" + if [ $is_cmake_target -eq 1 ] ; then + echo "<b>YES</b>" + else + echo "NO" + fi + echo "</td>" + + echo "<td class=\"centered\">" + if [ $is_manual_host -eq 1 ] ; then + echo "<b>YES</b>" + else + echo "NO" + fi + echo "</td>" + + echo "<td class=\"centered\">" + if [ $is_manual_target -eq 1 ] ; then + echo "<b>YES</b>" + else + echo "NO" + fi + echo "</td>" + + echo "<td>" + echo "<ul>" + echo $tasks + echo "</ul>" + echo "</td>" + + echo "</tr>" + +done +echo "</table>" + +echo "<table>" +echo "<tr>" +echo "<td>Packages to convert to generic target</td>" +echo "<td>$convert_to_generic_target</td>" +echo "</tr>" +echo "<tr>" +echo "<td>Packages to convert to generic host</td>" +echo "<td>$convert_to_generic_host</td>" +echo "</tr>" +echo "<tr>" +echo "<td>Packages to convert to target autotools</td>" +echo "<td>$convert_to_target_autotools</td>" +echo "</tr>" +echo "<tr>" +echo "<td>Packages to convert to host autotools</td>" +echo "<td>$convert_to_host_autotools</td>" +echo "</tr>" +echo "<tr>" +echo "<td>Number of patches in all packages</td>" +echo "<td>$total_patch_count</td>" +echo "</tr>" +echo "<tr>" +echo "<td>TOTAL</td>" +echo "<td>$cnt</td>" +echo "</tr>" +echo "</table>" |