Loading tools/releasetools/common.py +8 −4 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ def Run(args, verbose=None, **kwargs): def RunAndWait(args, verbose=None, **kwargs): """Runs the given command and returns the exit code. """Runs the given command waiting for it to complete. Args: args: The command represented as a list of strings. Loading @@ -201,12 +201,16 @@ def RunAndWait(args, verbose=None, **kwargs): stdin, etc. stdout and stderr will default to subprocess.PIPE and subprocess.STDOUT respectively unless caller specifies any of them. Returns: The process return code. Raises: ExternalError: On non-zero exit from the command. """ proc = Run(args, verbose=verbose, **kwargs) proc.wait() return proc.returncode if proc.returncode != 0: raise ExternalError( "Failed to run command '{}' (exit code {})".format( args, proc.returncode)) def RunAndCheckOutput(args, verbose=None, **kwargs): Loading tools/releasetools/merge_target_files.py +15 −75 Original line number Diff line number Diff line Loading @@ -142,9 +142,6 @@ def extract_items(target_files, target_files_temp_dir, extract_item_list): will land. extract_item_list: A list of items to extract. Returns: On success, 0. Otherwise, a non-zero exit code from unzip. """ logger.info('extracting from %s', target_files) Loading Loading @@ -178,13 +175,7 @@ def extract_items(target_files, target_files_temp_dir, extract_item_list): target_files ] + filtered_extract_item_list result = common.RunAndWait(command, verbose=True) if result != 0: logger.error('extract_items command %s failed %d', str(command), result) return result return 0 common.RunAndWait(command, verbose=True) def process_ab_partitions_txt( Loading Loading @@ -305,9 +296,6 @@ def process_file_contexts_bin(temp_dir, output_target_files_temp_dir): already contain plat_file_contexts and vendor_file_contexts (in the appropriate sub directories), and to which META/file_contexts.bin will be written. Returns: On success, 0. Otherwise, a non-zero exit code. """ # To create a merged file_contexts.bin file, we use the system and vendor Loading Loading @@ -352,12 +340,7 @@ def process_file_contexts_bin(temp_dir, output_target_files_temp_dir): sorted_file_contexts_txt = os.path.join(temp_dir, 'sorted_file_contexts.txt') command = ['fc_sort', merged_file_contexts_txt, sorted_file_contexts_txt] # TODO(b/124521133): Refector RunAndWait to raise exception on failure. result = common.RunAndWait(command, verbose=True) if result != 0: return result common.RunAndWait(command, verbose=True) # Finally, the compile step creates the final META/file_contexts.bin. Loading @@ -371,12 +354,7 @@ def process_file_contexts_bin(temp_dir, output_target_files_temp_dir): sorted_file_contexts_txt, ] result = common.RunAndWait(command, verbose=True) if result != 0: return result return 0 common.RunAndWait(command, verbose=True) def process_special_cases( Loading @@ -402,9 +380,6 @@ def process_special_cases( output_target_files_temp_dir: The name of a directory that will be used to create the output target files package after all the special cases are processed. Returns: On success, 0. Otherwise, a non-zero exit code. """ process_ab_partitions_txt( Loading @@ -417,15 +392,10 @@ def process_special_cases( other_target_files_temp_dir=other_target_files_temp_dir, output_target_files_temp_dir=output_target_files_temp_dir) result = process_file_contexts_bin( process_file_contexts_bin( temp_dir=temp_dir, output_target_files_temp_dir=output_target_files_temp_dir) if result != 0: return result return 0 def merge_target_files( temp_dir, Loading @@ -451,9 +421,6 @@ def merge_target_files( output_target_files: The name of the output zip archive target files package created by merging system and other. Returns: On success, 0. Otherwise, a non-zero exit code. """ # Create directory names that we'll use when we extract files from system, Loading @@ -467,64 +434,49 @@ def merge_target_files( # We extract them directly into the output temporary directory since the # items do not need special case processing. result = extract_items( extract_items( target_files=system_target_files, target_files_temp_dir=output_target_files_temp_dir, extract_item_list=system_extract_as_is_item_list) if result != 0: return result # Extract "as is" items from the input other partial target files package. We # extract them directly into the output temporary directory since the items # do not need special case processing. result = extract_items( extract_items( target_files=other_target_files, target_files_temp_dir=output_target_files_temp_dir, extract_item_list=other_extract_as_is_item_list) if result != 0: return result # Extract "special" items from the input system partial target files package. # We extract these items to different directory since they require special # processing before they will end up in the output directory. result = extract_items( extract_items( target_files=system_target_files, target_files_temp_dir=system_target_files_temp_dir, extract_item_list=system_extract_special_item_list) if result != 0: return result # Extract "special" items from the input other partial target files package. # We extract these items to different directory since they require special # processing before they will end up in the output directory. result = extract_items( extract_items( target_files=other_target_files, target_files_temp_dir=other_target_files_temp_dir, extract_item_list=other_extract_special_item_list) if result != 0: return result # Now that the temporary directories contain all the extracted files, perform # special case processing on any items that need it. After this function # completes successfully, all the files we need to create the output target # files package are in place. result = process_special_cases( process_special_cases( temp_dir=temp_dir, system_target_files_temp_dir=system_target_files_temp_dir, other_target_files_temp_dir=other_target_files_temp_dir, output_target_files_temp_dir=output_target_files_temp_dir) if result != 0: return result # Regenerate IMAGES in the temporary directory. add_img_args = [ Loading Loading @@ -571,13 +523,7 @@ def merge_target_files( '-l', output_target_files_list, ] logger.info('creating %s', output_target_files) result = common.RunAndWait(command, verbose=True) if result != 0: logger.error('zip command %s failed %d', str(command), result) return result return 0 common.RunAndWait(command, verbose=True) def merge_target_files_with_temp_dir( Loading @@ -601,9 +547,6 @@ def merge_target_files_with_temp_dir( package created by merging system and other. keep_tmp: Keep the temporary directory after processing is complete. Returns: On success, 0. Otherwise, a non-zero exit code. """ # Create a temporary directory. This will serve as the parent of directories Loading @@ -619,7 +562,7 @@ def merge_target_files_with_temp_dir( temp_dir = common.MakeTempDir(prefix='merge_target_files_') try: return merge_target_files( merge_target_files( temp_dir=temp_dir, system_target_files=system_target_files, other_target_files=other_target_files, Loading @@ -638,9 +581,6 @@ def main(): Process command line arguments, then call merge_target_files_with_temp_dir to perform the heavy lifting. Returns: On success, 0. Otherwise, a non-zero exit code. """ common.InitLogging() Loading Loading @@ -673,9 +613,9 @@ def main(): OPTIONS.other_target_files is None or OPTIONS.output_target_files is None): common.Usage(__doc__) return 1 sys.exit(1) return merge_target_files_with_temp_dir( merge_target_files_with_temp_dir( system_target_files=OPTIONS.system_target_files, other_target_files=OPTIONS.other_target_files, output_target_files=OPTIONS.output_target_files, Loading @@ -683,4 +623,4 @@ def main(): if __name__ == '__main__': sys.exit(main()) main() Loading
tools/releasetools/common.py +8 −4 Original line number Diff line number Diff line Loading @@ -191,7 +191,7 @@ def Run(args, verbose=None, **kwargs): def RunAndWait(args, verbose=None, **kwargs): """Runs the given command and returns the exit code. """Runs the given command waiting for it to complete. Args: args: The command represented as a list of strings. Loading @@ -201,12 +201,16 @@ def RunAndWait(args, verbose=None, **kwargs): stdin, etc. stdout and stderr will default to subprocess.PIPE and subprocess.STDOUT respectively unless caller specifies any of them. Returns: The process return code. Raises: ExternalError: On non-zero exit from the command. """ proc = Run(args, verbose=verbose, **kwargs) proc.wait() return proc.returncode if proc.returncode != 0: raise ExternalError( "Failed to run command '{}' (exit code {})".format( args, proc.returncode)) def RunAndCheckOutput(args, verbose=None, **kwargs): Loading
tools/releasetools/merge_target_files.py +15 −75 Original line number Diff line number Diff line Loading @@ -142,9 +142,6 @@ def extract_items(target_files, target_files_temp_dir, extract_item_list): will land. extract_item_list: A list of items to extract. Returns: On success, 0. Otherwise, a non-zero exit code from unzip. """ logger.info('extracting from %s', target_files) Loading Loading @@ -178,13 +175,7 @@ def extract_items(target_files, target_files_temp_dir, extract_item_list): target_files ] + filtered_extract_item_list result = common.RunAndWait(command, verbose=True) if result != 0: logger.error('extract_items command %s failed %d', str(command), result) return result return 0 common.RunAndWait(command, verbose=True) def process_ab_partitions_txt( Loading Loading @@ -305,9 +296,6 @@ def process_file_contexts_bin(temp_dir, output_target_files_temp_dir): already contain plat_file_contexts and vendor_file_contexts (in the appropriate sub directories), and to which META/file_contexts.bin will be written. Returns: On success, 0. Otherwise, a non-zero exit code. """ # To create a merged file_contexts.bin file, we use the system and vendor Loading Loading @@ -352,12 +340,7 @@ def process_file_contexts_bin(temp_dir, output_target_files_temp_dir): sorted_file_contexts_txt = os.path.join(temp_dir, 'sorted_file_contexts.txt') command = ['fc_sort', merged_file_contexts_txt, sorted_file_contexts_txt] # TODO(b/124521133): Refector RunAndWait to raise exception on failure. result = common.RunAndWait(command, verbose=True) if result != 0: return result common.RunAndWait(command, verbose=True) # Finally, the compile step creates the final META/file_contexts.bin. Loading @@ -371,12 +354,7 @@ def process_file_contexts_bin(temp_dir, output_target_files_temp_dir): sorted_file_contexts_txt, ] result = common.RunAndWait(command, verbose=True) if result != 0: return result return 0 common.RunAndWait(command, verbose=True) def process_special_cases( Loading @@ -402,9 +380,6 @@ def process_special_cases( output_target_files_temp_dir: The name of a directory that will be used to create the output target files package after all the special cases are processed. Returns: On success, 0. Otherwise, a non-zero exit code. """ process_ab_partitions_txt( Loading @@ -417,15 +392,10 @@ def process_special_cases( other_target_files_temp_dir=other_target_files_temp_dir, output_target_files_temp_dir=output_target_files_temp_dir) result = process_file_contexts_bin( process_file_contexts_bin( temp_dir=temp_dir, output_target_files_temp_dir=output_target_files_temp_dir) if result != 0: return result return 0 def merge_target_files( temp_dir, Loading @@ -451,9 +421,6 @@ def merge_target_files( output_target_files: The name of the output zip archive target files package created by merging system and other. Returns: On success, 0. Otherwise, a non-zero exit code. """ # Create directory names that we'll use when we extract files from system, Loading @@ -467,64 +434,49 @@ def merge_target_files( # We extract them directly into the output temporary directory since the # items do not need special case processing. result = extract_items( extract_items( target_files=system_target_files, target_files_temp_dir=output_target_files_temp_dir, extract_item_list=system_extract_as_is_item_list) if result != 0: return result # Extract "as is" items from the input other partial target files package. We # extract them directly into the output temporary directory since the items # do not need special case processing. result = extract_items( extract_items( target_files=other_target_files, target_files_temp_dir=output_target_files_temp_dir, extract_item_list=other_extract_as_is_item_list) if result != 0: return result # Extract "special" items from the input system partial target files package. # We extract these items to different directory since they require special # processing before they will end up in the output directory. result = extract_items( extract_items( target_files=system_target_files, target_files_temp_dir=system_target_files_temp_dir, extract_item_list=system_extract_special_item_list) if result != 0: return result # Extract "special" items from the input other partial target files package. # We extract these items to different directory since they require special # processing before they will end up in the output directory. result = extract_items( extract_items( target_files=other_target_files, target_files_temp_dir=other_target_files_temp_dir, extract_item_list=other_extract_special_item_list) if result != 0: return result # Now that the temporary directories contain all the extracted files, perform # special case processing on any items that need it. After this function # completes successfully, all the files we need to create the output target # files package are in place. result = process_special_cases( process_special_cases( temp_dir=temp_dir, system_target_files_temp_dir=system_target_files_temp_dir, other_target_files_temp_dir=other_target_files_temp_dir, output_target_files_temp_dir=output_target_files_temp_dir) if result != 0: return result # Regenerate IMAGES in the temporary directory. add_img_args = [ Loading Loading @@ -571,13 +523,7 @@ def merge_target_files( '-l', output_target_files_list, ] logger.info('creating %s', output_target_files) result = common.RunAndWait(command, verbose=True) if result != 0: logger.error('zip command %s failed %d', str(command), result) return result return 0 common.RunAndWait(command, verbose=True) def merge_target_files_with_temp_dir( Loading @@ -601,9 +547,6 @@ def merge_target_files_with_temp_dir( package created by merging system and other. keep_tmp: Keep the temporary directory after processing is complete. Returns: On success, 0. Otherwise, a non-zero exit code. """ # Create a temporary directory. This will serve as the parent of directories Loading @@ -619,7 +562,7 @@ def merge_target_files_with_temp_dir( temp_dir = common.MakeTempDir(prefix='merge_target_files_') try: return merge_target_files( merge_target_files( temp_dir=temp_dir, system_target_files=system_target_files, other_target_files=other_target_files, Loading @@ -638,9 +581,6 @@ def main(): Process command line arguments, then call merge_target_files_with_temp_dir to perform the heavy lifting. Returns: On success, 0. Otherwise, a non-zero exit code. """ common.InitLogging() Loading Loading @@ -673,9 +613,9 @@ def main(): OPTIONS.other_target_files is None or OPTIONS.output_target_files is None): common.Usage(__doc__) return 1 sys.exit(1) return merge_target_files_with_temp_dir( merge_target_files_with_temp_dir( system_target_files=OPTIONS.system_target_files, other_target_files=OPTIONS.other_target_files, output_target_files=OPTIONS.output_target_files, Loading @@ -683,4 +623,4 @@ def main(): if __name__ == '__main__': sys.exit(main()) main()