svn commit: r211322 - user/dougb/portmaster
Doug Barton
dougb at FreeBSD.org
Sun Aug 15 06:10:09 UTC 2010
Author: dougb
Date: Sun Aug 15 06:10:08 2010
New Revision: 211322
URL: http://svn.freebsd.org/changeset/base/211322
Log:
Improve the regexp for parse_index() by specifying the PORTSDIR path, and
not using globals. In the initialization code when using --index* set the
path for the ports tree in the INDEX file with a special version of $pd,
PM_IPD. We only need to set this to something other than /usr/ports if $pd
is not already set, and/or it's set to something other than /usr/ports.
In addition to improving the efficiency of parse_index() this has the
pleasant side effect of (slightly) improving support for non-standard
PORTSDIR.
For -F, at the end of the run break out of the loop if the number of
extant fetches is 0. This doesn't happen often, but there is a race
that can cause it. Printing the message that we're waiting for zero
fetches is silly; but the real problem is sleep'ing for no reason.
Modified:
user/dougb/portmaster/portmaster
Modified: user/dougb/portmaster/portmaster
==============================================================================
--- user/dougb/portmaster/portmaster Sat Aug 14 22:49:07 2010 (r211321)
+++ user/dougb/portmaster/portmaster Sun Aug 15 06:10:08 2010 (r211322)
@@ -570,16 +570,20 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then
PM_INDEX_PORTS=`pkg_version -Ivl\< $PM_INDEX | cut -f1 -d\<`
export PM_INDEX_PORTS
- fi
- if [ -z "$pd" ]; then
- if [ -n "$PM_INDEX_ONLY" ]; then
- pd=`head -1 $PM_INDEX | cut -f 2 -d\|`
- pd=${pd%/*}
- pd=${pd%/*}
+ if [ -z "$pd" -o "$pd" != /usr/ports ]; then
+ PM_IPD=`head -1 $PM_INDEX | cut -f 2 -d\|`
+ PM_IPD=${PM_IPD%/*}
+ PM_IPD=${PM_IPD%/*}
+
+ [ -n "$PM_INDEX_ONLY" ] && pd=$PM_IPD
+ else
+ PM_IPD=$pd
fi
- [ -z "$pd" ] && fail 'The value of PORTSDIR cannot be empty'
+ export PM_IPD
fi
+
+ [ -z "$pd" ] && fail 'The value of PORTSDIR cannot be empty'
if [ -z "$pdb" ]; then
if [ -z "$PKG_DBDIR" ]; then
[ -d /var/db/pkg ] && pdb=/var/db/pkg
@@ -1006,7 +1010,7 @@ init_packages_var () {
parse_index () {
local line
- line=`grep -m1 .*\|.*/${1}\|.* $PM_INDEX` || return 1
+ line=`grep -m1 "|${PM_IPD}/${1}|" $PM_INDEX` || return 1
case "$2" in
name) echo ${line%%|*} ;;
@@ -2046,6 +2050,7 @@ check_fetch_only () {
while `ls ${TMPDIR}/f-${PM_PARENT_PID}-fetchlog-* >/dev/null 2>&1`; do
nf=`ps -ax | grep [f]etch | wc -l`
nf=${nf##* }
+ [ "$nf" -eq 0 ] && break # Not often, but it happens
fetches=fetches ; [ "$nf" -eq 1 ] && fetches=fetch
echo "===>>> Waiting for ${nf##* } distfile $fetches to finish"
sleep $sleep
More information about the svn-src-user
mailing list