Index: trunk/base/src/port1.0/portbuild.tcl
===================================================================
--- trunk/base/src/port1.0/portbuild.tcl	(revision 220)
+++ trunk/base/src/port1.0/portbuild.tcl	(revision 221)
@@ -15,6 +15,8 @@
 options make.cmd make.type make.target.all make.target.install
 
+set UI_PREFIX "---> "
+
 proc build_main {args} {
-    global portname portpath workdir worksrcdir prefix make.type make.cmd make.worksrcdir make.target.all
+    global portname portpath workdir worksrcdir prefix make.type make.cmd make.worksrcdir make.target.all UI_PREFIX
 
     default make.type bsd
@@ -32,4 +34,5 @@
     }
     default make.target.all all
+    ui_msg "$UI_PREFIX Building $portname with target ${make.target.all}"
     system "${make.cmd} ${make.target.all}"
     return 0
Index: trunk/base/src/port1.0/portchecksum.tcl
===================================================================
--- trunk/base/src/port1.0/portchecksum.tcl	(revision 220)
+++ trunk/base/src/port1.0/portchecksum.tcl	(revision 221)
@@ -14,6 +14,8 @@
 options checksums
 
+set UI_PREFIX "---> "
+
 proc md5 {file} {
-    global distpath
+    global distpath UI_PREFIX
 
     set md5regex "^(MD5)\[ \]\\(($file)\\)\[ \]=\[ \](\[A-Za-z0-9\]+)\n$"
@@ -24,6 +26,5 @@
     } else {
 	# XXX Handle this error beter
-	ui_puts $line
-	ui_puts "md5sum failed!"
+	ui_error "$UI_PREFIX $line - md5sum failed!"
 	return -1
     }
