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