<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository mpbb.

</pre>
<p><a href="https://github.com/macports/mpbb/commit/22689539c608d1a2073050500ad83f3aa11ccb33">https://github.com/macports/mpbb/commit/22689539c608d1a2073050500ad83f3aa11ccb33</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 2268953  mpbb: detect dependency cycles in sort-with-subports
</span>2268953 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 22689539c608d1a2073050500ad83f3aa11ccb33
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Jan 5 23:44:57 2021 +1100

<span style='display:block; white-space:pre;color:#404040;'>    mpbb: detect dependency cycles in sort-with-subports
</span>---
 tools/sort-with-subports.tcl | 39 ++++++++++++++++++++-------------------
 1 file changed, 20 insertions(+), 19 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/tools/sort-with-subports.tcl b/tools/sort-with-subports.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 6d8a272..3fa2454 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/tools/sort-with-subports.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/tools/sort-with-subports.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -64,13 +64,11 @@ proc check_failing_deps {portname} {
</span>     if {[info exists ::failingports($portname)]} {
         return $::failingports($portname)
     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {![info exists ::portdepinfo($portname)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set ::failingports($portname) [list 0 ""]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return $::failingports($portname)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Protect against dependency cycles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set ::failingports($portname) [list 3 $portname]
</span>     foreach portdep $::portdepinfo($portname) {
         set dep_ret [check_failing_deps $portdep]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        # 0 = ok, 1 = known_fail, 2 = failcache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # 0 = ok, 1 = known_fail, 2 = failcache, 3 = dep cycle
</span>         set status [lindex $dep_ret 0]
         if {$status != 0} {
             set failed_dep [lindex $dep_ret 1]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -84,6 +82,11 @@ proc check_failing_deps {portname} {
</span>                     # Exclude deps that will fail due to their own dep being in the failcache.
                     # But still output requested ports so the failure will be reported.
                     set ::outputports($portname) 0
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                } elseif {$status == 3} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {[info exists ::requestedports($portname)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        puts stderr "Excluding $::canonicalnames($portname) because of a cyclic dependency involving '$portdep'"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set ::outputports($portname) 0
</span>                 }
             }
             set ::failingports($portname) [list $status $failed_dep]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -326,24 +329,22 @@ while {[llength $todo] > 0} {
</span>             set canonicalnames($p) $portinfo(name)
         }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {![info exists outputports($p)] || $outputports($p) == 1} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set deplist [list]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach depstype $depstypes {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {[info exists portinfo($depstype)] && $portinfo($depstype) ne ""} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    foreach onedep $portinfo($depstype) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        set depname [string tolower [lindex [split [lindex $onedep 0] :] end]]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lappend deplist $depname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        if {![info exists portdepinfo($depname)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            lappend todo $depname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        if {$include_deps && ![info exists outputports($depname)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            set outputports($depname) 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set deplist [list]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach depstype $depstypes {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[info exists portinfo($depstype)] && $portinfo($depstype) ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                foreach onedep $portinfo($depstype) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    set depname [string tolower [lindex [split [lindex $onedep 0] :] end]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    lappend deplist $depname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {![info exists portdepinfo($depname)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        lappend todo $depname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    if {$include_deps && ![info exists outputports($depname)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set outputports($depname) 1
</span>                     }
                 }
             }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            set portdepinfo($p) $deplist
</span>         }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        set portdepinfo($p) $deplist
</span> 
         array unset portinfo
     }
</pre><pre style='margin:0'>

</pre>