<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[118305] trunk/base/src</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="https://trac.macports.org/changeset/118305">118305</a></dd>
<dt>Author</dt> <dd>cal@macports.org</dd>
<dt>Date</dt> <dd>2014-03-29 12:31:50 -0700 (Sat, 29 Mar 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>base: Clean up error output to be more concise.

 - Remove &quot;failed to install $portname&quot; message.
   The failing port is mentioned earlier in the output and the user knows what
   port he was installing. Plus, it isn't really important which port the user
   initially wanted to install, it's important which one failed.
 - Shorten &quot;Please see the log file for port $portname for details:&quot; to a short
   one-line message and raise its message level to error so the output columns
   align nicely after a common &quot;Error: &quot; prefix.
 - Remove &quot;The following dependencies were not installed: $list&quot; completely,
   because it's not relevant -- the user probably wants to know (and should
   care) about the port that failed, not the dependencies that couldn't be
   installed because of that.
 - Shorten the ticket URL message to a simple one-liner.
 - Avoid cryptic messages like
     &quot;org.macports.activate for port xyz returned: $errstr&quot;
   in favor of
     &quot;Failed to activate xyz: $errstr&quot;
 - Make the requested variants mismatch line align after a common &quot;Error:&quot;
   prefix. Ideally, this should be done using some presentational logic in
   port.tcl that uses some nice formatting heuristics to make the messages more
   readable, but this is still better than what we had before, IMO.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkbasesrcmacports10macportstcl">trunk/base/src/macports1.0/macports.tcl</a></li>
