gen-lockedsig-cache 1009 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. dst = f.replace(sys.argv[2], sys.argv[3])
  32. destdir = os.path.dirname(dst)
  33. mkdir(destdir)
  34. if os.path.exists(dst):
  35. os.remove(dst)
  36. if (os.stat(f).st_dev == os.stat(destdir).st_dev):
  37. os.link(f, dst)
  38. else:
  39. shutil.copyfile(f, dst)