svn commit: r216464 - user/dougb/portmaster

Doug Barton dougb at FreeBSD.org
Wed Dec 15 20:08:29 UTC 2010


Author: dougb
Date: Wed Dec 15 20:08:29 2010
New Revision: 216464
URL: http://svn.freebsd.org/changeset/base/216464

Log:
  Play checkers with more code that needs to be moved up so that getopts()
  can use it

Modified:
  user/dougb/portmaster/portmaster

Modified: user/dougb/portmaster/portmaster
==============================================================================
--- user/dougb/portmaster/portmaster	Wed Dec 15 19:30:44 2010	(r216463)
+++ user/dougb/portmaster/portmaster	Wed Dec 15 20:08:29 2010	(r216464)
@@ -263,6 +263,76 @@ safe_exit () {
 	exit ${1:-0}
 }
 
+pm_cd     () { builtin cd $1 2>/dev/null || return 1; }
+pm_cd_pd  () { builtin cd $pd/$1 2>/dev/null ||
+		fail "Cannot cd to port directory: $pd/$1"; }
+pm_kill   () { /bin/kill $* >/dev/null 2>/dev/null; }
+pm_make   () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l;
+		 unset -v MASTER_RB_LIST;
+		 /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; ); }
+pm_make_b () { /usr/bin/make $PM_MAKE_ARGS BEFOREPORTMK=bpm $*; }
+pm_mktemp () { /usr/bin/mktemp -t f-${PM_PARENT_PID}-$1 ||
+		fail "mktemp for $1 failed"; }
+pm_unlink () { /bin/test -e $1 && /bin/unlink $1; }
+
+# Superuser versions for commands that need root privileges
+
+pm_find_s         () { $PM_SU_CMD /usr/bin/find $*; }
+pm_install_s      () { $PM_SU_CMD /usr/bin/install -o root -g wheel -m 644 $1 $2; }
+pm_make_s         () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l;
+			 unset -v MASTER_RB_LIST;
+			 $PM_SU_CMD /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; ); }
+pm_mkdir_s        () { $PM_SU_CMD /bin/mkdir -p $1; }
+pm_pkg_delete_s   () { $PM_SU_CMD /usr/sbin/pkg_delete $*; }
+pm_rm_s           () { $PM_SU_CMD /bin/rm $*; }
+pm_rmdir_s        () { $PM_SU_CMD /bin/rmdir $*; }
+pm_unlink_s       () { /bin/test -e $1 && $PM_SU_CMD /bin/unlink $1; }
+
+pm_v              () { [ -n "$PM_VERBOSE" ] && echo "$*"; }
+pm_sv             () { [ -n "$PM_SU_VERBOSE" ] && echo "===>>> SU $*"; }
+
+# Do this here so we can have a reasonably good guess.
+# May be modified below.
+if [ "$$" -eq "$PM_PARENT_PID" ]; then
+	if [ -z "$pd" ]; then
+		if [ -z "$PORTSDIR" ]; then
+			[ -d /usr/ports ] && pd=/usr/ports
+			[ -z "$pd" ] &&
+				pd=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORTSDIR 2>/dev/null`
+		else
+			pd=$PORTSDIR
+		fi
+	fi
+	if [ -n "$pd" ]; then
+		[ ! -r "${pd}/Mk/bsd.port.mk" ] &&
+			fail "The ports directory ($pd) does not seem to contain a ports tree"
+		export pd
+	fi
+
+	if [ -z "$pdb" ]; then
+		if [ -z "$PKG_DBDIR" ]; then
+			[ -d /var/db/pkg ] && pdb=/var/db/pkg
+			[ -z "$pdb" ] &&
+				pdb=`pm_make -f/usr/share/mk/bsd.port.mk -V PKG_DBDIR 2>/dev/null`
+		else
+			pdb=$PKG_DBDIR
+		fi
+		if [ -z "$pdb" ]; then
+			if [ -d /var/db/pkg ]; then
+				pdb='/var/db/pkg'
+			else
+				fail 'The value of PKG_DBDIR cannot be empty'
+			fi
+		fi
+	fi
+	export pdb
+
+	[ -z "$port_dbdir" -a -d /var/db/ports ] && port_dbdir=/var/db/ports
+	[ -z "$port_dbdir" ] &&
+		port_dbdir=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORT_DBDIR 2>/dev/null`
+	[ -n "$port_dbdir" ] && export port_dbdir
+fi
+
 usage () {
 	local pd pdb port_dbdir
 
@@ -395,36 +465,53 @@ usage () {
 	safe_exit ${1:-1}
 }
 
-pm_cd     () { builtin cd $1 2>/dev/null || return 1; }
-pm_cd_pd  () { builtin cd $pd/$1 2>/dev/null ||
-		fail "Cannot cd to port directory: $pd/$1"; }
-pm_kill   () { /bin/kill $* >/dev/null 2>/dev/null; }
-pm_make   () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l;
-		 unset -v MASTER_RB_LIST;
-		 /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; ); }
-pm_make_b () { /usr/bin/make $PM_MAKE_ARGS BEFOREPORTMK=bpm $*; }
-pm_mktemp () { /usr/bin/mktemp -t f-${PM_PARENT_PID}-$1 ||
-		fail "mktemp for $1 failed"; }
-pm_unlink () { /bin/test -e $1 && /bin/unlink $1; }
+globstrip () { local in ; in=${1%[*]} ; in=${in%\\} ; echo $in ; }
 
