svn commit: r216289 - user/dougb/portmaster

Doug Barton dougb at FreeBSD.org
Wed Dec 8 07:32:18 UTC 2010


Author: dougb
Date: Wed Dec  8 07:32:17 2010
New Revision: 216289
URL: http://svn.freebsd.org/changeset/base/216289

Log:
  Move the getopts routine up to the point right after the --options
  processing. The -v option was already in use by --check-port-dbdir,
  and -t was in use by --clean-distfiles. Moving getopts up allows us
  to use the standard routine rather than duplicating code. More
  importantly, this will allow us to use getopts flags earlier in
  other places, and form the basis for some new work.

Modified:
  user/dougb/portmaster/portmaster

Modified: user/dougb/portmaster/portmaster
==============================================================================
--- user/dougb/portmaster/portmaster	Wed Dec  8 07:10:25 2010	(r216288)
+++ user/dougb/portmaster/portmaster	Wed Dec  8 07:32:17 2010	(r216289)
@@ -426,6 +426,7 @@ pm_v              () { [ -n "$PM_VERBOSE
 pm_sv             () { [ -n "$PM_SU_VERBOSE" ] && echo "===>>> SU $*"; }
 
 #=============== End functions we always want to have ===============
+#=============== Begin Command Line Option Processing ===============
 
 packages_init () {
 	local e1 e2 e3
@@ -517,14 +518,119 @@ for var in "$@" ; do
 	esac
 done
 
-unset var
-
 [ -n "$PM_INDEX" -a -n "$CHECK_PORT_DBDIR" ] &&
 	fail 'The --index* and --check-port-dbdir options are mutually exclusive'
 
 [ -n "$PM_PACKAGES_LOCAL" -a -z "$LOCAL_PACKAGEDIR" ] &&
 	fail 'The --packages-local option requires --local-packagedir to be defined'
 
+set -- $newopts
+unset var newopts
+
+# Save switches for potential child processes
+while getopts 'BCDFGHKLPRabde:fghilm:nop:r:stuvwx:' COMMAND_LINE_ARGUMENT ; do
+	case "${COMMAND_LINE_ARGUMENT}" in
+	B)	NO_BACKUP=Bopt; ARGS="-B $ARGS" ;;
+	C)	DONT_PRE_CLEAN=Copt; ARGS="-C $ARGS" ;;
+	D)	DONT_SCRUB_DISTFILES=Dopt; ARGS="-D $ARGS" ;;
+	F)	FETCH_ONLY=Fopt; ARGS="-F $ARGS" ;;
+	G)	[ -z "$PM_FORCE_CONFIG" ] && {
+			PM_NO_MAKE_CONFIG=Gopt; ARGS="-G $ARGS"; } ;;
+	H)	HIDE_BUILD=Hopt; ARGS="-H $ARGS" ;;
+	K)	DONT_POST_CLEAN=Kopt; ARGS="-K $ARGS" ;;
+	L)	LIST_PLUS=Lopt ;;
+	P)	packages_init first ;;
+	R)	RESTART=Ropt ; ARGS="-R $ARGS" ;;
+	a)	UPDATE_ALL=aopt ;;
+	b)	BACKUP=bopt; ARGS="-b $ARGS" ;;
+	d)	ALWAYS_SCRUB_DISTFILES=dopt; ARGS="-d $ARGS" ;;
+	e)	EXPUNGE=$OPTARG ;;
+	f)	export PM_FORCE=fopt ;;
+	g)	MAKE_PACKAGE=gopt; ARGS="-g $ARGS" ;;
+	h)	usage 0 ;;
+	i)	INTERACTIVE_UPDATE=iopt; ARGS="-i $ARGS" ;;
+	l)	LIST=lopt ;;
+	m)	export PM_MAKE_ARGS=$OPTARG	# For 'make checksum'
+		ARGS="-m $PM_MAKE_ARGS $ARGS" ;;
+	n)	NO_ACTION=nopt; ARGS="-n $ARGS" ;;
+	o)	REPLACE_ORIGIN=oopt ;;
+	p)	fail 'The -p option has been deprecated' ;;
+	r)	UPDATE_REQ_BYS=ropt
+		if [ -d "$pdb/$OPTARG" ]; then
+			glob_dirs=$OPTARG
+		else
+			find_glob_dirs $OPTARG
+			case $? in
+			1)	fail "$pdb/$OPTARG does not exist" ;;
+			2)	fail 'The argument to -r must match only one port' ;;
+			esac
+		fi
+		PM_RBP=${glob_dirs##*/} ; unset glob_dirs
+		portdir=`origin_from_pdb $PM_RBP` ;;
+	s)	CLEAN_STALE=sopt ;;
+	t)	RECURSE_THOROUGH=topt; ARGS="-t $ARGS" ;;
+	u)	fail 'The -u option has been deprecated' ;;
+	v)	PM_VERBOSE=vopt; ARGS="-v $ARGS" ;;
+	w)	SAVE_SHARED=wopt; ARGS="-w $ARGS" ;;
+	x)	case "$OPTARG" in
+		-*)	fail 'The -x option requires an argument' ;;
+		esac
+		PM_EXCL="${PM_EXCL}`globstrip ${OPTARG}` " ;;
+	*)	echo '' ; echo "===>>> Try ${0##*/} --help"; exit 1 ;;
+	esac
+done
+shift $(( $OPTIND - 1 ))
+
+[ -n "$UNATTENDED" ] && fail 'The -u option has been deprecated'
+
+[ -n "$PM_EXCL" ] && export PM_EXCL
+
+test_command_line () {
+	local var envar
+
+	for var in $my_environment; do
+		case "$var" in
+		${1}=*)	envar=$1 ;;
+		${2}=*)	envar=$2 ;;
+		esac
+	done
+
+	if [ -n "$envar" ]; then
+		unset $envar
+		return 0
+	fi
+
+	return 1
+}
+
+# Error checking for getopts
+[ -n "$PM_FORCE" -a "$INTERACTIVE_UPDATE" ] &&
+	fail "The -f and -i options are mutually exclusive"
+if [ -n "$BACKUP" -a -n "$NO_BACKUP" ]; then
+	test_command_line NO_BACKUP BACKUP ||
+		fail "The -b and -B options are mutually exclusive"
+fi
+if [ -n "$ALWAYS_SCRUB_DISTFILES" -a -n "$DONT_SCRUB_DISTFILES" ]; then
+	test_command_line ALWAYS_SCRUB_DISTFILES DONT_SCRUB_DISTFILES ||
+		fail "The -d and -D options are mutually exclusive"
+fi
+
+[ -n "$PM_NO_MAKE_CONFIG" -a -n "$PM_FORCE_CONFIG" ] && unset PM_NO_MAKE_CONFIG
+
+if [ -n "$LIST" -o -n "$LIST_PLUS" ]; then
+	if [ -n "$FETCH_ONLY" -o -n "$RESTART" -o -n "$UPDATE_ALL" -o \
+	    -n "$EXPUNGE" -o -n "$PM_FORCE" -o -n "$NO_ACTION" -o \
+	    -n "$REPLACE_ORIGIN" -o -n "$UPDATE_REQ_BYS" -o -n "$CLEAN_STALE" ]; then
+		fail 'The -[lL] options are not compatible with -FRaefnors'
+	fi
+	[ $# -gt 0 ] && fail 'The -[lL] options are not compatible with updates or installs'
+fi
+
+unset my_environment COMMAND_LINE_ARGUMENT
+unset -f packages_init cross_idx test_command_line
+
+#=============== 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
 if [ "$$" -eq "$PM_PARENT_PID" ]; then
@@ -637,9 +743,6 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then
 	fi
 fi
 
-set -- $newopts
-unset var newopts
-
 #=============== Begin functions relevant to --features and main ===============
 
 iport_from_origin () {
@@ -1059,7 +1162,7 @@ if [ -n "$CLEAN_DISTFILES" ]; then
 	# Set the file name here since we are usually called in a subshell
 	DI_FILES=`pm_mktemp DI-FILES`
 
-	if [ "$1" != '-t' ]; then
+	if [ -z "$RECURSE_THOROUGH" ]; then
 		read_distinfos
 	else
 		read_distinfos_all
@@ -1231,8 +1334,6 @@ if [ -n "$CHECK_PORT_DBDIR" ]; then
 	[ -d "$port_dbdir" ] ||
 		fail 'PORT_DBIR is empty, or the directory $port_dbdir does not exist'
 
-	if [ "$1" = "-v" ]; then PM_VERBOSE=vopt; fi
-
 	unique_list=':'
 
 	echo "===>>> Building list of installed port names"; echo ''
@@ -1296,109 +1397,6 @@ if [ -n "$LIST_ORIGINS" ]; then
 fi
 
 #=============== End code relevant only to --features ===============
-
-# Save switches for potential child processes
-while getopts 'BCDFGHKLPRabde:fghilm:nop:r:stuvwx:' COMMAND_LINE_ARGUMENT ; do
-	case "${COMMAND_LINE_ARGUMENT}" in
-	B)	NO_BACKUP=Bopt; ARGS="-B $ARGS" ;;
-	C)	DONT_PRE_CLEAN=Copt; ARGS="-C $ARGS" ;;
-	D)	DONT_SCRUB_DISTFILES=Dopt; ARGS="-D $ARGS" ;;
-	F)	FETCH_ONLY=Fopt; ARGS="-F $ARGS" ;;
-	G)	[ -z "$PM_FORCE_CONFIG" ] && {
-			PM_NO_MAKE_CONFIG=Gopt; ARGS="-G $ARGS"; } ;;
-	H)	HIDE_BUILD=Hopt; ARGS="-H $ARGS" ;;
-	K)	DONT_POST_CLEAN=Kopt; ARGS="-K $ARGS" ;;
-	L)	LIST_PLUS=Lopt ;;
-	P)	packages_init first ;;
-	R)	RESTART=Ropt ; ARGS="-R $ARGS" ;;
-	a)	UPDATE_ALL=aopt ;;
-	b)	BACKUP=bopt; ARGS="-b $ARGS" ;;
-	d)	ALWAYS_SCRUB_DISTFILES=dopt; ARGS="-d $ARGS" ;;
-	e)	EXPUNGE=$OPTARG ;;
-	f)	export PM_FORCE=fopt ;;
-	g)	MAKE_PACKAGE=gopt; ARGS="-g $ARGS" ;;
-	h)	usage 0 ;;
-	i)	INTERACTIVE_UPDATE=iopt; ARGS="-i $ARGS" ;;
-	l)	LIST=lopt ;;
-	m)	export PM_MAKE_ARGS=$OPTARG	# For 'make checksum'
-		ARGS="-m $PM_MAKE_ARGS $ARGS" ;;
-	n)	NO_ACTION=nopt; ARGS="-n $ARGS" ;;
-	o)	REPLACE_ORIGIN=oopt ;;
-	p)	fail 'The -p option has been deprecated' ;;
-	r)	UPDATE_REQ_BYS=ropt
-		if [ -d "$pdb/$OPTARG" ]; then
-			glob_dirs=$OPTARG
-		else
-			find_glob_dirs $OPTARG
-			case $? in
-			1)	fail "$pdb/$OPTARG does not exist" ;;
-			2)	fail 'The argument to -r must match only one port' ;;
-			esac
-		fi
-		PM_RBP=${glob_dirs##*/} ; unset glob_dirs
-		portdir=`origin_from_pdb $PM_RBP` ;;
-	s)	CLEAN_STALE=sopt ;;
-	t)	RECURSE_THOROUGH=topt; ARGS="-t $ARGS" ;;
-	u)	fail 'The -u option has been deprecated' ;;
-	v)	PM_VERBOSE=vopt; ARGS="-v $ARGS" ;;
-	w)	SAVE_SHARED=wopt; ARGS="-w $ARGS" ;;
-	x)	case "$OPTARG" in
-		-*)	fail 'The -x option requires an argument' ;;
-		esac
-		PM_EXCL="${PM_EXCL}`globstrip ${OPTARG}` " ;;
-	*)	echo '' ; echo "===>>> Try ${0##*/} --help"; exit 1 ;;
-	esac
-done
-shift $(( $OPTIND - 1 ))
-unset -f packages_init cross_idx
-
-[ -n "$UNATTENDED" ] && fail 'The -u option has been deprecated'
-
-[ -n "$PM_EXCL" ] && export PM_EXCL
-
-test_command_line () {
-	local var envar
-
-	for var in $my_environment; do
-		case "$var" in
-		${1}=*)	envar=$1 ;;
-		${2}=*)	envar=$2 ;;
-		esac
-	done
-
-	if [ -n "$envar" ]; then
-		unset $envar
-		return 0
-	fi
-
-	return 1
-}
-
-# Error checking for getopts
-[ -n "$PM_FORCE" -a "$INTERACTIVE_UPDATE" ] &&
-	fail "The -f and -i options are mutually exclusive"
-if [ -n "$BACKUP" -a -n "$NO_BACKUP" ]; then
-	test_command_line NO_BACKUP BACKUP ||
-		fail "The -b and -B options are mutually exclusive"
-fi
-if [ -n "$ALWAYS_SCRUB_DISTFILES" -a -n "$DONT_SCRUB_DISTFILES" ]; then
-	test_command_line ALWAYS_SCRUB_DISTFILES DONT_SCRUB_DISTFILES ||
-		fail "The -d and -D options are mutually exclusive"
-fi
-
-[ -n "$PM_NO_MAKE_CONFIG" -a -n "$PM_FORCE_CONFIG" ] && unset PM_NO_MAKE_CONFIG
-
-if [ -n "$LIST" -o -n "$LIST_PLUS" ]; then
-	if [ -n "$FETCH_ONLY" -o -n "$RESTART" -o -n "$UPDATE_ALL" -o \
-	    -n "$EXPUNGE" -o -n "$PM_FORCE" -o -n "$NO_ACTION" -o \
-	    -n "$REPLACE_ORIGIN" -o -n "$UPDATE_REQ_BYS" -o -n "$CLEAN_STALE" ]; then
-		fail 'The -[lL] options are not compatible with -FRaefnors'
-	fi
-	[ $# -gt 0 ] && fail 'The -[lL] options are not compatible with updates or installs'
-fi
-unset my_environment
-unset -f test_command_line
-
 #=============== Begin functions for getopts features and main ===============
 
 check_state () {


More information about the svn-src-user mailing list