47 lines
		
	
	
		
			1009 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1009 B
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env python
 | |
| #
 | |
| # gen-lockedsig-cache <locked-sigs.inc> <input-cachedir> <output-cachedir>
 | |
| #
 | |
| 
 | |
| import os
 | |
| import sys
 | |
| import glob
 | |
| import shutil
 | |
| import errno
 | |
| 
 | |
| def mkdir(d):
 | |
|     try:
 | |
|         os.makedirs(d)
 | |
|     except OSError as e:
 | |
|         if e.errno != errno.EEXIST:
 | |
|             raise e
 | |
| 
 | |
| if len(sys.argv) < 3:
 | |
|     print("Incorrect number of arguments specified")
 | |
|     sys.exit(1)
 | |
| 
 | |
| sigs = []
 | |
| with open(sys.argv[1]) as f:
 | |
|     for l in f.readlines():
 | |
|         if ":" in l:
 | |
|             sigs.append(l.split(":")[2].split()[0])
 | |
| 
 | |
| files = set()
 | |
| for s in sigs:
 | |
|     p = sys.argv[2] + "/" + s[:2] + "/*" + s + "*"
 | |
|     files |= set(glob.glob(p))
 | |
|     p = sys.argv[2] + "/*/" + s[:2] + "/*" + s + "*"
 | |
|     files |= set(glob.glob(p))
 | |
| 
 | |
| for f in files:
 | |
|     dst = f.replace(sys.argv[2], sys.argv[3])
 | |
|     destdir = os.path.dirname(dst)
 | |
|     mkdir(destdir)
 | |
| 
 | |
|     if os.path.exists(dst):
 | |
|         os.remove(dst)
 | |
|     if (os.stat(f).st_dev == os.stat(destdir).st_dev):
 | |
|         os.link(f, dst)
 | |
|     else:
 | |
|         shutil.copyfile(f, dst)
 | 
