#!/bin/sh #---------------------------------------------------------------------------- # /var/install/bin/check-package-usage - check if package is still in use # # Copyright (c) 2005 The Eisfair Team, c/o Frank Meyer, frank(at)eisfair(dot)org # # Creation: 2005-11-29 jed # Last Update: $Id$ # # Usage: # check-package-usage [-noref] # : list of all unreferenced packages # # check-package-usage [-quiet] package-name # : list of packages which have set a reference to package-name # # Result: 0 - no reference found # 1 - references found! # # 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. #---------------------------------------------------------------------------- # include eislib . /var/install/include/eislib #exec 2>./check-package-usage-trace-$$.log #set -x #---------------------------------------------------------------------------- # create_reference_list # # create package reference list and write it to file $ref_list #---------------------------------------------------------------------------- create_reference_list () { for j in /var/install/packages/* do outflag=0 pack_name="`basename $j`" req_packages="`grep -E "" ${j} | \ sed -e 's#.*##g' -e 's#.*##g' \ -e 's#\.tar.*##g' -e 's#-.*##g' -e 's#.*\/##g' | \ cut -d' ' -f1 | tr '\012' ' '`" if [ "$req_packages" != "" ] then req_packages="$req_packages " fi req_packages="${req_packages}`grep -E "" ${j} | \ sed -e 's#.*##g' -e 's#.*##g' \ -e 's#\.tar.*##g' -e 's#.*\/##g' | \ cut -d' ' -f1 | tr '\012' ' '`" if [ "$req_packages" != "" ] then req_packages="$req_packages " fi req_packages="${req_packages}`grep -E "" ${j} | \ sed -e 's#.*##g' -e 's#.*##g' \ -e 's#\.tar.*##g' -e 's#.*\/##g' | \ cut -d' ' -f1 | tr '\012' ' '`" if [ "$req_packages" != "" ] then for n in $req_packages do echo "$n:$pack_name:" done outflag=1 fi if [ $outflag -eq 0 ] then echo "-noref-:$pack_name:" fi done | sort | uniq > $ref_list } #============================================================================ # main #============================================================================ ref_list=/var/tmp/packages-reference-list.txt pgmname=`basename $0` if [ $# -eq 0 ] then mecho "Usage:" mecho " $pgmname [-noref] - list of all unreferenced packages" mecho " $pgmname [-quiet] package-name - list of referencing packages" exit 1 else noref=0 quiet=0 case $1 in '-noref') noref=1 shift ;; '-quiet') quiet=1 shift ;; *) ;; esac search_package="$1" fi create_reference_list if [ $noref -eq 1 ] then # list unreferenced packages search_package='-noref-' fi # search package references grep -q "^$search_package:" $ref_list if [ $? -eq 0 ] then # package references found for pack in `grep "^$search_package:" $ref_list` do _ifsold=IFS IFS=: set -- $pack IFS=$_ifsold if [ "$package_list" = "" ] then package_list="$2" else package_list="$package_list $2" fi done # print result if [ $quiet -eq 0 ] then echo "$package_list" fi rtc=1 else # no package reference found rtc=0 fi exit $rtc #============================================================================ # end #============================================================================