Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 May 2010 22:10:54 +0000 (UTC)
From:      Doug Barton <dougb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r207588 - user/dougb/portmaster
Message-ID:  <201005032210.o43MAsn9015696@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dougb
Date: Mon May  3 22:10:54 2010
New Revision: 207588
URL: http://svn.freebsd.org/changeset/base/207588

Log:
  Remove no longer necessary local variable in version()
  
  Add a --no-index-fetch option for people who want to use the
  --index* options but do not want portmaster to do the fetching.
  
  Rework how some initial variables are set. Deriving the values via
  make works, but is very slow. So try to be more intelligent about
  recognizing the standard values for the ones we always need to have.
    * For PORTSDIR and PKG_DBDIR if those variables are not in the
      environment and the standard directories exist, use them.
    * Move the setting of pd (PORTSDIR) up to before the INDEX-related
      items so that we can use ${INDEXDIR:-$pd}
    * The derivation of the INDEX-related stuff wasn't working (since
      we didn't know $pd) and no one has complained, so just use the
      default values from bsd.port.mk unless the user specifies others.
    * If /var/db/ports exists, use it for port_dbdir
  
  In the test to see if we downloaded a new INDEX.bz2 file supply a
  default value for index_time so that if the file did not exist
  previously the test will not fail.
  
  Indicate that the -[lL] options are not compatible with -FRaefnors,
  updates, or installs

Modified:
  user/dougb/portmaster/portmaster

Modified: user/dougb/portmaster/portmaster
==============================================================================
--- user/dougb/portmaster/portmaster	Mon May  3 22:09:06 2010	(r207587)
+++ user/dougb/portmaster/portmaster	Mon May  3 22:10:54 2010	(r207588)
@@ -49,7 +49,7 @@ umask 022
 #=============== Begin functions we always want to have ===============
 
 version () {
-	local rcs cvs
+	local cvs
 
 	cvs='$FreeBSD$'
 
@@ -250,7 +250,8 @@ usage () {
 	echo "    [[[--packages|-P]|[--packages-only|-PP]] | [--packages-build]]"
 	echo "    [--packages-if-newer] [--delete-build-only] [--always-fetch]"
 	echo "    [--local-packagedir=<path>] [--delete-packages]"
-	echo "    [--no-confirm] [--no-term-title] [--index|--index-first|--index-only]"
+	echo "    [--no-confirm] [--no-term-title] [--no-index-fetch]"
+	echo "    [--index|--index-first|--index-only]"
 	echo "    [-m <arguments for make>] [-x <glob pattern to exclude from building>]"
 	echo "${0##*/} [Common flags] <full name of port directory in $pdb>"
 	echo "${0##*/} [Common flags] <full path to $pd/foo/bar>"
@@ -311,6 +312,7 @@ usage () {
 	echo '   installed and/or updated before proceeding'
 	echo '--no-term-title do not update the xterm title bar'
 	echo ''
+	echo '--no-index-fetch skip fetching the INDEX file'
 	echo '--index use INDEX-[6-9] exclusively to check if a port is up to date'
 	echo '--index-first use the INDEX for status, but double-check with the port'
 	echo '--index-only do not try to use /usr/ports'
@@ -450,6 +452,7 @@ for var in "$@" ; do
 				export PM_NO_CONFIRM ;;
 	--no-term-title)	PM_NO_TERM_TITLE=pm_no_term_title
 				export PM_NO_TERM_TITLE ;;
+	--no-index-fetch)	PM_NO_INDEX_FETCH=pm_no_index_fetch ;;
 	--index)		cross_idx index ; PM_INDEX=pm_index ; export PM_INDEX ;;
 	--index-first)		PM_INDEX=pm_index ; PM_INDEX_FIRST=pm_index_first
 				cross_idx first ; export PM_INDEX PM_INDEX_FIRST ;;
@@ -478,66 +481,61 @@ unset var
 # 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
-	if [ -n "$PM_INDEX" ]; then
-		[ -d "$pd" ] && pm_cd_pd
-		if [ -z "$FETCHINDEX" ]; then
-			[ -d "$pd" ] && FETCHINDEX=`pm_make_b -V FETCHINDEX`
-			[ -n "$FETCHINDEX" ] || FETCHINDEX='fetch -am -o'
-		fi
-		if [ -z "$MASTER_SITE_INDEX" ]; then
-			[ -d "$pd" ] &&
-			MASTER_SITE_INDEX=`pm_make_b -V MASTER_SITE_INDEX`
-			[ -n "$MASTER_SITE_INDEX" ] ||
-			MASTER_SITE_INDEX='http://www.FreeBSD.org/ports/'
-		fi
-		if [ -z "$INDEXDIR" ]; then
-			[ -d "$pd" ] && INDEXDIR=`pm_make_b -V INDEXDIR`
-			[ -n "$INDEXDIR" ] || INDEXDIR="$TMPDIR"
+	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 "$PM_INDEX" ]; then
 		if [ -z "$INDEXFILE" ]; then
