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.

Reply via email to