<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-infrastructure.

</pre>
<p><a href="https://github.com/macports/macports-infrastructure/commit/e1c1b6983ca05ccb50a41cfe5696b143d4c91def">https://github.com/macports/macports-infrastructure/commit/e1c1b6983ca05ccb50a41cfe5696b143d4c91def</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit e1c1b6983ca05ccb50a41cfe5696b143d4c91def
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Thu Nov 17 03:00:44 2022 +1100

<span style='display:block; white-space:pre;color:#404040;'>    delete_old_distfiles: use filemap
</span>---
 jobs/delete_old_distfiles.tcl | 35 +++++++++++++++++++----------------
 1 file changed, 19 insertions(+), 16 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/jobs/delete_old_distfiles.tcl b/jobs/delete_old_distfiles.tcl
</span><span style='display:block; white-space:pre;color:#808080;'>index 373cec9..f17380f 100755
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/jobs/delete_old_distfiles.tcl
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/jobs/delete_old_distfiles.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -68,11 +68,12 @@ if {[catch {set res [mportlistall]} result]} {
</span>     error "listing all ports failed: $result"
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-proc add_distfiles {porturl subport distfiles_var check_platforms} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    upvar $distfiles_var portname_distfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+proc get_distfiles {porturl subport check_platforms} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set portname_distfiles [list]
</span>     if {[catch {mportopen $porturl [list subport $subport] {}} mport]} {
         ui_error "mportopen $porturl failed: $mport"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        error "couldn't open portfile for $subport"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        #error "couldn't open portfile for $subport"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return $portname_distfiles
</span>     }
     set workername [ditem_key $mport workername]
     if {![catch {$workername eval {portfetch::fetch_init; return $all_dist_files}} all_dist_files]} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -111,29 +112,32 @@ proc add_distfiles {porturl subport distfiles_var check_platforms} {
</span>         }
         mportclose $mport
     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return $portname_distfiles
</span> }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-set distfiles_to_keep [list]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+filemap create distfiles_to_keep
</span> if {[info exists keepfile]} {
     set fd [open $keepfile r]
     while {[gets $fd line] != -1} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        lappend distfiles_to_keep $line
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        filemap set distfiles_to_keep $line 1
</span>     }
     close $fd
 } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    # generate list of desired distfiles
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    # generate set of desired distfiles
</span>     set portfile_dir [file join ${tmpdir} from_archive]
     file delete -force ${portfile_dir}
     file mkdir ${portfile_dir}
     foreach {portname info_list} $result {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        set portname_distfiles [list]
</span>         array unset portinfo
         array set portinfo $info_list
         if {[lsearch -exact -nocase $portinfo(license) "nomirror"] >= 0} {
             # shouldn't be mirrored, so don't keep it if it is somehow there
             continue
         }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        add_distfiles $portinfo(porturl) $portname portname_distfiles $platforms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        foreach f [get_distfiles $portinfo(porturl) $portname $platforms] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            filemap set distfiles_to_keep $f 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span>         foreach archive [glob -nocomplain -directory $packages_root ${portname}/*.${archive_type}] {
             exec -ignorestderr tar -xjq -C ${portfile_dir} -f $archive +PORTFILE
             file rename -force ${portfile_dir}/+PORTFILE ${portfile_dir}/Portfile
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -154,15 +158,14 @@ if {[info exists keepfile]} {
</span>                     lappend this_platforms $major powerpc
                 }
             }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-            add_distfiles file://${portfile_dir} $portname portname_distfiles $this_platforms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            foreach f [get_distfiles file://${portfile_dir} $portname $this_platforms] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                filemap set distfiles_to_keep $f 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            }
</span>         }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        # deduplicate as we go
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        lappend distfiles_to_keep {*}[lsort -unique $portname_distfiles]
</span>     }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set distfiles_to_keep [lsort -unique $distfiles_to_keep]
</span>     set fd [open [file join $workdir distfiles_keep.txt] w]
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    puts $fd [join $distfiles_to_keep \n]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    puts $fd [join [filemap list distfiles_to_keep 1] \n]
</span>     close $fd
     file delete -force ${portfile_dir}
 }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -176,10 +179,10 @@ if {[info exists keepfile]} {
</span> set dirlist [list $distfiles_root]
 set fd [open [file join $workdir distfiles_delete.txt] w]
 while {$dirlist ne ""} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    set dir [lindex $dirlist 0]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    set dirlist [lreplace $dirlist 0 0]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set dir [lindex $dirlist end]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set dirlist [lreplace ${dirlist}[set dirlist {}] end end]
</span>     foreach f [glob -nocomplain -directory $dir *] {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        if {[file isfile $f] && [file mtime $f] < $start_time && [lsearch -exact -sorted $distfiles_to_keep [file tail $f]] == -1} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if {[file isfile $f] && [file mtime $f] < $start_time && ![filemap exists distfiles_to_keep [file tail $f]]} {
</span>             puts $fd $f
         } elseif {[file isdirectory $f]} {
             lappend dirlist $f
</pre><pre style='margin:0'>

</pre>