Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 18 Dec 2009 08:03:31 +0000 (UTC)
From:      Doug Barton <dougb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r200663 - user/dougb/portmaster
Message-ID:  <200912180803.nBI83VaK079918@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dougb
Date: Fri Dec 18 08:03:31 2009
New Revision: 200663
URL: http://svn.freebsd.org/changeset/base/200663

Log:
  1. Instead of having a pca() to describe the post-config action
  collect the stuff that always runs after config is done into a
  function, and use the pca() logic to determine what to print. This
  also restores the whitespace to consistency between the modes
  (one port, multiport, -a).
  
  2. 9-CURRENT has its own package repo now, hurray!
  
  3. Instead of fetching the directory listing for each port category
  (devel, ports-mgmt, etc.) every time we need to check a port, fetch
  it once and save it to a temporary file. This lets us do several
  cool things:
  	a. Save a lot of time not having to re-fetch each iteration
  	b. Run the sed code to fix %2c -> , up front
  	c. Add a sed pattern to fix %2b -> +
  	d. Run a variety of different patterns to try and find the
  	   latest_pv
  
  4. Not finding a package (or even a package repo) should only fail()
  if we are using -PP, not if we're just using -P.
  
  5. Move the error message for "no package in -PP mode" to a variable
  for both reuse and code readability.
  
  6. We only want to run the logic tree on whether $latest_pv is up to
  date or not if that variable has a value, so add appropriate tests.

Modified:
  user/dougb/portmaster/portmaster

Modified: user/dougb/portmaster/portmaster
==============================================================================
--- user/dougb/portmaster/portmaster	Fri Dec 18 06:09:43 2009	(r200662)
+++ user/dougb/portmaster/portmaster	Fri Dec 18 08:03:31 2009	(r200663)
@@ -1865,14 +1865,21 @@ create_master_rb_list () {
 	[ -n "$MASTER_RB_LIST" ] && export MASTER_RB_LIST=" $MASTER_RB_LIST"
 }
 
-pca () {
+post_config () {
+	local action
+
+	unset CONFIG_SEEN_LIST CONFIG_ONLY
+
+	action=build
 	if [ "$PM_PACKAGES" = only ]; then
-		echo install
+		action=install
 	elif [ -n "$PM_PACKAGES" ]; then
-		echo 'build and/or install'
-	else
-		echo build
+		action='build and/or install'
 	fi
+
+	echo ''
+	echo "===>>> Starting $action for $* <<<==="
+	echo ''
 }
 
 multiport () {
@@ -1937,11 +1944,9 @@ multiport () {
 			($0 $ARGS $port) || fail "Update for $port failed"
 			. $IPC_SAVE
 		done
+
 		check_fetch_only
-		unset CONFIG_SEEN_LIST CONFIG_ONLY
-		echo ''
-		echo "===>>> Starting `pca` for multiple ports <<<==="
-		echo ''
+		post_config multiple ports
 
 		if [ -n "$PM_BUILD_ONLY_LIST" ]; then
 			unset run_dl_g
@@ -2109,10 +2114,7 @@ all_config () {
 			safe_exit
 		fi
 
-		unset CONFIG_SEEN_LIST CONFIG_ONLY
-		echo ''
-		echo "===>>> Starting `pca` for ports that need updating <<<==="
-		echo ''
+		post_config for ports that need updating
 
 		if [ -n "$PM_BUILD_ONLY_LIST" ]; then
 			clean_build_only_list
@@ -2417,9 +2419,7 @@ if [ -n "$CONFIG_ONLY" ]; then
 	fi
 
 	check_fetch_only
-	unset CONFIG_SEEN_LIST CONFIG_ONLY
-	echo "===>>> Starting `pca` for $portdir <<<==="
-	echo ''
+	post_config $portdir
 
 	if [ -n "$PM_BUILD_ONLY_LIST" ]; then
 		unset run_dl_g
@@ -2521,7 +2521,7 @@ fetch_package () {
 				release=packages-${release%%\.*}-stable ;;
 		[678]\.[0-9]-RELEASE*)
 				release=packages-${release%-RELEASE*}-release ;;
-		9\.0-CURRENT)	release=packages-8-stable ;;	# XXX
+		9\.0-CURRENT)	release=packages-9-current ;;
 		*RC[0-9]*)	release=${release%-RC[0-9]}
 				release=packages-${release}-release ;;
 		*BETA[0-9]*)	release=${release%-BETA[0-9]}
