aceler @ 2008-10-06T14:05:00
6 ч. назад
Жизнь...
| Действия: |
| Действия: |
| Действия: |
#!/bin/bash
#fetch_ebuilds.sh
#GFEs (Gentoo Fetch Ebuilds script)
#License: GPL
#Writed by v12aml ( v12aml@gmail.com )
VERSION="0.4.8"
THREADS=2
TF=/tmp/fetch_ebuilds
PARENTPID=$$
source /etc/make.conf
rm $TF.*.status 2> /dev/null
rm $TF.*.thread.init
touch $TF.$PARENTPID.status
touch $TF.$PARENTPID.thread.init
do_lock()
{
if [ -f $TF.kill ]
then
logger "download_portage_group.sh: exit by lock_file.kill"
echo "exit by lock_file.kill"
sleep 2
rm $TF.kill
exit 0
elif [ -f $TF.pause ]
then
echo -e "\n\nPAUSED\n\n"
while [ -f $TF.pause ]
do
sleep 60
done
fi
}
do_lock_thread()
{
echo "We have `ls $TF.$PARENTPID.thread.* | wc -w` threads" >> $TF.$PARENTPID.status
while [ `ls $TF.$PARENTPID.thread.* | wc -w` -gt $THREADS ]
do
echo "Do lock thread" >> $TF.$PARENTPID.status
sleep 2
done
}
do_thread()
{
export EtF=$1 TF PARENTPID
bash -c ' touch $TF.$PARENTPID.thread.$$ && echo "Thread $$ started ( $EtF )" >> $TF.$PARENTPID.status && ebuild $EtF fetch > /dev/null 2> /dev/null; echo "Thread $$ finished ( $EtF )" >> $TF.$PARENTPID.status && rm $TF.$PARENTPID.thread.$$'
}
LIST1=`find ${PORTDIR-/usr/portage} -type f -name '*.ebuild'`
LIST2=`find ${PORTDIR_OVERLAY-/usr/local/portage} -type f -name '*.ebuild'`
LIST=`echo $LIST1 $LIST2 | sort`
N=`echo $LIST | wc -w`
COUNT=1
echo "$N to go" >> $TF.$PARENTPID.status
for loop in $LIST
do
do_lock
do_lock_thread
do_thread $loop &
#sleep 1
done
#EOF
| Действия: |
| Действия: |