<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/cc766c6fd171f4fdc8449a83eca3a830409cb607">https://github.com/macports/macports-base/commit/cc766c6fd171f4fdc8449a83eca3a830409cb607</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 cc766c6fd Use registry2 for registry_installed/action_location
</span>cc766c6fd is described below

<span style='display:block; white-space:pre;color:#808000;'>commit cc766c6fd171f4fdc8449a83eca3a830409cb607
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Wed Feb 7 17:02:12 2024 +1100

<span style='display:block; white-space:pre;color:#404040;'>    Use registry2 for registry_installed/action_location
</span>---
 src/port/port.tcl | 57 +++++++++++++++++++++++++++++--------------------------
 1 file changed, 30 insertions(+), 27 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 9e79c405f..a9a0d1f4e 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;'>@@ -146,27 +146,39 @@ proc map_friendly_field_names { field } {
</span> 
 
 proc registry_installed {portname {portversion ""}} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set ilist [registry::installed $portname $portversion]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if { [llength $ilist] > 1 } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set possible_matches [registry::entry imaged $portname]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {$portversion ne ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set matches [list]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach p $possible_matches {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            # Ambiguous syntax for version, may or may not include the revision
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {"[$p version]_[$p revision][$p variants]" eq $portversion || [$p version] eq $portversion} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                lappend matches $p
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set matches $possible_matches
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[llength $matches] > 1} {
</span>         # set portname again since the one we were passed may not have had the correct case
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set portname [lindex $ilist 0 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set portname [[lindex $matches 0] name]
</span>         ui_notice "The following versions of $portname are currently installed:"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        foreach i [portlist_sortint $ilist] {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set iname [lindex $i 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set iversion [lindex $i 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set irevision [lindex $i 2]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set ivariants [lindex $i 3]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set iactive [lindex $i 4]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if { $iactive == 0 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                puts "  $iname @${iversion}_${irevision}${ivariants}"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            } elseif { $iactive == 1 } {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                puts "  $iname @${iversion}_${irevision}${ivariants} (active)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach i $matches {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[$i state] eq "installed"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts "  $portname @[$i version]_[$i revision][$i variants] (active)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts "  $portname @[$i version]_[$i revision][$i variants]"
</span>             }
         }
         return -code error "Registry error: Please specify the full version as recorded in the port registry."
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return [lindex $ilist 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } elseif {[llength $matches] == 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {$portversion eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            return -code error "Registry error: $portname not registered as installed."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            return -code error "Registry error: $portname $portversion not registered as installed."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span>     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [lindex $matches 0]
</span> }
 
 # Add the entry to the given portlist, adding default values for name,
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2088,22 +2100,13 @@ proc action_location { action portlist opts } {
</span>         return 1
     }
     foreachport $portlist {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if { [catch {set ilist [registry_installed $portname [composite_version $portversion $variations]]} result] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[catch {set ref [registry_installed $portname [composite_version $portversion $variations]]} result]} {
</span>             ui_debug $::errorInfo
             break_softcontinue "port location failed: $result" 1 status
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            # set portname again since the one we were passed may not have had the correct case
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set portname [lindex $ilist 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set version [lindex $ilist 1]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set revision [lindex $ilist 2]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set variants [lindex $ilist 3]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            set epoch [lindex $ilist 5]
</span>         }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set ref [registry::open_entry $portname $version $revision $variants $epoch]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set imagedir [registry::property_retrieve $ref location]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_notice "Port $portname ${version}_${revision}${variants} is installed as an image in:"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        puts $imagedir
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_notice "Port [$ref name] [$ref version]_[$ref revision][$ref variants] is installed as an image in:"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        puts [$ref location]
</span>     }
 
     return $status
</pre><pre style='margin:0'>

</pre>