<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/aec060165fb2245e36c684472b70b078fae13c33">https://github.com/macports/macports-base/commit/aec060165fb2245e36c684472b70b078fae13c33</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 aec060165 Update all options for each action
</span>aec060165 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit aec060165fb2245e36c684472b70b078fae13c33
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Wed Nov 8 10:27:37 2023 +1100

<span style='display:block; white-space:pre;color:#404040;'>    Update all options for each action
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    This makes single-letter options work correctly when used after the
</span><span style='display:block; white-space:pre;color:#404040;'>    action name, which users often expect.
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Previously, the set of options used internal to the macports API was
</span><span style='display:block; white-space:pre;color:#404040;'>    fixed at the time mportinit was called. This adds a way to update them
</span><span style='display:block; white-space:pre;color:#404040;'>    later.
</span>---
 src/macports1.0/macports.tcl | 58 +++++++++++++++++++++++++++++++++++++++-----
 src/port/port.tcl            | 24 +++++++++++++++++-
 src/port1.0/portchecksum.tcl |  2 +-
 3 files changed, 76 insertions(+), 8 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 ffdf40573..5dc357d7e 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;'>@@ -125,6 +125,24 @@ proc macports::ui_isset {val} {
</span>     return 0
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Return all current ui options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::get_ui_options {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [array get macports::ui_options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Set all ui options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Takes a value previously returned by get_ui_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::set_ui_options {opts} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global macports::ui_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    array unset macports::ui_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    array set macports::ui_options $opts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # This is also a config file option, so needs special handling
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[info exists macports::ui_options(ports_verbose)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set macports::portverbose $macports::ui_options(ports_verbose)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set macports::portverbose $macports::portverbose_frozen
</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;'>+
</span> 
 # global_options accessor
 proc macports::global_option_isset {val} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -134,6 +152,27 @@ proc macports::global_option_isset {val} {
</span>     return 0
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Return all current global options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::get_global_options {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return [array get macports::global_options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Set all global options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Takes a value previously returned by get_global_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::set_global_options {opts} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global macports::global_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    array unset macports::global_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    array set macports::global_options $opts
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Options that can also be set in the config file need special handling
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach {opt var} {ports_autoclean portautoclean ports_trace porttrace} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[info exists macports::global_options($opt)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set macports::$var $macports::global_options($opt)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set macports::$var [set macports::${var}_frozen]
</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;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> proc macports::init_logging {mport} {
     if {[getuid] == 0 && [geteuid] != 0} {
         seteuid 0; setegid 0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -293,14 +332,20 @@ proc ui_message {priority prefix args} {
</span>     }
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Init (or re-init) all ui channels
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::ui_init_all {} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach priority $macports::ui_priorities {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_init $priority
</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;'>+
</span> proc macports::ui_init {priority args} {
     global macports::channels
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set default_channel [macports::ui_channels_default $priority]
</span>     # Get the list of channels.
     if {[llength [info commands ui_channels]] > 0} {
         set channels($priority) [ui_channels $priority]
     } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set channels($priority) $default_channel
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set channels($priority) [macports::ui_channels_default $priority]
</span>     }
 
     # Simplify ui_$priority.
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -664,10 +709,8 @@ proc mportinit {{up_ui_options {}} {up_options {}} {up_variations {}}} {
</span>         upvar $up_variations variations
     }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # Initialize ui_*
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    foreach priority $macports::ui_priorities {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        macports::ui_init $priority
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Initialize ui_* channels
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    macports::ui_init_all
</span> 
     package require Pextlib 1.0
     package require registry 1.0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -984,6 +1027,7 @@ Please edit sources.conf and change '$url' to '[string range $url 0 end-6]tarbal
</span>         set macports::portautoclean yes
         global macports::portautoclean
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    set macports::portautoclean_frozen $portautoclean
</span>     # whether to keep logs after successful builds
     if {![info exists keeplogs]} {
         set macports::keeplogs no
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1001,6 +1045,7 @@ Please edit sources.conf and change '$url' to '[string range $url 0 end-6]tarbal
</span>         set macports::porttrace no
         global macports::porttrace
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    set macports::porttrace_frozen $porttrace
</span>     # Check command line override for trace
     if {[info exists macports::global_options(ports_trace)]} {
         if {$macports::global_options(ports_trace) ne $porttrace} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1042,6 +1087,7 @@ Please edit sources.conf and change '$url' to '[string range $url 0 end-6]tarbal
</span>         set macports::portverbose no
         global macports::portverbose
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    set macports::portverbose_frozen $portverbose
</span>     if {[info exists macports::ui_options(ports_verbose)]} {
         if {$macports::ui_options(ports_verbose) ne $portverbose} {
             set macports::portverbose $macports::ui_options(ports_verbose)
<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 c808977f4..2d7b14a36 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;'>@@ -4749,7 +4749,9 @@ proc lock_reg_if_needed {action} {
</span> 
 proc process_cmd { argv } {
     global cmd_argc cmd_argv cmd_argn \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-           global_options global_options_base private_options ui_options \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           global_options global_options_base private_options \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           ui_options ui_options_base \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           mp_global_options_base mp_ui_options_base \
</span>            current_portdir
     set cmd_argv $argv
     set cmd_argc [llength $argv]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4788,6 +4790,8 @@ proc process_cmd { argv } {
</span>         # Reset global_options from base before each action, as we munge it just below...
         array unset global_options
         array set global_options $global_options_base
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        array unset ui_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        array set ui_options $ui_options_base
</span> 
         # Find an action to execute
         set actions [find_action $action]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -4814,6 +4818,20 @@ proc process_cmd { argv } {
</span>             break
         }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Merge new options into the macports API options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        array unset mp_global_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        array set mp_global_options $mp_global_options_base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        array set mp_global_options [array get global_options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        macports::set_global_options [array get mp_global_options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        array unset mp_ui_options
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        array set mp_ui_options $mp_ui_options_base
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        array set mp_ui_options [array get ui_options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        macports::set_ui_options [array get mp_ui_options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Some options could change verbosity, so re-init ui channels
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        macports::ui_init_all
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>         # What kind of arguments does the command expect?
         set expand [action_needs_portlist $action]
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5881,6 +5899,10 @@ set current_portdir [pwd]
</span> # Freeze global_options into global_options_base; global_options
 # will be reset to global_options_base prior to processing each command.
 set global_options_base [array get global_options]
<span style='display:block; white-space:pre;background:#e0ffe0;'>+set ui_options_base [array get ui_options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Also save those used by the macports API
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set mp_global_options_base [macports::get_global_options]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set mp_ui_options_base [macports::get_ui_options]
</span> 
 # First process any remaining args as action(s)
 set exit_status 0
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portchecksum.tcl b/src/port1.0/portchecksum.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index b4b56cef8..7c32499cc 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portchecksum.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portchecksum.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -242,7 +242,7 @@ proc portchecksum::checksum_start {args} {
</span> # Target main procedure. Verifies the checksums of all distfiles.
 #
 proc portchecksum::checksum_main {args} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    global UI_PREFIX all_dist_files checksums_array portverbose checksum.skip
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global UI_PREFIX all_dist_files checksums_array checksum.skip
</span> 
     # If no files have been downloaded, there is nothing to checksum.
     if {![info exists all_dist_files]} {
</pre><pre style='margin:0'>

</pre>