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

</pre>
<p><a href="https://github.com/macports/macports-base/commit/f1103da80e8e2435b34a49ac47ddf3971bd0cd17">https://github.com/macports/macports-base/commit/f1103da80e8e2435b34a49ac47ddf3971bd0cd17</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 f1103da80 Use _variants_to_variations throughout macports1.0
</span>f1103da80 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit f1103da80e8e2435b34a49ac47ddf3971bd0cd17
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Tue Feb 11 19:35:04 2025 +1100

<span style='display:block; white-space:pre;color:#404040;'>    Use _variants_to_variations throughout macports1.0
</span>---
 src/macports1.0/macports.tcl | 43 +++++++------------------------------------
 src/macports1.0/migrate.tcl  |  2 +-
 src/macports1.0/reclaim.tcl  | 28 ++--------------------------
 src/macports1.0/restore.tcl  | 17 ++---------------
 4 files changed, 12 insertions(+), 78 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 a168941fe..1e43ba426 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;'>@@ -2456,20 +2456,10 @@ proc mportopen_installed {name version revision variants options} {
</span>     set regref [lindex [registry::entry imaged $name $version $revision $variants] 0]
     set portfile_dir [file join ${registry.path} registry portfiles ${name}-${version}_${revision} [$regref portfile]]
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set variations [dict create]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Relies on all negated variants being at the end of requested_variants
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set minusvariant [lrange [split [$regref requested_variants] -] 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set plusvariant [lrange [split [$regref variants] +] 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach v $plusvariant {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        dict set variations $v +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach v $minusvariant {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {[string first "+" $v] == -1} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            dict set variations $v -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ui_warn "Invalid negated variant for $name @${version}_${revision}${variants}: $v"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set negative_variations [dict filter \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        [macports::_variants_to_variations [$regref requested_variants]] \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        value -]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set variations [dict merge $negative_variations [macports::_variants_to_variations [$regref variants]]]
</span> 
     dict set options subport $name
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4659,31 +4649,12 @@ proc macports::_upgrade {portname dspec variations options {depscachename {}}} {
</span>     # open the port, and update the portinfo.
     set porturl [dict get $portinfo porturl]
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Relies on all negated variants being at the end of requested_variants
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set splitvariant [split $oldrequestedvariant -]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set minusvariant [lrange $splitvariant 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set splitvariant [split [lindex $splitvariant 0] +]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set plusvariant [lrange $splitvariant 1 end]
</span>     ui_debug "Merging existing requested variants '${oldrequestedvariant}' into variants"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set oldrequestedvariations [dict create]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set oldrequestedvariations [_variants_to_variations $oldrequestedvariant]
</span>     # also save the current variants for dependency calculation
     # purposes in case we don't end up upgrading this port
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set installedvariations [dict create]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach v $plusvariant {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        dict set oldrequestedvariations $v +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach v $minusvariant {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {[string first "+" $v] == -1} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            dict set oldrequestedvariations $v -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            dict set installedvariations $v -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            ui_warn "Invalid negated variant for ${portname}: $v"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set plusvariant [lrange [split $oldvariant +] 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach v $plusvariant {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        dict set installedvariations $v +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set installedvariations [dict filter $oldrequestedvariations value -]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set installedvariations [dict merge $installedvariations [_variants_to_variations $oldvariant]]
</span> 
     # Now merge all the variations. Global (i.e. variants.conf) ones are
     # overridden by the previous requested variants, which are overridden
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/migrate.tcl b/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index ab132f889..0fad2ebe9 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/migrate.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -203,7 +203,7 @@ namespace eval migrate {
</span>                 $progress update $portfile_counter $portfile_total
                 continue
             }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            set variations [restore::variants_to_variations_arr $requested_variants]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set variations [macports::_variants_to_variations $requested_variants]
</span>             # Set same options as restore code so it's more likely the open mports
             # can be reused rather than having to be opened again.
             set options [dict create ports_requested [$port requested] subport $portname]
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/reclaim.tcl b/src/macports1.0/reclaim.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index adaa46366..b19a41935 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/reclaim.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/reclaim.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -221,18 +221,7 @@ namespace eval reclaim {
</span>     # installed with the given requested variants
     proc get_variations {installed_variants} {
         global macports::global_variations
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set vararray [dict create {*}[array get global_variations]]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set splitvariant [split $installed_variants -]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set minusvariant [lrange $splitvariant 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set splitvariant [split [lindex $splitvariant 0] +]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set plusvariant [lrange $splitvariant 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach v $plusvariant {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            dict set vararray $v +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach v $minusvariant {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            dict set vararray $v -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return $vararray
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return [dict merge [array get global_variations] [macports::_variants_to_variations $installed_variants]]
</span>     }
 
     proc load_distfile_cache {varname} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -689,20 +678,7 @@ namespace eval reclaim {
</span>         lassign [mportlookup $portname] portname portinfo
         if {[dict exists $portinfo porturl]} {
             set options [dict create subport $portname]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set splitvariant [split $requested_variants -]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set minusvariant [lrange $splitvariant 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set splitvariant [split [lindex $splitvariant 0] +]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set plusvariant [lrange $splitvariant 1 end]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set variations [dict create]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach v $plusvariant {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                dict set variations $v +
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            foreach v $minusvariant {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                if {[string first "+" $v] == -1} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                    dict set variations $v -
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set variations [macports::_variants_to_variations $requested_variants]
</span> 
             if {[catch {set mport [mportopen [dict get $portinfo porturl] $options $variations]} result]} {
                 ui_debug "unable to open port $name ${requested_variants}: $result"
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/macports1.0/restore.tcl b/src/macports1.0/restore.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 1f5c23619..433e8c6db 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/macports1.0/restore.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/macports1.0/restore.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -316,19 +316,6 @@ namespace eval restore {
</span>         }
     }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    ##
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Convert a variant string into a serialized array of variations suitable for passing to mportopen
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    proc variants_to_variations_arr {variantstr} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set split_variants_re {([-+])([[:alpha:]_]+[\w\.]*)}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set result {}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach {match sign variant} [regexp -all -inline -- $split_variants_re $variantstr] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            lappend result $variant $sign
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return $result
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     # Get the port that satisfies a depspec, with respect to the files
     # in the snapshot for path-pased deps.
     proc resolve_depspec {depspec ports snapshot_id} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -491,7 +478,7 @@ namespace eval restore {
</span>             # Open the port with the requested variants from the snapshot
             if {![dict exists $mports $portname]} {
                 set options [dict create ports_requested $requested subport $portname]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                set variations [variants_to_variations_arr $requested_variants]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set variations [macports::_variants_to_variations $requested_variants]
</span>                 if {[catch {set mport [mportopen $porturl $options $variations]} result]} {
                     $progress intermission
                     ui_error "Unable to open port '$portname' with variants '$requested_variants': $result"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -712,7 +699,7 @@ namespace eval restore {
</span>             if {![dict exists $mports $portname]} {
                 set porturl [dict get $portinfo porturl]
                 set options [dict create ports_requested $requested subport $portname]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                set variations [variants_to_variations_arr $requested_variants]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set variations [macports::_variants_to_variations $requested_variants]
</span> 
                 if {[catch {set mport [mportopen $porturl $options $variations]} result]} {
                     ui_debug $::errorInfo
</pre><pre style='margin:0'>

</pre>