gen-lockedsig-cache 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #!/usr/bin/env python
  2. #
  3. # gen-lockedsig-cache <locked-sigs.inc> <input-cachedir> <output-cachedir>
  4. #
  5. import os
  6. import sys
  7. import glob
  8. import shutil
  9. import errno
  10. def mkdir(d):
  11. try:
  12. os.makedirs(d)
  13. except OSError as e:
  14. if e.errno != errno.EEXIST:
  15. raise e
  16. if len(sys.argv) < 3:
  17. print("Incorrect number of arguments specified")
  18. sys.exit(1)
  19. sigs = []
  20. with open(sys.argv[1]) as f:
  21. for l in f.readlines():
  22. if ":" in l:
  23. sigs.append(l.split(":")[2].split()[0])
  24. files = set()
  25. for s in sigs:
  26. p = sys.argv[2] + "/" + s[:2] + "/*" + s + "*"
  27. files |= set(glob.glob(p))
  28. p = sys.argv[2] + "/*/" + s[:2] + "/*" + s + "*"
  29. files |= set(glob.glob(p))
  30. for f in files:
  31. _, ext = os.path.splitext(f)
  32. if not ext in ['.tgz', '.siginfo', '.sig']:
  33. # Most likely a temp file, skip it
  34. continue
  35. dst = f.replace(sys.argv[2], sys.argv[3])
  36. destdir = os.path.dirname(dst)
  37. mkdir(destdir)
  38. if os.path.exists(dst):
  39. os.remove(dst)
  40. if (os.stat(f).st_dev == os.stat(destdir).st_dev):
  41. os.link(f, dst)
  42. else:
  43. shutil.copyfile(f, dst)