@@ -2553,13 +2553,21 @@ fetch_package () {
 	fi
 
 	if [ -z "$latest_pv" ]; then
-		case "$new_port" in
-		*\.*)	s=${new_port%%\.*} ;;
-		*)	s=`pm_make -V LATEST_LINK` ;;
-		esac
-		latest_pv=`fetch -q -o - ${sitepath} 2>/dev/null | grep "href=\"${s}"`
+		dirlist=`echo ${TMPDIR}/f-${PM_PARENT_PID}-dl-${portdir%/*}*`
+		if [ ! -r "$dirlist" ]; then
+			pm_unlink $dirlist		# JIC
+			dirlist=`pm_mktemp dl-${portdir%/*}`
+			fetch -q -o - ${sitepath} 2>/dev/null |
+				sed -e "s#%2[cC]#,#g" -e "s#%2[bB]#+#g" > \
+				$dirlist
+		fi
+
+		for s in ${new_port%\.*} ${new_port%%\.*} ${new_port%-*}; do
+			latest_pv=`grep "href=\"${s}" $dirlist`
+			[ -n "$latest_pv" ] && break
+		done
 	fi
-	unset s
+	unset dirlist s
 
 	if [ -z "$latest_pv" ]; then
 		fetch_package $new_port try
@@ -2568,19 +2576,18 @@ fetch_package () {
 		fi
 	fi
 
+	ponly_err="Try --packages-if-newer, or do not use -PP/--packages-only"
+
 	if [ -z "$latest_pv" ]; then
 		echo "===>>> Package and/or archive not found at:"
 		echo "${sitepath}"
 		echo ''
 		echo "       Check the pkg_add(1) man page for information"
 		echo "       on setting the PACKAGESITE environment variable"
-		fail 'No package archive found'
+		[ "$PM_PACKAGES" = only ] && fail $ponly_err
 	else
 		latest_pv=${latest_pv#*href=\"}
 		latest_pv=${latest_pv%%\.tbz*}
-		case "$latest_pv" in
-		*%2[cC]*)	latest_pv=`echo $latest_pv | sed s#%2[cC]#,#` ;;
-		esac
 	fi
 
 notnewer () {
@@ -2595,7 +2602,7 @@ notnewer () {
 		use_package=up_equal
 		[ -n "$PM_VERBOSE" ] &&
 	echo "===>>> Available package ($latest_pv) matches the ports tree"
-	elif [ -n "$PM_PACKAGES_NEWER" ]; then
+	elif [ -n "$latest_pv" -a -n "$PM_PACKAGES_NEWER" ]; then
 		if [ -n "$upg_port" ]; then
 			case `pkg_version -t $upg_port $latest_pv` in
 			\<)	use_package=up_newer
@@ -2614,7 +2621,7 @@ notnewer () {
 			[ -n "$PM_VERBOSE" ] &&
 			echo "===>>> There is a package available ($latest_pv)"
 		fi
-	else
+	elif [ -n "$latest_pv" ]; then
 		case `pkg_version -t $new_port $latest_pv` in
 		\<)	# Could happen if ports tree is out of date
 			use_package=up_old_tree
@@ -2636,7 +2643,7 @@ notnewer () {
 						use_package=up_force2
 				echo "===>>> Installing anyway due to -f"
 					else
-	fail "Try --packages-if-newer, or do not use -PP/--packages-only"
+						fail $ponly_err
 					fi
 				fi
 			fi ;;



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