-			[ -d "$pd" ] && INDEXFILE=`pm_make_b -V INDEXFILE`
-			if [ -z "$INDEXFILE" ]; then
-				ver=`uname -r`
-				INDEXFILE=INDEX-${ver%%\.*}
-				unset ver
+			ver=`uname -r`
+			INDEXFILE=INDEX-${ver%%\.*}
+			unset ver
+		fi
+		PM_INDEX="${INDEXDIR:-$pd}/${INDEXFILE}"
+
+		if [ -z "$PM_NO_INDEX_FETCH" ]; then
+			: ${FETCHINDEX:='fetch -am -o'}
+			: ${MASTER_SITE_INDEX:='http://www.FreeBSD.org/ports/'}
+
+			index_time=`stat -f '%Um' ${PM_INDEX}.bz2 2>/dev/null`
+			pm_sv Updating INDEX file
+			$PM_SU_CMD $FETCHINDEX ${PM_INDEX}.bz2 ${MASTER_SITE_INDEX}${INDEXFILE}.bz2
+			if [ ${index_time:-0} -ne `stat -f '%Um' ${PM_INDEX}.bz2 2>/dev/null` ]; then
+				temp_index=`pm_mktemp index`
+				bunzip2 < ${PM_INDEX}.bz2 > $temp_index
+				pm_install_s $temp_index $PM_INDEX
+				unlink $temp_index
+				unset temp_index
 			fi
+			unset index_time
+		else
+			[ -r "$PM_INDEX" ] ||
+				fail "The --no-index-fetch option was used, but $PM_INDEX does not exist"
 		fi
 
-		PM_INDEX="${INDEXDIR}/${INDEXFILE}"
-		index_time=`stat -f '%Um' ${PM_INDEX}.bz2 2>/dev/null`
-		pm_sv Updating INDEX file
-		$PM_SU_CMD $FETCHINDEX ${PM_INDEX}.bz2 ${MASTER_SITE_INDEX}${INDEXFILE}.bz2
-		if [ $index_time -ne `stat -f '%Um' ${PM_INDEX}.bz2 2>/dev/null` ]; then
-			temp_index=`pm_mktemp index`
-			bunzip2 < ${PM_INDEX}.bz2 > $temp_index
-			pm_install_s $temp_index $PM_INDEX
-			unlink $temp_index
-			unset temp_index
-		fi
-		unset index_time
-
 		PM_INDEX_PORTS=`pkg_version -Ivl\< $PM_INDEX | cut -f1 -d\<`
 		export PM_INDEX_PORTS
 	fi
 
 	if [ -z "$pd" ]; then
-		if [ -z "$PORTSDIR" ]; then
-			pd=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORTSDIR 2>/dev/null`
-		else
-			pd=$PORTSDIR
-		fi
-		if [ -z "$pd" ]; then
-			if [ -n "$PM_INDEX_ONLY" ]; then
-				pd=`head -1 $PM_INDEX | cut -f 2 -d\|`
-				pd=${pd%/*}
-				pd=${pd%/*}
-			fi
+		if [ -n "$PM_INDEX_ONLY" ]; then
+			pd=`head -1 $PM_INDEX | cut -f 2 -d\|`
+			pd=${pd%/*}
+			pd=${pd%/*}
 		fi
 		[ -z "$pd" ] && fail 'The value of PORTSDIR cannot be empty'
 	fi
 	if [ -z "$pdb" ]; then
 		if [ -z "$PKG_DBDIR" ]; then
-			pdb=`pm_make -f/usr/share/mk/bsd.port.mk -V PKG_DBDIR 2>/dev/null`
+			[ -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
@@ -554,14 +552,13 @@ if [ "$$" -eq "$PM_PARENT_PID" ]; then
 		# In case it is a symlink
 		distdir="${distdir%/}/"
 	fi
-	if [ -z "$port_dbdir" ]; then
-		port_dbdir=`pm_make_b -f/usr/share/mk/bsd.port.mk -V PORT_DBDIR 2>/dev/null`
-		[ -z "$port_dbdir" -a -d /var/db/ports ] && port_dbdir='/var/db/ports'
-		[ -n "$port_dbdir" ] && export port_dbdir
-	fi
-
 	export pd pdb 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
@@ -1152,6 +1149,14 @@ if [ -n "$NO_RECURSIVE_CONFIG" ]; then
 	[ -n "$FORCE_CONFIG" ] &&
 		fail 'The --force-config and -G options are mutually exclusive'
 fi
+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
 
 #=============== Begin functions for getopts features and main ===============



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005032210.o43MAsn9015696>