There is script to calculate size of files needs to emerge packet.

emerge -p need root privileges and get_size need it too

Example:
  $ sudo get_size cannonsmash
media-libs/sdl-mixer-1.2.5-r1
                         914Kb   SDL_mixer-1.2.5.tar.gz (ok)
    Pkg size: 914Kb   Download: 0
games-simulation/cannonsmash-0.6.5
                         1435Kb          csmash-0.6.5.tar.gz
                         1045Kb          danslatristesse2-48.ogg
    Pkg size: 2481Kb   Download: 2481Kb
Total Size: 3395Kb      Download: 2481Kb


---begin get_size---
#!/bin/sh

print_size()
{
        SIZE=$1
        OUT_SIZE=$SIZE
#       if [ $SIZE -gt 1500000 ]; then
#               OUT_SIZE=`expr $SIZE / 1024 / 1024`Mb
 if [ $SIZE -gt 10000 ]; then
                OUT_SIZE=`expr $SIZE / 1024`Kb
        fi
#       fi
        echo $OUT_SIZE;
}

PKG=$1

if [ -z "$PKG" ]; then
        echo pack
        exit 1
fi

PKGS=`emerge -p $PKG | grep '^\[' | sed 's/^................//' | sed 's/ \[.*$//'`
TOTAL_SIZE=0
TOTAL_SIZE_DOWNLOAD=0
for P in $PKGS; do
        GROUP=`echo $P | sed 's/\/.*$//'`
        CP=`echo $P | sed 's/^.*\///'`
        PK=`echo $CP | sed 's/-[0-9].*$//'`
        echo "$GROUP/$CP"
        if [ -e /usr/portage/$GROUP/$PK/$CP.ebuild ]; then
                DIGEST="/usr/portage/$GROUP/$PK/files/digest-$CP"
                if [ -e $DIGEST ]; then
                        FILES=`cat $DIGEST | awk '{print $4_"|"_$3}'`
                        PKG_SIZE=0
                        PKG_SIZE_DOWNLOAD=0
                        for F in $FILES; do
                                FILE=`echo $F | sed 's/^.*|//'`
                                SIZE=`echo $F | sed 's/|.*$//'`
                                OUT_SIZE=`print_size $SIZE`
                                OUT_EX=''
                                if [ ! -e /usr/portage/distfiles/$FILE ]; then
                                        PKG_SIZE_DOWNLOAD=`expr $PKG_SIZE_DOWNLOAD + 
$SIZE`
                                else
                                        OUT_EX=' (ok)'
                                fi
                                echo -e "\t\t\t" $OUT_SIZE "\t" $FILE $OUT_EX
                                PKG_SIZE=`expr $PKG_SIZE + $SIZE`
                        done
                        echo "    Pkg size: `print_size $PKG_SIZE` "   " Download: 
`print_size $PKG_SIZE_DOWNLOAD`"
                        TOTAL_SIZE=`expr $TOTAL_SIZE + $PKG_SIZE`
                        TOTAL_SIZE_DOWNLOAD=`expr $TOTAL_SIZE_DOWNLOAD + 
$PKG_SIZE_DOWNLOAD`
                else
                        echo digest- Not found
                fi
        else
                echo .ebuild Not found
        fi
done

echo Total Size: `print_size $TOTAL_SIZE` "    " Download: `print_size 
$TOTAL_SIZE_DOWNLOAD`
---end---




-- 
#!/bin/sh

print_size()
{
        SIZE=$1
        OUT_SIZE=$SIZE
#       if [ $SIZE -gt 1500000 ]; then
#               OUT_SIZE=`expr $SIZE / 1024 / 1024`Mb
 if [ $SIZE -gt 10000 ]; then
                OUT_SIZE=`expr $SIZE / 1024`Kb
        fi
#       fi
        echo $OUT_SIZE;
}

PKG=$1

if [ -z "$PKG" ]; then
        echo pack
        exit 1
fi

PKGS=`emerge -p $PKG | grep '^\[' | sed 's/^................//' | sed 's/ \[.*$//'`
TOTAL_SIZE=0
TOTAL_SIZE_DOWNLOAD=0
for P in $PKGS; do
        GROUP=`echo $P | sed 's/\/.*$//'`
        CP=`echo $P | sed 's/^.*\///'`
        PK=`echo $CP | sed 's/-[0-9].*$//'`
        echo "$GROUP/$CP"
        if [ -e /usr/portage/$GROUP/$PK/$CP.ebuild ]; then
                DIGEST="/usr/portage/$GROUP/$PK/files/digest-$CP"
                if [ -e $DIGEST ]; then
                        FILES=`cat $DIGEST | awk '{print $4_"|"_$3}'`
                        PKG_SIZE=0
                        PKG_SIZE_DOWNLOAD=0
                        for F in $FILES; do
                                FILE=`echo $F | sed 's/^.*|//'`
                                SIZE=`echo $F | sed 's/|.*$//'`
                                OUT_SIZE=`print_size $SIZE`
                                OUT_EX=''
                                if [ ! -e /usr/portage/distfiles/$FILE ]; then
                                        PKG_SIZE_DOWNLOAD=`expr $PKG_SIZE_DOWNLOAD + 
$SIZE`
                                else
                                        OUT_EX=' (ok)'
                                fi
                                echo -e "\t\t\t" $OUT_SIZE "\t" $FILE $OUT_EX
                                PKG_SIZE=`expr $PKG_SIZE + $SIZE`
                        done
                        echo "    Pkg size: `print_size $PKG_SIZE` "   " Download: 
`print_size $PKG_SIZE_DOWNLOAD`"
                        TOTAL_SIZE=`expr $TOTAL_SIZE + $PKG_SIZE`
                        TOTAL_SIZE_DOWNLOAD=`expr $TOTAL_SIZE_DOWNLOAD + 
$PKG_SIZE_DOWNLOAD`
                else
                        echo digest- Not found
                fi
        else
                echo .ebuild Not found
        fi
done

echo Total Size: `print_size $TOTAL_SIZE` "    " Download: `print_size 
$TOTAL_SIZE_DOWNLOAD`


--
[EMAIL PROTECTED] mailing list

Reply via email to