-# Superuser versions for commands that need root privileges
+# Takes a pattern as input
+# Return values:
+# 0 - Matched one and only one directory in $pdb
+# 1 - No match
+# 2 - Matched multiple directories
 #
-# The following are used once, so they have $PM_SU_CMD in line:
-# truncate, pkg_create, cp, /etc/rc.d/ldconfig, touch
+find_glob_dirs () {
+	# Global: glob_dirs
+	local pattern
 
-pm_find_s         () { $PM_SU_CMD /usr/bin/find $*; }
-pm_install_s      () { $PM_SU_CMD /usr/bin/install -o root -g wheel -m 644 $1 $2; }
-pm_make_s         () { ( unset -v CUR_DEPS INSTALLED_LIST PM_DEPTH build_l;
-			 unset -v MASTER_RB_LIST;
-			 $PM_SU_CMD /usr/bin/nice /usr/bin/make $PM_MAKE_ARGS $*; ); }
-pm_mkdir_s        () { $PM_SU_CMD /bin/mkdir -p $1; }
-pm_pkg_delete_s   () { $PM_SU_CMD /usr/sbin/pkg_delete $*; }
-pm_rm_s           () { $PM_SU_CMD /bin/rm $*; }
-pm_rmdir_s        () { $PM_SU_CMD /bin/rmdir $*; }
-pm_unlink_s       () { /bin/test -e $1 && $PM_SU_CMD /bin/unlink $1; }
+	pattern=`globstrip $1`
 
-pm_v              () { [ -n "$PM_VERBOSE" ] && echo "$*"; }
-pm_sv             () { [ -n "$PM_SU_VERBOSE" ] && echo "===>>> SU $*"; }
+	glob_dirs=`find $pdb -maxdepth 1 -type d -name ${pattern}\*`
+	case "$glob_dirs" in
+	# Match a newline in multiple responses from find
+	*'
+'*)		return 2 ;;
+	$pdb/*)	return ;;
+	esac
+
+	unset glob_dirs
+	return 1
+}
+
+origin_from_pdb () {
+	local o
+
+	o=`grep -m1 '@comment ORIGIN:' $pdb/$1/+CONTENTS 2>/dev/null` && {
+		echo ${o#@comment ORIGIN:}; return 0; }
+
+	case "$1" in bsdpan-*) return 3 ;; esac
+
+	if [ -e "$pdb/$1/+IGNOREME" ]; then
+		if [ -n "$PM_VERBOSE" -o -n "$LIST_ORIGINS" ]; then
+			echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
+			echo "	===>>> $pdb/$1/+IGNOREME exists" >&2
+			echo '' >&2
+		fi
+		return 2
+	else
+		echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
+		echo '' >&2
+	fi
+	return 1
+}
 
 #=============== End functions we always want to have ===============
 #=============== Begin Command Line Option Processing ===============
@@ -635,27 +722,13 @@ unset -f packages_init cross_idx test_co
 
 #=============== End Command Line Option Processing ===============
 
-# Do this here so it can use the fancy functions above, and default values
-# can be overridden in the rc files
+# Update based on options chosen above
 if [ "$$" -eq "$PM_PARENT_PID" ]; then
 	if [ -n "$PM_PACKAGES" -o -n "$PM_PACKAGES_BUILD" ]; then
 		[ `/sbin/sysctl -n kern.osreldate 2>/dev/null` -lt 600400 ] &&
 			fail Package installation support requires FreeBSD 6.4 or newer
 	fi
 
-	if [ -z "$pd" ]; then
-		if [ -z "$PORTSDIR" ]; then
-			[ -d /usr/ports ] && pd=/usr/ports
-			[ -z "$pd" ] &&
-				pd=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORTSDIR 2>/dev/null`
-		else
-			pd=$PORTSDIR
-		fi
-	fi
-
-	[ -n "$pd" ] && [ ! -r "${pd}/Mk/bsd.port.mk" ] &&
-		fail "The ports directory ($pd) does not seem to contain a ports tree"
-
 	if [ -n "$PM_INDEX" ]; then
 		if [ -z "$INDEXFILE" ]; then
 			ver=`uname -r`
@@ -724,23 +797,6 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then
 			fail 'The value of PORTSDIR cannot be empty'
 		fi
 	fi
-	if [ -z "$pdb" ]; then
-		if [ -z "$PKG_DBDIR" ]; then
-			[ -d /var/db/pkg ] && pdb=/var/db/pkg
-			[ -z "$pdb" ] &&
-				pdb=`pm_make -f/usr/share/mk/bsd.port.mk -V PKG_DBDIR 2>/dev/null`
-		else
-			pdb=$PKG_DBDIR
-		fi
-		if [ -z "$pdb" ]; then
-			if [ -d /var/db/pkg ]; then
-				pdb='/var/db/pkg'
-			else
-				fail 'The value of PKG_DBDIR cannot be empty'
-			fi
-		fi
-	fi
-	export pdb
 
 	[ -z "$DISTDIR" -a "$PM_PACKAGES" != only -a -z "$CHECK_DEPENDS" -a \
 	    -z "$CHECK_PORT_DBDIR" -a -z "$LIST_ORIGINS" ] &&
@@ -748,11 +804,6 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then
 
 	[ -n "$DISTDIR" ] && { DISTDIR="${DISTDIR%/}/"; export DISTDIR; }
 
-	[ -z "$port_dbdir" -a -d /var/db/ports ] && port_dbdir=/var/db/ports
-	[ -z "$port_dbdir" ] &&
-		port_dbdir=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORT_DBDIR 2>/dev/null`
-	[ -n "$port_dbdir" ] && export port_dbdir
-
 	if [ -n "$PM_PACKAGES_BUILD" -o -n "$PM_DEL_BUILD_ONLY" ]; then
 		PM_BUILD_ONLY_LIST=pm_bol
 		export PM_BUILD_ONLY_LIST
@@ -778,28 +829,6 @@ iport_from_origin () {
 	echo ${dir#$pdb/}
 }
 
-origin_from_pdb () {
-	local o
-
-	o=`grep -m1 '@comment ORIGIN:' $pdb/$1/+CONTENTS 2>/dev/null` && {
-		echo ${o#@comment ORIGIN:}; return 0; }
-
-	case "$1" in bsdpan-*) return 3 ;; esac
-
-	if [ -e "$pdb/$1/+IGNOREME" ]; then
-		if [ -n "$PM_VERBOSE" -o -n "$LIST_ORIGINS" ]; then
-			echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
-			echo "	===>>> $pdb/$1/+IGNOREME exists" >&2
-			echo '' >&2
-		fi
-		return 2
-	else
-		echo "	===>>> No ORIGIN in $pdb/$1/+CONTENTS" >&2
-		echo '' >&2
-	fi
-	return 1
-}
-
 check_regular_file () {
 	[ ! -L "$1" -a -f "$1" ] || fail "ERROR: $1 is not a regular file!"
 }
@@ -1098,15 +1127,6 @@ read_distinfos_all () {
 	[ -e "${DI_FILES}-e" ] && unlink ${DI_FILES}-e
 }
 
-globstrip () {
-	local in
-
-	in=${1%[*]}
-	in=${in%\\}
-
-	echo $in
-}
-
 ports_by_category () {
 	local pkg
 	pm_v "===>>> Sorting ports by category"
@@ -1136,30 +1156,6 @@ delete_empty_dist_subdirs () {
 	find -d $DISTDIR -type d \( -empty -and ! -path \*\.zfs/\* \) -delete
 }
 
-# Takes a pattern as input
-# Return values:
-# 0 - Matched one and only one directory in $pdb
-# 1 - No match
-# 2 - Matched multiple directories
-#
-find_glob_dirs () {
-	# Global: glob_dirs
-	local pattern
-
-	pattern=`globstrip $1`
-
-	glob_dirs=`find $pdb -maxdepth 1 -type d -name ${pattern}\*`
-	case "$glob_dirs" in
-	# Match a newline in multiple responses from find
-	*'
-'*)		return 2 ;;
-	$pdb/*)	return ;;
-	esac
-
-	unset glob_dirs
-	return 1
-}
-
 init_packages_var () {
 	# Global: PACKAGES
 


More information about the svn-src-user mailing list