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