<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/3eefad3b67de2f3e6f114e8b28738b8b7030eb6f">https://github.com/macports/mpbb/commit/3eefad3b67de2f3e6f114e8b28738b8b7030eb6f</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 3eefad3  mpbb: clear failcache entries for old port versions
</span>3eefad3 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 3eefad3b67de2f3e6f114e8b28738b8b7030eb6f
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Mon Jan 4 17:41:37 2021 +1100

<span style='display:block; white-space:pre;color:#404040;'>    mpbb: clear failcache entries for old port versions
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Without this, the number of failcache entries would increase forever,
</span><span style='display:block; white-space:pre;color:#404040;'>    as only the entry with the current hash is deleted upon success, while
</span><span style='display:block; white-space:pre;color:#404040;'>    it's usually an older version with a different hash that failed.
</span>---
 functions | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/functions b/functions
</span><span style='display:block; white-space:pre;color:#808080;'>index 797b7a1..47d6c73 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/functions
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/functions
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -148,6 +148,23 @@ failcache_key() {
</span>     echo "$port $canonical_variants $checksum"
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+## Delete stale failcache entries for a given port
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+#
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Valid arguments are the first and last parts of a key generated by
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# failcache_key in order, i.e. portname and checksum.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# Returns 1 if there were no entries for the given port, 0 otherwise.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+failcache_cleanup() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if ! compgen -G "${option_failcache_dir}/${1} *" > /dev/null; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    for f in "${option_failcache_dir}/${1} "*; do
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        if [ "$(basename "$f" | cut -d ' ' -f3)" != "${2}" ]; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+            rm -f "${f}"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    done
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> ## Test whether a given port with variants has previously failed.
 #
 # Valid arguments are a port name, optionally followed by a variant
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -161,6 +178,12 @@ failcache_test() {
</span>         return 1
     fi
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    # Delete stale entries first
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if ! failcache_cleanup $(echo "${key}" | cut -d ' ' -f1) $(echo "${key}" | cut -d ' ' -f3); then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # Nothing in the cache for this port, no need to check further
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        return 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span>     if [ -f "${option_failcache_dir}/${key}" ]; then
         printf "port %s previously failed in build %s\n" "${key}" "$(<"${option_failcache_dir}/${key}")"
         return 1
</pre><pre style='margin:0'>

</pre>