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

</pre>
<p><a href="https://github.com/macports/mpbb/commit/9cae30a703869f742f71257e238daacd013ee29a">https://github.com/macports/mpbb/commit/9cae30a703869f742f71257e238daacd013ee29a</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 9cae30a703869f742f71257e238daacd013ee29a
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Mon May 16 23:41:42 2022 +1000

<span style='display:block; white-space:pre;color:#404040;'>    mpbb-cleanup: clean out failcache daily
</span>---
 mpbb-cleanup                |  6 ++++++
 tools/failcache-cleanup.tcl | 44 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 50 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/mpbb-cleanup b/mpbb-cleanup
</span><span style='display:block; white-space:pre;color:#808080;'>index 0e5b570..5d4b177 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/mpbb-cleanup
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/mpbb-cleanup
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -90,6 +90,12 @@ cleanup() {
</span>             find "${option_prefix}/var/macports/distfiles" -type f \! -newerat "4 hours ago" -print -delete | sed -E 's/^/Deleting distfile /'
             find "${option_prefix}/var/macports/distfiles" -type d -mindepth 1 -empty -print -delete | sed -E 's/^/Deleting directory /'
         fi
<span style='display:block; white-space:pre;background:#e0ffe0;'>+        # clean out failcache at most once every 24 hours
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        timestamp="${option_work_dir}/failcache-cleanup.timestamp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if [[ ! -f "$timestamp" || $(($(date +%s) - $(stat -f %m "$timestamp"))) -gt 86400 ]]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            "$(readlink "${option_prefix}/bin/port-tclsh")" "${thisdir}/tools/failcache-cleanup.tcl" --failcache_dir "${option_failcache_dir}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            touch "$timestamp"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        fi
</span>     fi
     echo
     for dir in build logs; do
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/tools/failcache-cleanup.tcl b/tools/failcache-cleanup.tcl
</span>new file mode 100755
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..e840919
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/tools/failcache-cleanup.tcl
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,44 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#!/usr/bin/env port-tclsh
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# clear out stale entries and entries for deleted ports from the failcache
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+package require macports
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+mportinit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+source [file join [file dirname [info script]] failcache.tcl]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+set failcache_dir ""
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+while {[string range [lindex $::argv 0] 0 1] eq "--"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    switch -- [lindex $::argv 0] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        --failcache_dir {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set failcache_dir [lindex $::argv 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            set ::argv [lrange $::argv 1 end]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        default {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            error "unknown option: [lindex $::argv 0]"
</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;'>+    set ::argv [lrange $::argv 1 end]
</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;'>+if {$failcache_dir eq ""} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    error "must specify --failcache_dir"
</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;'>+ foreach f [glob -directory $failcache_dir -nocomplain -tails *] {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    lassign [split $f " "] entry_portname entry_variants entry_hash
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set result [mportlookup $entry_portname]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {[llength $result] < 2} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        puts "Port '$entry_portname' no longer exists; removing failcache entry $f"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file delete -force [file join $failcache_dir $f]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        continue
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    array unset portinfo
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    array set portinfo [lindex $result 1]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    set hash [port_files_checksum $portinfo(porturl)]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {$entry_hash ne $hash} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        puts "Removing stale failcache entry: $f"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        file delete -force [file join $failcache_dir $f]
</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></pre><pre style='margin:0'>

</pre>