<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>