Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 Dec 2009 18:32:50 +0000 (UTC)
From:      Doug Barton <dougb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r201136 - user/dougb/portmaster
Message-ID:  <200912281832.nBSIWoJW098066@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dougb
Date: Mon Dec 28 18:32:50 2009
New Revision: 201136
URL: http://svn.freebsd.org/changeset/base/201136

Log:
  Initial support for having portmaster update the terminal window
  with its status. One port and multiport are working, -a still
  needs work.
  
  Idea, terminal escape sequences and testing by:	ehaupt

Modified:
  user/dougb/portmaster/portmaster

Modified: user/dougb/portmaster/portmaster
==============================================================================
--- user/dougb/portmaster/portmaster	Mon Dec 28 17:57:37 2009	(r201135)
+++ user/dougb/portmaster/portmaster	Mon Dec 28 18:32:50 2009	(r201136)
@@ -1093,6 +1093,8 @@ check_for_updates () {
 	# No need for check_exclude here because it is already
 	# run in the places that call check_for_updates().
 	check_interactive $iport $port_ver || return 0
+	[ -n "$CONFIG_ONLY" ] && num_of_deps=$(( $num_of_deps + 1 ))
+	dep_of_deps=$(( $dep_of_deps + 1 ))
 	update_port $iport $port_ver || return 1
 	return 0
 }
@@ -1646,6 +1648,10 @@ check_fetch_only () {
 	safe_exit
 }
 
+term_printf () {
+	printf "\033]0;${0##*/}: ${PM_PARENT_PORT}${1}\007"
+}
+
 update_port () {
 	local update_to
 
@@ -1653,7 +1659,12 @@ update_port () {
 
 	echo "===>>> Launching child to update ${1#$pd/}${update_to}"
 
-	[ -n "$PM_DEPTH" ] && echo "	$PM_DEPTH >> ${1#$pd/}"
+	if [ -n "$PM_DEPTH" ]; then
+		echo "	$PM_DEPTH >> ${1#$pd/}"
+		term_printf " >> ${1#$pd/} (${dep_of_deps}/${num_of_deps})"
+	else
+#echo '' ; echo "Debug> NO PM_DEPTH HERE" ; echo ''
+	fi
 
 	[ -n "$doing_dep_check" -o \
 	    \( -n "$UPDATE_ALL" -a -n "$CONFIG_ONLY" \) ] &&
@@ -1836,6 +1847,9 @@ dependency_check () {
 			check_for_updates $iport $origin || fail 'Update failed'
 		else
 			check_interactive $origin || continue
+			[ -n "$CONFIG_ONLY" ] &&
+				num_of_deps=$(( $num_of_deps + 1 ))
+			dep_of_deps=$(( $dep_of_deps + 1 ))
 			update_port $origin
 		fi
 	done
@@ -1881,18 +1895,29 @@ post_config () {
 
 	unset CONFIG_SEEN_LIST CONFIG_ONLY
 
+	dep_of_deps=0
+
 	if [ -n "$PM_BUILD_ONLY_LIST" ]; then
 		unset run_dl_g
 		PM_BUILD_ONLY_LIST=pm_bol
 	fi
 }
 
+init_parent_port () {
+	PM_PARENT_PORT=$1
+	num_of_deps=0
+	dep_of_deps=0
+	export PM_PARENT_PORT num_of_deps dep_of_deps
+
+	term_printf
+}
+
 multiport () {
 	# Global
 	PM_MULTI_PORTS=':' ; PM_MULTI_BUILT=':'
 	export PM_MULTI_PORTS PM_MULTI_BUILT
 
-	local port worklist_temp worklist portlist
+	local port worklist_temp worklist portlist numports num
 
 	# Expand globs and check that the directories exist
 	for port in $@; do
@@ -1921,6 +1946,7 @@ multiport () {
 		esac
 	done
 
+	numports=0
 	for port in $worklist_temp; do
 		check_exclude $port || continue
 		check_interactive $port || continue
@@ -1928,6 +1954,7 @@ multiport () {
 		worklist="$worklist $port"
 		portlist="${portlist}\t${port}\n"
 		PM_MULTI_PORTS="${PM_MULTI_PORTS}${port}:"
+		numports=$(( $numports + 1 ))
 	done
 
 	echo "===>>> Working on multiple ports:"
@@ -1945,9 +1972,12 @@ multiport () {
 			done
 		fi
 
+		num=1
 		for port in $worklist; do
+			init_parent_port "$port ${num}/${numports}"
 			($0 $ARGS $port) || fail "Update for $port failed"
 			. $IPC_SAVE
+			num=$(( $num + 1 ))
 		done
 
 		check_fetch_only
@@ -1955,6 +1985,7 @@ multiport () {
 	fi
 
 	export PM_BUILDING=pmbuildingmultiport
+	num=1
 	for port in $worklist; do
 		case "$PM_MULTI_BUILT" in *:${port}:*) continue ;; esac
 
@@ -1962,11 +1993,15 @@ multiport () {
 		*/*)	;;	# Ok to proceed
 		*)	# If an installed version does not exist at this
 			# point it probably got updated as a dependency
-			[ -d "$pdb/$port" ] || continue
-			;;
+			if [ ! -d "$pdb/$port" ]; then
+				numports=$(( $numports - 1 ))
+				continue
+			fi ;;
 		esac
+		init_parent_port "$port ${num}/${numports}"
 		($0 $ARGS $port) || fail "Update for $port failed"
 		. $IPC_SAVE
+		num=$(( $num + 1 ))
 	done
 	safe_exit
 }
@@ -2084,6 +2119,8 @@ all_config () {
 }
 	[ -n "$DI_FILES" ] && (read_distinfos)&
 
+	init_parent_port All
+
 	ports_by_category
 	echo "===>>> Starting check of installed ports for available updates"
 
@@ -2284,6 +2321,7 @@ pm_cd $pd/$portdir || no_valid_port
 
 if [ -z "$PM_DEPTH" ]; then
 	PM_DEPTH=${upg_port:-$portdir}
+	[ -z "$PM_PARENT_PORT" ] && init_parent_port $portdir
 else
 	PM_DEPTH="$PM_DEPTH >> ${upg_port:-$portdir}"
 fi
@@ -2448,6 +2486,8 @@ elif [ -z "$NO_RECURSIVE_CONFIG" -a "$$"
 	echo ''
 fi
 
+[ "$$" -eq "$PM_PARENT_PID" ] && term_printf
+
 if [ -n "$NO_ACTION" -a -z "$CONFIG_ONLY" ]; then
 	[ -n "$PM_VERBOSE" ] && echo "===>>> Build canceled due to -n flag"
 	safe_exit



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