[93129] trunk/base/src/macports1.0/macports.tcl

cal at macports.org cal at macports.org
Tue May 15 14:08:51 PDT 2012


Revision: 93129
          https://trac.macports.org/changeset/93129
Author:   cal at macports.org
Date:     2012-05-15 14:08:50 -0700 (Tue, 15 May 2012)
Log Message:
-----------
rev-upgrade: Fix broken graph of dependents, fix broken topologic sort

Modified Paths:
--------------
    trunk/base/src/macports1.0/macports.tcl

Modified: trunk/base/src/macports1.0/macports.tcl
===================================================================
--- trunk/base/src/macports1.0/macports.tcl	2012-05-15 20:49:51 UTC (rev 93128)
+++ trunk/base/src/macports1.0/macports.tcl	2012-05-15 21:08:50 UTC (rev 93129)
@@ -3714,8 +3714,10 @@
             ui_debug "platform mismatch ... upgrading!"
             set build_override 1
         } elseif {$is_revupgrade_second_run} {
+            ui_debug "rev-upgrade override ... upgrading (from source)!"
             set build_override 1
         } elseif {$is_revupgrade} {
+            ui_debug "rev-upgrade override ... upgrading!"
             # in the first run of rev-upgrade, only activate possibly already existing files and check for missing dependencies
             set will_install yes
         } else {
@@ -4389,6 +4391,7 @@
             # initialize with empty list
             set adjlist($port) {}
             set revadjlist($port) {}
+            ui_debug "Broken: [$port name]"
         }
 
         array set visited {}
@@ -4413,6 +4416,7 @@
                 set len [llength $adjlist($port)]
                 if {$len < $lowest_adj_number} {
                     set lowest_adj_port $port
+                    set lowest_adj_number $len
                 }
                 if {$len == 0} {
                     # this node has no further dependencies
@@ -4427,10 +4431,9 @@
                         set index [lsearch -exact $adjlist($target) $port]
                         set adjlist($target) [lreplace $adjlist($target) $index $index]
                     }
+
+                    break;
                 }
-
-                # start anew
-                break;
             }
 
             # if we arrive here and lowest_adj_number is larger than 0, then we
@@ -4544,18 +4547,16 @@
     upvar $revadjlistname revadjlist
     upvar $visitedname visited
 
+    set visited($port) true
+
     ui_debug "Processing port [$port name] @[$port epoch]:[$port version]_[$port revision] [$port variants] [$port negated_variants]"
     set dependent_ports [$port dependents]
     foreach dep $dependent_ports {
-        if {[info exists visited($dep)]} {
-            continue
-        }
-        set visited($dep) true
         set is_broken_port false
 
         if {[info exists adjlist($dep)]} {
-            #ui_debug "Dependency [$dep name] is broken, adding edge from [[lindex $stack 0] name] to [$dep name]"
-            #ui_debug "Making [$dep name] new head of stack"
+            ui_debug "Dependent [$dep name] is broken, adding edge from [$dep name] to [[lindex $stack 0] name]"
+            ui_debug "Making [$dep name] new head of stack"
             # $dep is one of the broken ports
             # add an edge to the last broken port in the DFS
             lappend revadjlist([lindex $stack 0]) $dep
@@ -4565,9 +4566,11 @@
             
             set is_broken_port true
         }
-        revupgrade_buildgraph $dep stack adjlist revadjlist visited
+        if {![info exists visited($dep)]} {
+            revupgrade_buildgraph $dep stack adjlist revadjlist visited
+        }
         if {$is_broken_port} {
-            #ui_debug "Removing [$dep name] from stack"
+            ui_debug "Removing [$dep name] from stack"
             # remove $dep from the stack
             set stack [lrange $stack 1 end]
         }
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macports-changes/attachments/20120515/595a9486/attachment.html>


More information about the macports-changes mailing list