<li><a href="#trunkbasesrcportporttcl">trunk/base/src/port/port.tcl</a></li>
<li><a href="#trunkbasesrcport10portutiltcl">trunk/base/src/port1.0/portutil.tcl</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkbasesrcmacports10macportstcl"></a>
<div class="modfile"><h4>Modified: trunk/base/src/macports1.0/macports.tcl (118304 => 118305)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/base/src/macports1.0/macports.tcl        2014-03-29 19:21:58 UTC (rev 118304)
+++ trunk/base/src/macports1.0/macports.tcl        2014-03-29 19:31:50 UTC (rev 118305)
</span><span class="lines">@@ -1972,10 +1972,9 @@
</span><span class="cx">     } else {
</span><span class="cx">         # An error occurred.
</span><span class="cx">         global ::logenabled ::debuglogname
</span><del>-        ui_error &quot;Failed to install $portname&quot;
</del><span class="cx">         ui_debug $::errorInfo
</span><span class="cx">         if {[info exists ::logenabled] &amp;&amp; $::logenabled &amp;&amp; [info exists ::debuglogname]} {
</span><del>-            ui_notice &quot;Please see the log file for port $portname for details:\n    $::debuglogname&quot;
</del><ins>+            ui_error &quot;See $::debuglogname for details.&quot;
</ins><span class="cx">         }
</span><span class="cx">         macports::pop_log
</span><span class="cx">         return 1
</span><span class="lines">@@ -2059,11 +2058,16 @@
</span><span class="cx">         registry::exclusive_unlock
</span><span class="cx"> 
</span><span class="cx">         if {$result ne {}} {
</span><del>-            set errstring &quot;The following dependencies were not installed:&quot;
-            foreach ditem $result {
-                append errstring &quot; [ditem_key $ditem provides]&quot;
-            }
-            ui_error $errstring
</del><ins>+            ##
+            # When this happens, the failing port usually already printed an
+            # error message. Omit this one to avoid cluttering the output and
+            # hiding the *real* problem.
+
+            #set errstring &quot;The following dependencies were not installed:&quot;
+            #foreach ditem $result {
+            #    append errstring &quot; [ditem_key $ditem provides]&quot;
+            #}
+            #ui_error $errstring
</ins><span class="cx">             foreach ditem $dlist {
</span><span class="cx">                 catch {mportclose $ditem}
</span><span class="cx">             }
</span><span class="lines">@@ -2101,7 +2105,7 @@
</span><span class="cx">     global ::logenabled ::debuglogname
</span><span class="cx">     if {[info exists ::logenabled] &amp;&amp; $::logenabled &amp;&amp; [info exists ::debuglogname]} {
</span><span class="cx">         if {$result != 0} {
</span><del>-            ui_notice &quot;Please see the log file for port $portname for details:\n    $::debuglogname&quot;
</del><ins>+            ui_error &quot;See $::debuglogname for details.&quot;
</ins><span class="cx">         }
</span><span class="cx">         macports::pop_log
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkbasesrcportporttcl"></a>
<div class="modfile"><h4>Modified: trunk/base/src/port/port.tcl (118304 => 118305)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/base/src/port/port.tcl        2014-03-29 19:21:58 UTC (rev 118304)
+++ trunk/base/src/port/port.tcl        2014-03-29 19:31:50 UTC (rev 118305)
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx"> # show the URL for the ticket reporting instructions
</span><span class="cx"> proc print_tickets_url {args} {
</span><span class="cx">     if {${macports::prefix} ne &quot;/usr/local&quot; &amp;&amp; ${macports::prefix} ne &quot;/usr&quot;} {
</span><del>-        ui_notice &quot;To report a bug, follow the instructions in the guide:\n    http://guide.macports.org/#project.tickets&quot;
</del><ins>+        ui_error &quot;Follow http://guide.macports.org/#project.tickets to report a bug.&quot;
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -4103,7 +4103,7 @@
</span><span class="cx">             set status [action_revupgrade $action $portlist $opts]
</span><span class="cx">         }
</span><span class="cx">     }
</span><del>-    
</del><ins>+
</ins><span class="cx">     return $status
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkbasesrcport10portutiltcl"></a>
<div class="modfile"><h4>Modified: trunk/base/src/port1.0/portutil.tcl (118304 => 118305)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/base/src/port1.0/portutil.tcl        2014-03-29 19:21:58 UTC (rev 118304)
+++ trunk/base/src/port1.0/portutil.tcl        2014-03-29 19:31:50 UTC (rev 118305)
</span><span class="lines">@@ -1580,12 +1580,16 @@
</span><span class="cx">             # - this step is not to always be performed
</span><span class="cx">             # - this step must be written to file
</span><span class="cx">             if {$skipped == 0
</span><del>-          &amp;&amp; [ditem_key $ditem runtype] ne &quot;always&quot;
-          &amp;&amp; [ditem_key $ditem state] ne &quot;no&quot;} {
-            write_statefile target $targetname $target_state_fd
</del><ins>+                &amp;&amp; [ditem_key $ditem runtype] ne &quot;always&quot;
+                &amp;&amp; [ditem_key $ditem state] ne &quot;no&quot;} {
+                write_statefile target $targetname $target_state_fd
</ins><span class="cx">             }
</span><span class="cx">         } else {
</span><del>-            ui_error &quot;$targetname for port $portname returned: $errstr&quot;
</del><ins>+            if {$errstr ne {}} {
+                ui_error &quot;Failed to $target $portname: $errstr&quot;
+            } else {
+                ui_error &quot;Failed to $target $portname.&quot;
+            }
</ins><span class="cx">             ui_debug &quot;Error code: $errcode&quot;
</span><span class="cx">             ui_debug &quot;Backtrace: $errinfo&quot;
</span><span class="cx">             set result 1
</span><span class="lines">@@ -2132,7 +2136,8 @@
</span><span class="cx"> 
</span><span class="cx">         array set oldvariations {}
</span><span class="cx">         if {[check_statefile_variants variations oldvariations $state_fd]} {
</span><del>-            ui_error &quot;Requested variants \&quot;[canonicalize_variants [array get variations]]\&quot; do not match original selection \&quot;[canonicalize_variants [array get oldvariations]]\&quot;.\nPlease use the same variants again, perform 'port clean [option subport]' or specify the force option (-f).&quot;
</del><ins>+            ui_error &quot;Requested variants \&quot;[canonicalize_variants [array get variations]]\&quot; do not match original selection \&quot;[canonicalize_variants [array get oldvariations]]\&quot;.&quot;
+            ui_error &quot;Please use the same variants again, perform 'port clean [option subport]' or specify the force option (-f).&quot;
</ins><span class="cx">             set result 1
</span><span class="cx">         } elseif {!([info exists ports_dryrun] &amp;&amp; $ports_dryrun eq &quot;yes&quot;)} {
</span><span class="cx">             # Write variations out to the statefile
</span></span></pre>
</div>
</div>

</body>
</html>