<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/e1606eb37b09559289fac7a8bc9ee3831fabc900">https://github.com/macports/macports-base/commit/e1606eb37b09559289fac7a8bc9ee3831fabc900</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit e1606eb37b09559289fac7a8bc9ee3831fabc900
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sun Feb 11 03:56:29 2024 +1100

<span style='display:block; white-space:pre;color:#404040;'>    Use dict in element, add_multiple_ports, parsePortSpec
</span>---
 src/port/port.tcl | 51 +++++++++++++++++++++++++--------------------------
 1 file changed, 25 insertions(+), 26 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port/port.tcl b/src/port/port.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 89b81fad0..34b3ce596 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port/port.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1039,8 +1039,6 @@ proc element { resname } {
</span>     set url ""
     set name ""
     set version ""
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    array unset requested_variants
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    array unset options
</span> 
     set token [lookahead]
     switch -regex -matchvar matchvar -- $token {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1194,16 +1192,17 @@ proc element { resname } {
</span>             set name [url_to_portname $token]
             if {$name ne ""} {
                 parsePortSpec version requested_variants options
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                set templist [list url $token \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                set tempentry [dict create \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  url $token \
</span>                   name $name \
                   version $version \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                  requested_variants [array get requested_variants] \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                  variants [array get requested_variants] \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                  options [array get options]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  requested_variants $requested_variants \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  variants $requested_variants \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                  options $options]
</span>                 if {$version ne ""} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                    lappend templist metadata [list explicit_version 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    dict set tempentry metadata [dict create explicit_version 1]
</span>                 }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                add_to_portlist_with_defaults reslist $templist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                add_to_portlist_with_defaults reslist $tempentry
</span>                 set el 1
             } else {
                 ui_error "Can't open URL '$token' as a port"
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1214,16 +1213,17 @@ proc element { resname } {
</span>         default             { # Treat anything else as a portspec (portname, version, variants, options
             # or some combination thereof).
             parseFullPortSpec url name version requested_variants options
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            set templist [list url $url \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set tempentry [dict create \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              url $url \
</span>               name $name \
               version $version \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-              requested_variants [array get requested_variants] \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-              variants [array get requested_variants] \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-              options [array get options]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              requested_variants $requested_variants \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              variants $requested_variants \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              options $options]
</span>             if {$version ne ""} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                lappend templist metadata [list explicit_version 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                dict set tempentry metadata [dict create explicit_version 1]
</span>             }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            add_to_portlist_with_defaults reslist $templist
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            add_to_portlist_with_defaults reslist $tempentry
</span>             set el 1
         }
     }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1272,14 +1272,14 @@ proc add_multiple_ports { resname ports {remainder ""} } {
</span>         dict set overrides version $version
         dict set overrides metadata [dict create explicit_version 1]]
     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {[array size variants] > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[dict size $variants] > 0} {
</span>         # we always record the requested variants separately,
         # but requested ones always override existing ones
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        dict set overrides requested_variants [array get variants]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        dict set overrides variants [array get variants]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        dict set overrides requested_variants $variants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        dict set overrides variants $variants
</span>     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {[array size options] > 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        dict set overrides options [array get options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[dict size $options] > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        dict set overrides options $options
</span>     }
 
     add_ports_to_portlist_with_defaults reslist $ports $overrides
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1294,8 +1294,8 @@ proc parseFullPortSpec { urlname namename vername varname optname } {
</span> 
     set portname ""
     set portversion ""
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    array unset portvariants
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    array unset portoptions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set portvariants ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set portoptions ""
</span> 
     if { [moreargs] } {
         # Look first for a potential portname
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1355,9 +1355,8 @@ proc parsePortSpec { vername varname optname {remainder ""} } {
</span>     upvar $optname portoptions
 
     set portversion ""
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    array unset portoptions
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    array set portoptions [array get ::global_options]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    array unset portvariants
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set portoptions [dict create {*}[array get ::global_options]]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set portvariants ""
</span> 
     # Parse port version/variants/options
     set opt $remainder
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1406,12 +1405,12 @@ proc parsePortSpec { vername varname optname {remainder ""} } {
</span>             # Look first for a variable setting: VARNAME=VALUE
             if {[regexp {^([[:alpha:]_]+[\w\.]*)=(.*)} $opt match key val] == 1} {
                 # It's a variable setting
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                set portoptions($key) $val
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                dict set portoptions $key $val
</span>                 set opt ""
                 set consumed 1
             } elseif {[regexp {^([-+])([[:alpha:]_]+[\w\.]*)} $opt match sign variant] == 1} {
                 # It's a variant
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                set portvariants($variant) $sign
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                dict set portvariants $variant $sign
</span>                 set opt [string range $opt [expr {[string length $variant] + 1}] end]
                 set consumed 1
             } else {
</pre><pre style='margin:0'>

</pre>