#!/bin/sh C_NORMAL=$'\033[0m' C_HILITE=$'\e[36;01m' C_END=$'\e[A\e[68G' C_OK=$'\e[32m' C_NO=$'\e[31m' PORTDIR=/usr/portage LOGDIR=$ROOT/tmp/portage-log STEPS="check fetch clean unpack compile install qmerge clean" #STEPS="check unmerge" do_step() { local tmpp tmpd=`pwd` echo "$C_END $C_HILITE " echo "$C_END $C_HILITE [$1]$C_NORMAL " cd `dirname $myd` ebuild $myf $1 &> $myl/$1 mye=$? cd $tmpd if [ -f $LOGDIR/$1 ] then cp $LOGDIR/$1 /tmp/failed grep -v "$i" /tmp/failed > $LOGDIR/$1 fi if [ $mye -ne 0 ] then echo "$C_END $C_HILITE " echo "$C_END $C_NO [$1]$C_NORMAL " echo $i >> $LOGDIR/$1 fi } if [ -z "${ROOT}" ] then echo "ROOT not set !" exit 1 fi mylist=${PORTDIR}/gentoo-x86/current-packages if [ -f "${1}" ] then mylist=${1} fi mypackages="`grep -v "\#.*" $mylist`" mkdir -p $ROOT/tmp/portage-log echo "$C_HILITE>>>$C_NORMAL Building from ${mylist}..." for i in $mypackages do # full path myd=${i/.\//$PORTDIR\/gentoo-x86\/} # file name myf="`basename $myd`" # category myc="`echo $i | sed -e "s:^\./\(.*\).*/.*/.*$:\1:"`" # package name myp=${myf%*.ebuild} if [ -f "$myd" ] then # Check if installed if [ -d ${ROOT}/var/db/pkg/$myc/$myp ] then continue fi echo "$C_NORMAL$myp ($myc)" myl="$LOGDIR/$myc/$myp/" mkdir -p $myl for j in ${STEPS} do mye=0 do_step $j if [ $mye -ne 0 ] then break fi done if [ $mye -eq 0 ] then echo "$C_END $C_OK [OK]$C_NORMAL " fi else echo "!!! $myd does not exists !" fi ldconfig -r $ROOT &> /dev/null done