<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch release-2.10
in repository macports-base.

</pre>
<p><a href="https://github.com/macports/macports-base/commit/20c0e4ffd26d793387c71821f8f2514305083ccf">https://github.com/macports/macports-base/commit/20c0e4ffd26d793387c71821f8f2514305083ccf</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 20c0e4ffd26d793387c71821f8f2514305083ccf
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Fri Feb 7 17:48:57 2025 +1100

<span style='display:block; white-space:pre;color:#404040;'>    _upgrade_mport_deps: mportopen to check for universal
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Since the PortIndex, being static, may not reflect the way variants are
</span><span style='display:block; white-space:pre;color:#404040;'>    sometimes dynamically declared in the Portfile.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    (cherry picked from commit 31f7c7f9fb9e0b7b72353c13c1ac85f7d74e883b)
</span>---
 src/macports1.0/macports.tcl | 30 +++++++++++++++++++++++++++---
 1 file changed, 27 insertions(+), 3 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/macports.tcl b/src/macports1.0/macports.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index d479dd0a4..5d50e2506 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/macports.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/macports.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2901,6 +2901,7 @@ proc macports::_upgrade_mport_deps {mport target} {
</span>     set workername [ditem_key $mport workername]
     set deptypes [macports::_deptypes_for_target $target $workername]
     set portinfo [mportinfo $mport]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    set opened_mports [list]
</span>     array set depscache {}
 
     set required_archs [$workername eval [list get_canonical_archs]]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2909,15 +2910,14 @@ proc macports::_upgrade_mport_deps {mport target} {
</span>     # Pluralize "arch" appropriately.
     set s [expr {[llength $required_archs] == 1 ? "" : "s"}]
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set test _portnameactive
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    try {
</span>     foreach deptype $deptypes {
         if {![dict exists $portinfo $deptype]} {
             continue
         }
         foreach depspec [dict get $portinfo $deptype] {
             set dep_portname [$workername eval [list _get_dep_port $depspec]]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {$dep_portname ne "" && ![info exists depscache(port:$dep_portname)] && [$test $dep_portname]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {$dep_portname ne "" && ![info exists depscache(port:$dep_portname)] && [_portnameactive $dep_portname]} {
</span>                 set variants [dict create]
 
                 # check that the dep has the required archs
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2937,6 +2937,14 @@ proc macports::_upgrade_mport_deps {mport target} {
</span>                         }
                     }
                     if {[llength $missing] > 0} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+                        # open the mport since the static index doesn't necessarily reflect the currently available variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set dep_regref [lindex [registry::entry installed $dep_portname] 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set dep_variations [_variants_to_variations [$dep_regref requested_variants]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        # open with +universal since we'll want that if we end up upgrading
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        dict set dep_variations universal +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set dep_mport [mportopen [dict get $dep_portinfo porturl] $options $dep_variations]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        lappend opened_mports $dep_mport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                        set dep_portinfo [mportinfo $dep_mport]
</span>                         if {[dict exists $dep_portinfo variants] && "universal" in [dict get $dep_portinfo variants]} {
                             # dep offers a universal variant
                             if {[llength $active_archs] == 1} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2981,6 +2989,11 @@ proc macports::_upgrade_mport_deps {mport target} {
</span>             }
         }
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    } finally {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach mport $opened_mports {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            mportclose $mport
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> }
 
 proc macports::getsourcepath {url} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4376,6 +4389,17 @@ proc macports::_deptype_needs_archcheck {deptype} {
</span>     return [expr {$deptype in ${archcheck_dep_types}}]
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Given a variant string like '+foo+bar-baz', returns a dict mapping
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# each variant name to + or -, like {foo + bar + baz -}.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::_variants_to_variations {variants} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set variations [dict create]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set split_variants [string map {+ " + " - " - "} $variants]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach {sign varname} $split_variants {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        dict set variations $varname $sign
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return $variations
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> # selfupdate procedure
 proc macports::selfupdate {{options {}} {updatestatusvar {}}} {
     return [uplevel [list selfupdate::main $options $updatestatusvar]]
</pre><pre style='margin:0'>

</pre>