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