@@ -42,5 +43,5 @@
 
 proc checksum_main {args} {
-    global checksums distpath portpath all_dist_files
+    global checksums distpath portpath all_dist_files UI_PREFIX
 
     # If no files have been downloaded there is nothing to checksum
@@ -50,5 +51,5 @@
 
     if ![info exists checksums] {
-	ui_puts "No MD5 checksums."
+	ui_error "$UI_PREFIX No MD5 checksums."
 	return -1
     }
@@ -58,11 +59,11 @@
 	set dchecksum [dmd5 $distfile]
 	if {$dchecksum == -1} {
-	    ui_puts "No checksum recorded for $distfile"
+	    ui_error "$UI_PREFIX No checksum recorded for $distfile"
 	    return -1
 	}
 	if {$checksum == $dchecksum} {
-	    ui_puts "Checksum OK for $distfile"
+	    ui_msg "$UI_PREFIX Checksum OK for $distfile"
 	} else {
-	    ui_puts "Checksum mismatch for $distfile"
+	    ui_error "$UI_PREFIX Checksum mismatch for $distfile"
 	    return -1
 	}
Index: trunk/base/src/port1.0/portconfigure.tcl
===================================================================
--- trunk/base/src/port1.0/portconfigure.tcl	(revision 220)
+++ trunk/base/src/port1.0/portconfigure.tcl	(revision 221)
@@ -15,6 +15,8 @@
 options configure.type configure.args configure.worksrcdir automake automake.env automake.args autoconf autoconf.env autoconf.args xmkmf libtool
 
+set UI_PREFIX "---> "
+
 proc configure_main {args} {
-    global configure configure.type configure.args configure.worksrcdir automake automake.env automake.args autoconf autoconf.env autoconf.args xmkmf libtool portname portpath workdir worksrcdir prefix
+    global configure configure.type configure.args configure.worksrcdir automake automake.env automake.args autoconf autoconf.env autoconf.args xmkmf libtool portname portpath workdir worksrcdir prefix UI_PREFIX
 
     if [info exists configure.worksrcdir] {
@@ -29,4 +31,5 @@
     }
 
+    ui_msg "$UI_PREFIX Running configure script"
     if [info exists configure.args] {
 	system "./configure --prefix=${prefix} ${configure.args}"
Index: trunk/base/src/port1.0/portextract.tcl
===================================================================
--- trunk/base/src/port1.0/portextract.tcl	(revision 220)
+++ trunk/base/src/port1.0/portextract.tcl	(revision 221)
@@ -17,6 +17,8 @@
 options extract_opts extract.only extract.cmd extract.before_args extract.after_args
 
+set UI_PREFIX "---> "
+
 proc extract_main {args} {
-    global portname portpath portpath workdir distname distpath distfiles use_bzip2 extract.only extract.cmd extract.before_args extract.after_args
+    global portname portpath portpath workdir distname distpath distfiles use_bzip2 extract.only extract.cmd extract.before_args extract.after_args UI_PREFIX
 
     if {![info exists distfiles] && ![info exists extract.only]} {
@@ -39,16 +41,15 @@
     }
 
-    ui_puts "Extracting for $distname"
+    ui_msg "$UI_PREFIX Extracting for $distname"
 
     cd $portpath/$workdir
     foreach distfile ${extract.only} {
-	ui_puts "$distfile: " -nonewline
-	flush stdout
+	ui_info "$UI_PREFIX Extracting $distfile ... " -nonewline
 	set cmd "${extract.cmd} [join ${extract.before_args}] $distpath/$distfile [join ${extract.after_args}]"
 	if [catch {system $cmd} result] {
-	    ui_puts $result
+	    ui_error "$UI_PREFIX $result"
 	    return -1
 	}
-	ui_puts "done"
+	ui_info "Done"
     }
     return 0
Index: trunk/base/src/port1.0/portfetch.tcl
===================================================================
--- trunk/base/src/port1.0/portfetch.tcl	(revision 220)
+++ trunk/base/src/port1.0/portfetch.tcl	(revision 221)
@@ -17,4 +17,6 @@
 # Defaults
 default extract_sufx tar.gz
+
+set UI_PREFIX "---> "
 
 proc suffix {distname} {
@@ -47,5 +49,5 @@
 
 proc fetchfiles {args} {
-    global distpath all_dist_files master_sites
+    global distpath all_dist_files master_sites UI_PREFIX
 
     if {![file isdirectory $distpath]} {
@@ -55,7 +57,7 @@
     foreach distfile $all_dist_files {
 	if {![file isfile $distpath/$distfile]} {
-	    ui_puts "$distfile doesn't seem to exist in $distpath"
+	    ui_info "$UI_PREFIX $distfile doesn't seem to exist in $distpath"
 	    foreach site $master_sites {
-		ui_puts "Attempting to fetch from $site"
+		ui_msg "$UI_PREFIX Attempting to fetch $distfile from $site"
 		if ![catch {exec curl -o ${distpath}/${distfile} ${site}${distfile} >&@ stdout} result] {
 		    set fetched 1
Index: trunk/base/src/port1.0/portpatch.tcl
===================================================================
--- trunk/base/src/port1.0/portpatch.tcl	(revision 220)
+++ trunk/base/src/port1.0/portpatch.tcl	(revision 221)
@@ -12,6 +12,8 @@
 register com.apple.patch swdep build depends_build
 
+set UI_PREFIX "---> "
+
 proc patch_main {args} {
-    global portname patchfiles distpath filedir workdir portpath
+    global portname patchfiles distpath filedir workdir portpath UI_PREFIX
 
     if ![info exists patchfiles] {
@@ -30,4 +32,5 @@
     cd $portpath/$workdir
     foreach patch $patchlist {
+	ui_info "$UI_PREFIX Applying $patch"
 	switch -glob -- [file tail $patch] {
 	    *.Z -
Index: trunk/base/src/port1.0/portui.tcl
===================================================================
--- trunk/base/src/port1.0/portui.tcl	(revision 220)
+++ trunk/base/src/port1.0/portui.tcl	(revision 221)
@@ -15,4 +15,7 @@
 # If set, output informational messages (ui_info)
 options ports_verbose
+
+# If set, don't output "standard messages"
+options ports_quiet
 
 # do whatever interesting things need to be done to initialize the UI
@@ -70,11 +73,24 @@
 
 # Output message if ports_verbose is set.
-# Output debugging messages if the ports_debug variable is set.
-proc ui_info {str} {
+proc ui_info {str {nonl ""}} {
     global ports_verbose
 
     if [tbool ports_verbose] {
-	ui_puts $str
+	ui_puts $str $nonl
     }
+}
+
+# Output message unless ports_quiet is set.
+proc ui_msg {str {nonl ""}} {
+    global ports_quiet
+
+    if ![tbool ports_quiet] {
+	ui_puts $str $nonl
+    }
+}
+
+# Output message unconditionally as an error message.
+proc ui_error {str} {
+    ui_puts Error: $str
 }
 
Index: trunk/base/src/port1.0/portutil.tcl
===================================================================
--- trunk/base/src/port1.0/portutil.tcl	(revision 220)
+++ trunk/base/src/port1.0/portutil.tcl	(revision 221)
@@ -140,5 +140,5 @@
         set procedure [lindex $args 1]
         if {[dlist_has_key targets $name procedure,$chain]} {
-            ui_puts "Warning: target '$name' re-registered for chain $chain (new procedure: '$procedure')"
+            ui_info "Warning: target '$name' re-registered for chain $chain (new procedure: '$procedure')"
         }
         dlist_set_key targets $name procedure,$chain $procedure
@@ -161,5 +161,5 @@
             dlist_append_key targets $name $mode $args
         } else {
-            ui_puts "Warning: target '$name' not-registered in register $mode"
+            ui_info "Warning: target '$name' not-registered in register $mode"
         }
         
@@ -407,9 +407,9 @@
     if { [llength $names] > 0} {
 	# somebody broke!
-	ui_puts "Warning: the following items did not execute: "
+	ui_info "Warning: the following items did not execute: "
 	foreach name $names {
-	    ui_puts "$uplist($name) " -nonewline
-	}
-	ui_puts ""
+	    ui_info "$uplist($name) " -nonewline
+	}
+	ui_info ""
     }
 }
@@ -429,9 +429,9 @@
 	    }
 	} else {
-	    ui_puts "$chain error: $name returned $result"
+	    ui_error "$chain error: $name returned $result"
 	    set result failure
 	}
     } else {
-	ui_puts "Warning: $name does not support chain $chain"
+	ui_info "Warning: $name does not support chain $chain"
 	set result failure
     }
@@ -452,5 +452,5 @@
             # Special-case 'all'
         } elseif {![string equal $target all]} {
-            ui_puts "Warning: unknown target: $target"
+            ui_info "Warning: unknown target: $target"
             return
         }
