<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/27aa86572a89ee7b7bdd4fe6c765c336527578be">https://github.com/macports/macports-base/commit/27aa86572a89ee7b7bdd4fe6c765c336527578be</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 27aa86572a89ee7b7bdd4fe6c765c336527578be
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sat Aug 10 05:27:34 2024 +1000

<span style='display:block; white-space:pre;color:#404040;'>    registry_installed: resolve ambiguity interactively
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/70514
</span><span style='display:block; white-space:pre;color:#404040;'>    (cherry picked from commit d27484c630ca98409cfcc71e4abd9ae2ae6c1696)
</span>---
 src/port/port.tcl | 35 ++++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 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 292613d44..fafa21ec9 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;'>@@ -169,17 +169,28 @@ proc registry_installed {portname {portversion ""} {require_single yes} {only_ac
</span>     }
 
     if {[llength $matches] > 1} {
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        global macports::ui_options
</span>         # set portname again since the one we were passed may not have had the correct case
         set portname [[lindex $matches 0] name]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        ui_notice "The following versions of $portname are currently installed:"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set msg "The following versions of $portname are currently installed:"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set portilist [list]
</span>         foreach i $matches {
             if {[$i state] eq "installed"} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                puts "  $portname @[$i version]_[$i revision][$i variants] (active)"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                lappend portilist "  $portname @[$i version]_[$i revision][$i variants] (active)"
</span>             } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-                puts "  $portname @[$i version]_[$i revision][$i variants]"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                lappend portilist "  $portname @[$i version]_[$i revision][$i variants]"
</span>             }
         }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        return -code error "Registry error: Please specify the full version as recorded in the port registry."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[info exists ui_options(questions_singlechoice)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set retindex [$macports::ui_options(questions_singlechoice) $msg "Choice_Q1" $portilist]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            return [lindex $matches $retindex]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            ui_notice $msg
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach portstr $portilist {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                puts $portstr
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            return -code error "Registry error: Please specify the full version as recorded in the port registry."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span>     } elseif {[llength $matches] == 0} {
         if {$portversion eq ""} {
             return -code error "Registry error: $portname not registered as installed."
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -2202,15 +2213,17 @@ proc action_activate { action portlist opts } {
</span>     }
     foreachport $portlist {
         set composite_version [composite_version $portversion $variations]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {![dict exists $options ports_activate_no-exec]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            && ![catch {registry_installed $portname $composite_version} regref]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            if {[$regref installtype] eq "image" && [registry::run_target $regref activate $options]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                continue
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[catch {registry_installed $portname $composite_version} result]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            break_softcontinue "port activate failed: $result" 1 status
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set regref $result
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![dict exists $options ports_activate_no-exec] &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            [registry::run_target $regref activate $options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } then {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            continue
</span>         }
         if {![macports::global_option_isset ports_dryrun]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            if { [catch {portimage::activate_composite $portname $composite_version $options} result] } {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            if {[catch {portimage::activate_composite $portname $composite_version $options} result]} {
</span>                 ui_debug $::errorInfo
                 break_softcontinue "port activate failed: $result" 1 status
             }
</pre><pre style='margin:0'>

</pre>