<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/091266c6b2e3602d94076a1358f4a2d29f9575a4">https://github.com/macports/mpbb/commit/091266c6b2e3602d94076a1358f4a2d29f9575a4</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 091266c  sort-with-subports: don't process unneeded deps
</span>091266c is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 091266c6b2e3602d94076a1358f4a2d29f9575a4
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Thu Jan 7 22:35:10 2021 +1100

<span style='display:block; white-space:pre;color:#404040;'>    sort-with-subports: don't process unneeded deps
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Don't process deps of excluded requested ports, unless they are a dep
</span><span style='display:block; white-space:pre;color:#404040;'>    of something else.
</span>---
 tools/sort-with-subports.tcl | 60 ++++++++++++++++++++++++++------------------
 1 file changed, 36 insertions(+), 24 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 5e5ddfc..cf6dc06 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;'>@@ -74,7 +74,7 @@ proc check_failing_deps {portname} {
</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:#ffe0e0;'>-            if {[info exists ::outputports($portname)] && $::outputports($portname) == 1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {$::outputports($portname) == 1} {
</span>                 if {$status == 1} {
                     if {[info exists ::requestedports($portname)]} {
                         puts stderr "Excluding $::canonicalnames($portname) because its dependency '$failed_dep' is known to fail"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -236,7 +236,7 @@ while {[llength $todo] > 0} {
</span>         }
 
         set opened 0
<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:#e0ffe0;'>+        if {$outputports($p) == 1} {
</span>             if {[info exists portinfo(replaced_by)]} {
                 if {[info exists requestedports($p)]} {
                     puts stderr "Excluding $portinfo(name) because it is replaced by $portinfo(replaced_by)"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -262,7 +262,7 @@ while {[llength $todo] > 0} {
</span>                     set outputports($p) 0
                 }
             }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {$archive_site_public ne "" && [info exists outputports($p)] && $outputports($p) == 1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {$archive_site_public ne "" && $outputports($p) == 1} {
</span>                 # FIXME: support non-default variants
                 if {$opened == 1 || ![catch {mportopen $portinfo(porturl) [list subport $portinfo(name)] ""} result]} {
                     if {$opened != 1} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -295,7 +295,7 @@ while {[llength $todo] > 0} {
</span>                     }
                 }
             }
<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:#e0ffe0;'>+            if {$outputports($p) == 1 &&
</span>                 ($::macports::os_major <= 10 || $::macports::os_major >= 18)} {
                 if {$opened == 1 || ![catch {mportopen $portinfo(porturl) [list subport $portinfo(name)] ""} result]} {
                     if {$opened != 1} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -354,35 +354,47 @@ while {[llength $todo] > 0} {
</span>             mportclose $mport
         }
 
<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:#e0ffe0;'>+        if {$outputports($p) == 1} {
</span>             set canonicalnames($p) $portinfo(name)
         }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set portdepinfo($p) [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;'>-                    if {[string match port:* $onedep]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lappend portdepinfo($p) $depname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        # soft deps are installed before their dependents, but
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        # don't cause exclusion if they are failing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        # real problematic example: bin:xattr:xattr
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lappend portsoftdeps($p) $depname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    if {![info exists outputports($depname)]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        lappend todo $depname
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                        if {$include_deps} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            set outputports($depname) 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # If $requestedports($p) == 0, we're seeing the port again as a dependency of
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # something else and thus need to follow its deps even if it was excluded.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {$outputports($p) == 1 || ![info exists requestedports($p)] || $requestedports($p) == 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set portdepinfo($p) [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;'>+                        if {[string match port:* $onedep]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            lappend portdepinfo($p) $depname
</span>                         } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                            set outputports($depname) 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            # soft deps are installed before their dependents, but
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            # don't cause exclusion if they are failing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            # real problematic example: bin:xattr:xattr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            lappend portsoftdeps($p) $depname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        if {![info exists outputports($depname)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            lappend todo $depname
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            if {$include_deps} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                set outputports($depname) 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                set outputports($depname) 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        } elseif {[info exists requestedports($depname)] && ![info exists portdepinfo($depname)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            # may or may not have been checked for exclusion yet
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                            lappend todo $depname
</span>                         }
                     }
                 }
             }
         }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Mark as having been processed at least once.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[info exists requestedports($p)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set requestedports($p) 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>         array unset portinfo
     }
 }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -404,7 +416,7 @@ foreach portname $sorted_portnames {
</span> }
 
 foreach portname $portlist {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {[info exists outputports($portname)] && $outputports($portname) == 1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {$outputports($portname) == 1} {
</span>         puts $canonicalnames($portname)
     }
 }
</pre><pre style='margin:0'>

</pre>