#!/bin/bash # Copyright (C) 2009 by Thomas Petazzoni # # 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: # # ./support/scripts/pkg-stats > /tmp/pkg.html # echo " Statistics of Buildroot packages Results
" autotools_packages=0 cmake_packages=0 generic_packages=0 manual_packages=0 packages_with_licence=0 packages_without_licence=0 packages_with_license_files=0 packages_without_license_files=0 total_patch_count=0 cnt=0 for i in $(find boot/ linux/ package/ -name '*.mk' | sort) ; do if test \ $i = "boot/common.mk" -o \ $i = "linux/linux-ext-xenomai.mk" -o \ $i = "linux/linux-ext-rtai.mk" -o \ $i = "linux/linux-ext-ocf-linux.mk" -o \ $i = "package/efl/efl.mk" -o \ $i = "package/games/games.mk" -o \ $i = "package/gtk2-themes/gtk2-themes.mk" -o \ $i = "package/multimedia/multimedia.mk" -o \ $i = "package/pkg-autotools.mk" -o \ $i = "package/pkg-cmake.mk" -o \ $i = "package/pkg-generic.mk" -o \ $i = "package/pkg-utils.mk" -o \ $i = "package/pkg-download.mk" -o \ $i = "package/matchbox/matchbox.mk" -o \ $i = "package/x11r7/x11r7.mk" ; then echo "skipping $i" 1>&2 continue fi cnt=$((cnt+1)) hashost=0 hastarget=0 infratype="" # Determine package infrastructure if grep -E "\(host-autotools-package\)" $i > /dev/null ; then infratype="autotools" hashost=1 fi if grep -E "\(autotools-package\)" $i > /dev/null ; then infratype="autotools" hastarget=1 fi if grep -E "\(host-generic-package\)" $i > /dev/null ; then infratype="generic" hashost=1 fi if grep -E "\(generic-package\)" $i > /dev/null ; then infratype="generic" hastarget=1 fi if grep -E "\(host-cmake-package\)" $i > /dev/null ; then infratype="cmake" hashost=1 fi if grep -E "\(cmake-package\)" $i > /dev/null ; then infratype="cmake" hastarget=1 fi pkg=$(basename $i) pkg=${pkg%.mk} pkgvariable=$(echo ${pkg} | tr "a-z-" "A-Z_") # Count packages per infrastructure if [ -z ${infratype} ] ; then infratype="manual" manual_packages=$(($manual_packages+1)) elif [ ${infratype} = "autotools" ]; then autotools_packages=$(($autotools_packages+1)) elif [ ${infratype} = "cmake" ]; then cmake_packages=$(($cmake_packages+1)) elif [ ${infratype} = "generic" ]; then generic_packages=$(($generic_packages+1)) fi if grep -qE "^${pkgvariable}_LICENSE[ ]*=" $i ; then packages_with_license=$(($packages_with_license+1)) license=1 else packages_without_license=$(($packages_without_license+1)) license=0 fi if grep -qE "^${pkgvariable}_LICENSE_FILES[ ]*=" $i ; then packages_with_license_files=$(($packages_with_license_files+1)) license_files=1 else packages_without_license_files=$(($packages_without_license_files+1)) license_files=0 fi echo "" echo "" echo "" 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_class="nopatches" elif test $patch_count -lt 5 ; then patch_count_class="somepatches" else patch_count_class="lotsofpatches" fi echo "" if [ ${infratype} = "manual" ] ; then echo "" else echo "" fi if [ ${license} -eq 0 ] ; then echo "" else echo "" fi if [ ${license_files} -eq 0 ] ; then echo "" else echo "" fi echo "" done echo "
Id Package Patch count Infrastructure License License files
$cnt$i" echo "$patch_count" echo "manual" echo "${infratype}
" if [ ${hashost} -eq 1 -a ${hastarget} -eq 1 ]; then echo "target + host" elif [ ${hashost} -eq 1 ]; then echo "host" else echo "target" fi echo "
NoYesNoYes
" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "" echo "
Packages using the generic infrastructure$generic_packages
Packages using the cmake infrastructure$cmake_packages
Packages using the autotools infrastructure$autotools_packages
Packages not using any infrastructure$manual_packages
Packages having license information$packages_with_license
Packages not having licence information$packages_without_license
Packages having license files information$packages_with_license_files
Packages not having licence files information$packages_without_license_files
Number of patches in all packages$total_patch_count
TOTAL$cnt
" echo "
" echo "Updated on $(LANG=C date), Git commit $(git log master -n 1 --pretty=format:%H)" echo "" echo ""