<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/124263e0f23e0737499a4ec56a4e04f53dd675bc">https://github.com/macports/macports-base/commit/124263e0f23e0737499a4ec56a4e04f53dd675bc</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 124263e0f23e0737499a4ec56a4e04f53dd675bc
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Fri Apr 18 00:32:25 2025 +1000

<span style='display:block; white-space:pre;color:#404040;'>    _archive_available: also check ARCHIVE_SITE_LOCAL
</span>---
 src/port1.0/portutil.tcl | 59 ++++++++++++++++++++++++++----------------------
 1 file changed, 32 insertions(+), 27 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/src/port1.0/portutil.tcl b/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 245e0d4ab..172249bbe 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/src/port1.0/portutil.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3454,8 +3454,8 @@ proc _archive_available {} {
</span>         return 1
     }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # check if there's an archive available on the server
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    global archive_sites
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # check if there's an archive on the primary or local servers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    global archive_sites env
</span>     set mirrors macports_archives
     if {[lsearch $archive_sites macports_archives::*] == -1} {
         set mirrors [lindex [split [lindex $archive_sites 0] :] 0]
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -3465,32 +3465,37 @@ proc _archive_available {} {
</span>         return 0
     }
     set archivetype $portfetch::mirror_sites::archive_type($mirrors)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set archivename "${archiverootname}.${archivetype}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set archivename ${archiverootname}.${archivetype}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set sites_entries [list]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[info exists env(ARCHIVE_SITE_LOCAL)]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        lappend sites_entries {*}$env(ARCHIVE_SITE_LOCAL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span>     # grab first site, should conventionally be the master mirror
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set sites_entry [lindex $portfetch::mirror_sites::sites($mirrors) 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # look for and strip off any tag, which will start with the first colon after the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # first slash after the ://
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set lastcolon [string last : $sites_entry]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set aftersep [expr {[string first : $sites_entry] + 3}]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set firstslash [string first / $sites_entry $aftersep]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {$firstslash != -1 && $firstslash < $lastcolon} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        incr lastcolon -1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set site [string range $sites_entry 0 $lastcolon]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } else {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set site $sites_entry
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {[string index $site end] ne "/"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        append site /
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    append site [option archive.subdir]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set url [portfetch::assemble_url $site $archivename]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    ui_debug "Fetching $archivename archive size"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # curl getsize can return -1 instead of throwing an error for
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    # nonexistent files on FTP sites.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {![catch {curl getsize $url} size] && $size > 0
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-          && ![catch {curl getsize ${url}.rmd160} sigsize] && $sigsize > 0} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        set archive_available_result 1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    lappend sites_entries [lindex $portfetch::mirror_sites::sites($mirrors) 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    foreach sites_entry $sites_entries {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # look for and strip off any tag, which will start with the first colon after the
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # first slash after the ://
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set lastcolon [string last : $sites_entry]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set aftersep [expr {[string first : $sites_entry] + 3}]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set firstslash [string first / $sites_entry $aftersep]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {$firstslash != -1 && $firstslash < $lastcolon} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set site [string range $sites_entry 0 ${lastcolon}-1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set site $sites_entry
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set orig_site $site
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[string index $site end] ne "/"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            append site /
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        set url [portfetch::assemble_url ${site}[option archive.subdir] $archivename]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        ui_debug "Checking if $archivename exists at $site"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # curl getsize can return -1 instead of throwing an error for
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # nonexistent files on FTP sites.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {![catch {curlwrap getsize $orig_site {} $url} size] && $size > 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+              && ![catch {curlwrap getsize $orig_site {} ${url}.rmd160} sigsize] && $sigsize > 0} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set archive_available_result 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span>     }
 
     set archive_available_result 0
</pre><pre style='margin:0'>

</pre>