#!/bin/sh
function dbg {
	[[ $DEBUG -eq 1 ]] && echo $@ >&2
}
function msg {
	echo -en $@ >&2
}
DEBUG=0
rm -f $TMP/unused-rpms
touch $TMP/unused-rpms
export LC_MESSAGES=C
SIZE=0
OLDSIZE=1
msg Haetaan käyttämättömät kirjastopaketit
while [[ ! $SIZE -eq $OLDSIZE ]]; do
	OLDSIZE=$SIZE
	dbg Suoritetaan rpm -qa
	rpm -qa | grep -vxFf $TMP/unused-rpms |
	{
		dbg Aloitetaan rpm -qa tulosteen lukeminen
		while read PACKAGE; do
			dbg Luettu rivi
			if [[ "$PACKAGE" == lib* ]]; then
				dbg Rivi on kirjasto
				rpm -e --test $PACKAGE 2>&1 |
				grep "is needed by" | gawk '{ print $NF }' | grep -vxFf $TMP/unused-rpms |
				{
					DEP=0
					while read RIVI; do
						if [[ "$RIVI" ]]; then
							DEP=1
							dbg Requirement löydetty
						fi
					done
					if [[ $DEP -eq 0 ]]; then
						echo $PACKAGE >> $TMP/unused-rpms
						dbg Löydetty unused rpm $PACKAGE
						msg '#'
					fi
				}
				msg '.'
			fi
		done
	}
	SIZE=`stat -c %s $TMP/unused-rpms`
done
msg "\\n"
sort $TMP/unused-rpms
msg "Lasketaan pakettien yhteiskokoa..."
COUNT=$(grep -c ^ $TMP/unused-rpms)
CSIZE=$(
	xargs -a $TMP/unused-rpms rpm -q --queryformat=%{SIZE}\\n |
	{
		CSIZE2=0
		while read KOKO; do
			CSIZE2=$(($CSIZE2 + $KOKO))
		done
		echo $CSIZE2
	}
)
msg "\\rLöydettiin $COUNT käyttämätöntä pakettia ($(($CSIZE/1024/1024)) Mt).\\n"
