+def ruin_bloom(bloomfilename):
+ rbloomfilename = git.repo_rel(bloomfilename)
+ if not os.path.exists(bloomfilename):
+ log("%s\n" % bloomfilename)
+ add_error("bloom: %s not found to ruin\n" % rbloomfilename)
+ return
+ b = bloom.ShaBloom(bloomfilename, readwrite=True, expected=1)
+ b.map[16:16+2**b.bits] = '\0' * 2**b.bits
+
+
+def check_bloom(path, bloomfilename, idx):
+ rbloomfilename = git.repo_rel(bloomfilename)
+ ridx = git.repo_rel(idx)
+ if not os.path.exists(bloomfilename):
+ log("bloom: %s: does not exist.\n" % rbloomfilename)
+ return
+ b = bloom.ShaBloom(bloomfilename)
+ if not b.valid():
+ add_error("bloom: %r is invalid.\n" % rbloomfilename)
+ return
+ base = os.path.basename(idx)
+ if base not in b.idxnames:
+ log("bloom: %s does not contain the idx.\n" % rbloomfilename)
+ return
+ if base == idx:
+ idx = os.path.join(path, idx)
+ log("bloom: bloom file: %s\n" % rbloomfilename)
+ log("bloom: checking %s\n" % ridx)
+ for objsha in git.open_idx(idx):
+ if not b.exists(objsha):
+ add_error("bloom: ERROR: object %s missing"
+ % str(objsha).encode('hex'))
+
+
+_first = None
+def do_bloom(path, outfilename):
+ global _first