Hi Aaron On 11/6/09, Aaron Mason <simplersolut...@gmail.com> wrote: > On Fri, Nov 6, 2009 at 2:42 AM, <srikant....@gmail.com> wrote: >> Hi >> >> Just wanted to share a script with fellow OpenBSD >> desktop users who like to keep minimal non-base >> software on the machine and prefer to use lighter >> alternatives whenever possible. >> >> This script will help you estimate the total space >> which will be used by a given package as well as >> all the dependencies (recursively). >> >> It has to be run inside a directory with your >> mirror of all packages. The o/p is a text file >> in /tmp directory. >> >> This was made quickly for myself long time back. >> Please consider the quality as such. Works for me. >> Hope it can come in handy to someone. >> >> Take care. >> >> Srikant. >> >> --------- >> >> #!/bin/sh >> # Find the full depency list for a given package >> # in cmd. line >> # Assumes one is in a dir with all packages >> >> # Temporary files >> tmp_file_1=$(mktemp) >> tmp_file_2=$(mktemp) >> tmp_file_3=$(mktemp) >> >> echo $1 > $tmp_file_1 >> >> ctr=0 >> over=0 >> while [ $over -ne 1 ] >> do >> cat $tmp_file_1 | fgrep -v -f $tmp_file_3 \ >> | xargs -I % pkg_info -f % \ >> | fgrep @depend | cut -d : -f 3 \ >> | grep -v '^$' | sort \ >> | uniq >> $tmp_file_2 >> >> md5_old=`cat $tmp_file_1 | md5` >> md5_new=`cat $tmp_file_2 | md5` >> if [ `echo $md5_new | fgrep -xc $md5_old` -eq 1 ]; then >> over=1 >> fi >> cat $tmp_file_1 >> $tmp_file_3 >> cat $tmp_file_2 > $tmp_file_1 >> ctr=$(( ctr+1 )) >> done >> >> cat $tmp_file_2 | sort | uniq > /tmp/$1-dependencies >> echo "-----" >> /tmp/$1-dependencies >> ctr=$(( ctr-2 )) >> echo "No. of levels of dependencies : $ctr" \ >> >> /tmp/$1-dependencies >> count=`cat $tmp_file_2 | sort | uniq | wc -l | sed 's/ //g'` >> echo "No. of dependencies : $count" \ >> >> /tmp/$1-dependencies >> >> cat $tmp_file_2 | sort | uniq | xargs -I % pkg_info -s % \ >> | fgrep Size: | awk '{ print $2 }' > $tmp_file_3 >> siz=0 >> { >> while read rline >> do >> siz=$(( siz+rline )) >> done >> } < $tmp_file_3 >> echo "Estimated total size of dependencies: $siz" \ >> >> /tmp/$1-dependencies >> >> rm -rf $tmp_file_1 >> rm -rf $tmp_file_2 >> rm -rf $tmp_file_3 >> >> > > pkg-info will also look for PKG_PATH and check remotely if there are > any addresses there, I believe, so having a local mirror isn't > necessary. > > -- > Aaron Mason - Programmer, open source addict > I've taken my software vows - for beta or for worse >
Thanks for pointing it out as well as the diff. Learnt a couple of things from it. Take care. Srikant.