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