<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/b0cba2bb51d822dfe21e62a2a4c4acb5fa3f4e02">https://github.com/macports/macports-base/commit/b0cba2bb51d822dfe21e62a2a4c4acb5fa3f4e02</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit b0cba2bb51d822dfe21e62a2a4c4acb5fa3f4e02
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sun Feb 25 18:38:26 2024 +1100
<span style='display:block; white-space:pre;color:#404040;'> Load caches and quick index on demand
</span>---
src/macports1.0/macports.tcl | 63 +++++++++++++++++++++++++++++++-------------
1 file changed, 44 insertions(+), 19 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 c93d761c8..fa53d858e 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;'>@@ -1587,8 +1587,9 @@ match macports.conf.default."
</span> # add ccache to environment
set env(CCACHE_DIR) $macports::ccache_dir
<span style='display:block; white-space:pre;background:#ffe0e0;'>- # load cached ping times
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set macports::ping_cache [macports::load_cache pingtimes]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # load caches on demand
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace add variable macports::compiler_version_cache read macports::load_compiler_version_cache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace add variable macports::ping_cache {read write} macports::load_ping_cache
</span> if {![info exists macports::host_blacklist]} {
set macports::host_blacklist {}
}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1599,7 +1600,7 @@ match macports.conf.default."
</span>
# load the quick index unless told not to
if {![macports::global_option_isset ports_no_load_quick_index]} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>- _mports_load_quickindex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace add variable macports::quick_index {read write} macports::load_quickindex
</span> }
if {![info exists macports::ui_options(ports_no_old_index_warning)]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3514,6 +3515,15 @@ proc mportlistall {} {
</span> return $matches
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Deferred loading of quick index
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::load_quickindex {name1 name2 op} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable quick_index
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace remove variable quick_index {read write} macports::load_quickindex
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$op eq "read"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _mports_load_quickindex
</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> ##
# Loads PortIndex.quick from each source into the quick_index, generating it
# first if necessary. Private API of macports1.0, do not use this from outside
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5945,6 +5955,17 @@ proc macports::revupgrade_buildgraph {port stackname adjlistname revadjlistname
</span> }
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Deferred loading of ping times cache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::load_ping_cache {name1 name2 op} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable ping_cache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace remove variable ping_cache {read write} macports::load_ping_cache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {$op eq "write"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set ping_cache [dict merge [load_cache pingtimes] $ping_cache]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set ping_cache [load_cache pingtimes]
</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> # get cached ping time for host, modified by blacklist and preferred list
proc macports::get_pingtime {host} {
global macports::ping_cache macports::host_cache
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5981,26 +6002,30 @@ proc macports::set_pingtime {host ms} {
</span> dict set ::macports::ping_cache $host [list $ms [clock seconds]]
}
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# Deferred loading of compiler version cache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc macports::load_compiler_version_cache {name1 name2 op} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ variable compiler_version_cache; variable xcodeversion; variable xcodecltversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ trace remove variable compiler_version_cache read macports::load_compiler_version_cache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compiler_version_cache [load_cache compiler_versions]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Invalidate if Xcode or CLT version changed
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {([dict exists $compiler_version_cache xcodeversion]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && $xcodeversion ne [dict get $compiler_version_cache xcodeversion])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ || ([dict exists $compiler_version_cache xcodecltversion]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ && $xcodecltversion ne [dict get $compiler_version_cache xcodecltversion])} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set compiler_version_cache [dict create]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ if {[dict size $compiler_version_cache] == 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set compiler_version_cache xcodeversion $xcodeversion
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ dict set compiler_version_cache xcodecltversion $xcodecltversion
</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> # get the version of a compiler (cached)
proc macports::get_compiler_version {compiler developer_dir} {
variable compiler_version_cache
<span style='display:block; white-space:pre;background:#ffe0e0;'>- if {![info exists compiler_version_cache]} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- variable xcodeversion; variable xcodecltversion; variable portdbpath
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set compiler_version_cache [load_cache compiler_versions]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Invalidate if Xcode or CLT version changed
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {([dict exists $compiler_version_cache xcodeversion]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && $xcodeversion ne [dict get $compiler_version_cache xcodeversion])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- || ([dict exists $compiler_version_cache xcodecltversion]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- && $xcodecltversion ne [dict get $compiler_version_cache xcodecltversion])} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- set compiler_version_cache [dict create]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if {[dict size $compiler_version_cache] == 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dict set compiler_version_cache xcodeversion $xcodeversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- dict set compiler_version_cache xcodecltversion $xcodecltversion
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> if {[dict exists $compiler_version_cache versions $developer_dir $compiler]} {
return [dict get $compiler_version_cache versions $developer_dir $compiler]
}
</pre><pre style='margin:0'>
</pre>