about summary refs log tree commit diff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/merge-abilist.awk9
1 files changed, 8 insertions, 1 deletions
diff --git a/scripts/merge-abilist.awk b/scripts/merge-abilist.awk
index 88ca0b08ea..91999d9221 100644
--- a/scripts/merge-abilist.awk
+++ b/scripts/merge-abilist.awk
@@ -131,15 +131,22 @@ END {
     # S[I] is a sorted, comma-separated list of SET:CONFIG pairs.
     # All we have to do is pretty-print them.
     nc = split(s[i], c, ",");
-    lastvers = "";
+    lastvers = lastconf = "";
     for (j = 1; j <= nc; ++j) {
       split(c[j], temp, ":");
       version = temp[1];
       conf = temp[2];
       if (version != lastvers)
 	printf "%s%s", (lastvers != "" ? "\n| " : ""), version;
+      # Hack: if CONF is foo.*/bar and LASTCONF was foo.*,
+      # then we can omit the foo.*/bar since foo.* matches already.
+      # Note we don't update LASTCONF, so foo.*/baz next time will match too.
+      else if ((slash = index(conf, ".*/")) > 0 && \
+	       substr(conf, 1, slash + 2 - 1) == lastconf)
+        continue;
       printf " %s", conf;
       lastvers = version;
+      lastconf = conf;
     }
     print "";
     outpipe = "sort";