74 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			74 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
| #!/usr/bin/env python
 | |
| 
 | |
| # Copyright 2019 Google LLC. All rights reserved.
 | |
| # Use of this source code is governed by a BSD-style license that can be
 | |
| # found in the LICENSE file.
 | |
| 
 | |
| """
 | |
|  Opens |base_manifest| and copies the contents to |manifest| then traverses
 | |
|  |root_dir| and appends every file as a Fuchsia package manifest entry to
 | |
|  |manifest|.
 | |
| """
 | |
| 
 | |
| import argparse
 | |
| import os
 | |
| import subprocess
 | |
| 
 | |
| parser = argparse.ArgumentParser()
 | |
| parser.add_argument('--root_dir', dest='root_dir', action='store', required=True)
 | |
| parser.add_argument('--base_manifest', dest='base_manifest', action='store', required=True)
 | |
| parser.add_argument('--manifest', dest='manifest', action='store', required=True)
 | |
| parser.add_argument('--deps', dest='deps', action='store', required=True)
 | |
| parser.add_argument('--root_build_dir', dest='root_build_dir', action='store', required=True)
 | |
| args = parser.parse_args()
 | |
| 
 | |
| root_dir = args.root_dir
 | |
| if not os.path.exists(root_dir):
 | |
|     print "--root_dir path specified: " + root_dir + " doesn't exist.\n"
 | |
|     exit(1)
 | |
| 
 | |
| base_manifest = args.base_manifest
 | |
| if not os.path.exists(base_manifest):
 | |
|     print "--base_manifest specified: " + base_manifest + " doesn't exist.\n"
 | |
|     exit(1)
 | |
| 
 | |
| manifest = args.manifest
 | |
| root_build_dir = args.root_build_dir
 | |
| 
 | |
| # Prepend |base_manifest| contents to |manifest|.
 | |
| deps_file = open(args.deps, 'w')
 | |
| relative_path = os.path.relpath(args.manifest, root_build_dir)
 | |
| deps_file.write('%s: ' % relative_path)
 | |
| 
 | |
| out_file = open(manifest, 'w')
 | |
| with open(base_manifest, 'r') as in_file:
 | |
|     base_content = in_file.readlines()
 | |
| 
 | |
| for base_line in base_content:
 | |
|     out_file.write(base_line)
 | |
|     base_line_list = base_line.split("=")
 | |
|     if len(base_line_list) != 2:
 | |
|         print "Error: Base manifest line format error. Expected \"lhs=rhs\" but got: " + base_line
 | |
|         exit(1)
 | |
|     base_line_rhs = base_line_list[1].strip()
 | |
|     relative_path = os.path.relpath(base_line_rhs, root_build_dir)
 | |
|     deps_file.write(relative_path + " ")
 | |
| 
 | |
| # Append all files discovered under |root_dir| to |manifest|.
 | |
| files = subprocess.check_output(["find", root_dir, "-type", "f"])
 | |
| file_lines = files.splitlines()
 | |
| 
 | |
| for file in file_lines:
 | |
|         source = file
 | |
|         if not source.startswith(root_dir):
 | |
|             print "Error: source path " + source + " is not under |root_dir|\n"
 | |
|             exit(1)
 | |
|         dest = source[len(root_dir):]
 | |
|         out_file.write('data%s=' % dest)
 | |
|         out_file.write('%s\n' % source)
 | |
|         relative_path = os.path.relpath(source, root_build_dir)
 | |
|         deps_file.write(relative_path + " ")
 | |
| 
 | |
| out_file.close()
 | |
| deps_file.close()
 |