def GenerateJavadoc(options, src_dir, output_dir): working_dir = os.path.join(options.input_dir, 'android', 'api') overview_file = os.path.abspath(options.overview_file) android_sdk_jar = os.path.abspath(options.android_sdk_jar) if not android_sdk_jar: android_sdk_jar = os.path.join(SDK_DIR, 'platforms', 'android-27', 'android.jar') build_utils.DeleteDirectory(output_dir) build_utils.MakeDirectory(output_dir) javadoc_cmd = [ 'javadoc', '-d', output_dir, '-overview', overview_file, '-doclet', 'com.google.doclava.Doclava', '-docletpath', '%s:%s' % (os.path.join(DOCLAVA_DIR, 'jsilver.jar'), os.path.join(DOCLAVA_DIR, 'doclava.jar')), '-title', 'Cronet API', '-federate', 'Android', 'https://developer.android.com/', '-federationapi', 'Android', os.path.join(DOCLAVA_DIR, 'current.txt'), '-bootclasspath', '%s:%s' % (android_sdk_jar, os.path.join(SDK_DIR, 'extras', 'android', 'support', 'annotations', 'android-support-annotations.jar')), ] for subdir, _, files in os.walk(src_dir): for filename in files: if filename.endswith(".java"): javadoc_cmd += [os.path.join(subdir, filename)] try: build_utils.CheckOutput(javadoc_cmd, cwd=working_dir, fail_func=lambda ret, stderr: (ret != 0 or not stderr is '')) except build_utils.CalledProcessError: build_utils.DeleteDirectory(output_dir) raise # Create an index.html file at the root as this is the accepted format. # Do this by copying reference/index.html and adjusting the path. with open(os.path.join(output_dir, 'reference', 'index.html'), 'r') as \ old_index, open(os.path.join(output_dir, 'index.html'), 'w') as new_index: for line in old_index: new_index.write( line.replace('classes.html', os.path.join('reference', 'classes.html')))
def GenerateJavadoc(options): output_dir = os.path.abspath(os.path.join(options.output_dir, 'javadoc')) working_dir = os.path.join(options.input_dir, 'android/api') overview_file = os.path.abspath(options.overview_file) build_utils.DeleteDirectory(output_dir) build_utils.MakeDirectory(output_dir) javadoc_cmd = ['ant', '-Dsource.dir=src', '-Ddoc.dir=' + output_dir, '-Doverview=' + overview_file, 'doc'] stdout = build_utils.CheckOutput(javadoc_cmd, cwd=working_dir) if " error: " in stdout or "warning" in stdout: build_utils.DeleteDirectory(output_dir) raise build_utils.CalledProcessError(working_dir, javadoc_cmd, stdout)
def GenerateJavadoc(options, src_dir): output_dir = os.path.abspath(os.path.join(options.output_dir, 'javadoc')) working_dir = os.path.join(options.input_dir, 'android', 'api') overview_file = os.path.abspath(options.overview_file) android_sdk_jar = os.path.abspath(options.android_sdk_jar) if not android_sdk_jar: android_sdk_jar = os.path.join(SDK_DIR, 'platforms', 'android-27', 'android.jar') build_utils.DeleteDirectory(output_dir) build_utils.MakeDirectory(output_dir) javadoc_cmd = [ 'javadoc', '-d', output_dir, '-overview', overview_file, '-doclet', 'com.google.doclava.Doclava', '-docletpath', '%s:%s' % (os.path.join(DOCLAVA_DIR, 'jsilver.jar'), os.path.join(DOCLAVA_DIR, 'doclava.jar')), '-title', 'Cronet API', '-federate', 'Android', 'https://developer.android.com/', '-federationapi', 'Android', os.path.join(DOCLAVA_DIR, 'current.txt'), '-bootclasspath', '%s:%s' % (android_sdk_jar, os.path.join(SDK_DIR, 'extras', 'android', 'support', 'annotations', 'android-support-annotations.jar')), ] for subdir, _, files in os.walk(src_dir): for filename in files: if filename.endswith(".java"): javadoc_cmd += [os.path.join(subdir, filename)] try: build_utils.CheckOutput(javadoc_cmd, cwd=working_dir, fail_func=lambda ret, stderr: (ret != 0 or not stderr is '')) except build_utils.CalledProcessError: build_utils.DeleteDirectory(output_dir) raise
def main(): parser = optparse.OptionParser() build_utils.AddDepfileOption(parser) parser.add_option('--output-dir', help='Directory to put javadoc') parser.add_option('--input-dir', help='Root of cronet source') parser.add_option('--input-src-jar', help='Cronet api source jar') parser.add_option('--overview-file', help='Path of the overview page') parser.add_option('--readme-file', help='Path of the README.md') parser.add_option('--lib-java-dir', help='Directory containing java libs') options, _ = parser.parse_args() # A temporary directory to put the output of cronet api source jar files. unzipped_jar_path = tempfile.mkdtemp(dir=options.output_dir) if os.path.exists(options.input_src_jar): jar_cmd = ['jar', 'xf', os.path.abspath(options.input_src_jar)] build_utils.CheckOutput(jar_cmd, cwd=unzipped_jar_path) else: raise Exception('Jar file does not exist: %s' % options.input_src_jar) net_docs.ProcessDocs([options.readme_file], options.input_dir, options.output_dir, extensions=[CronetExtension()]) GenerateJavadoc(options, os.path.abspath(unzipped_jar_path)) if options.depfile: input_paths = [] for root, _, filenames in os.walk(options.input_dir): input_paths.extend(os.path.join(root, f) for f in filenames) build_utils.WriteDepfile( options.depfile, input_paths + build_utils.GetPythonDependencies()) # Clean up temporary output directory. build_utils.DeleteDirectory(unzipped_jar_path)
def GenerateJavadoc(options): output_dir = os.path.abspath(os.path.join(options.output_dir, 'javadoc')) working_dir = os.path.join(options.input_dir, 'android/java') overview_file = os.path.abspath(options.overview_file) build_utils.DeleteDirectory(output_dir) build_utils.MakeDirectory(output_dir) javadoc_cmd = ['ant', '-Dsource.dir=src', '-Ddoc.dir=' + output_dir, '-Doverview=' + overview_file, 'doc'] build_utils.CheckOutput(javadoc_cmd, cwd=working_dir)
def ExtractJars(options): # The paths of the files in the jar will be the same as they are passed in to # the command. Because of this, the command should be run in # options.classes_dir so the .class file paths in the jar are correct. jar_cwd = options.classes_dir build_utils.DeleteDirectory(jar_cwd) build_utils.MakeDirectory(jar_cwd) for jar in build_utils.ParseGnList(options.jars): jar_path = os.path.abspath(jar) jar_cmd = ['jar', 'xf', jar_path] build_utils.CheckOutput(jar_cmd, cwd=jar_cwd)
def GenerateJavadoc(options): source_dir = options.source_dir output_dir = options.output_dir working_dir = options.working_dir build_utils.DeleteDirectory(output_dir) build_utils.MakeDirectory(output_dir) javadoc_cmd = [ 'ant', '-Dsource.dir=' + source_dir, '-Ddoc.dir=' + os.path.abspath(output_dir), 'doc' ] build_utils.CheckOutput(javadoc_cmd, cwd=working_dir)
def main(): parser = optparse.OptionParser() build_utils.AddDepfileOption(parser) parser.add_option('--src-dir', action="append", help='Directory containing .java files.') parser.add_option( '--src-jars', action="append", help='A list of source jars to include in addition to source files.') parser.add_option('--jar-path', help='Jar output path.') parser.add_option('--stamp', help='Path to touch on success.') options, _ = parser.parse_args() # A temporary directory to put the output of jar files. unzipped_jar_path = None if options.src_jars: unzipped_jar_path = tempfile.mkdtemp( dir=os.path.dirname(options.jar_path)) jar_list = [] for gn_list in options.src_jars: jar_list.extend(build_utils.ParseGnList(gn_list)) for jar in jar_list: UnzipSourceJar(jar, unzipped_jar_path) src_dirs = [] for src_dir in options.src_dir: src_dirs.extend(build_utils.ParseGnList(src_dir)) if unzipped_jar_path: src_dirs += [unzipped_jar_path] for src_dir in src_dirs: JarSources(src_dir, options.jar_path) if options.depfile: input_paths = [] for src_dir in src_dirs: for root, _, filenames in os.walk(src_dir): input_paths.extend(os.path.join(root, f) for f in filenames) build_utils.WriteDepfile( options.depfile, input_paths + build_utils.GetPythonDependencies()) # Clean up temporary output directory. if unzipped_jar_path: build_utils.DeleteDirectory(unzipped_jar_path) if options.stamp: build_utils.Touch(options.stamp)
def GenerateJavadoc(options, src_dir): output_dir = os.path.abspath(os.path.join(options.output_dir, 'javadoc')) working_dir = os.path.join(options.input_dir, 'android/api') overview_file = os.path.abspath(options.overview_file) lib_java_dir = os.path.abspath(options.lib_java_dir) build_utils.DeleteDirectory(output_dir) build_utils.MakeDirectory(output_dir) javadoc_cmd = [ 'ant', '-Dsource.dir=' + src_dir, '-Ddoc.dir=' + output_dir, '-Dlib.java.dir=' + lib_java_dir, '-Doverview=' + overview_file, 'doc' ] stdout = build_utils.CheckOutput(javadoc_cmd, cwd=working_dir) for line in stdout.splitlines(): if " error: " in line or "javadoc: error " in line: build_utils.DeleteDirectory(output_dir) raise build_utils.CalledProcessError(working_dir, javadoc_cmd, stdout) # TODO(crbug.com/655666): remove compiler suppression warning once fixed. if ("warning" in line and not line.endswith('warnings') and not "the highest major version" in line): build_utils.DeleteDirectory(output_dir) raise build_utils.CalledProcessError(working_dir, javadoc_cmd, stdout)
def main(): parser = optparse.OptionParser() build_utils.AddDepfileOption(parser) parser.add_option('--output-dir', help='Directory to put javadoc') parser.add_option('--input-dir', help='Root of cronet source') parser.add_option('--input-src-jar', help='Cronet api source jar') parser.add_option('--overview-file', help='Path of the overview page') parser.add_option('--readme-file', help='Path of the README.md') parser.add_option('--zip-file', help='Path to ZIP archive of javadocs.') parser.add_option('--android-sdk-jar', help='Path to android.jar') options, _ = parser.parse_args() # A temporary directory to put the output of cronet api source jar files. unzipped_jar_path = tempfile.mkdtemp(dir=options.output_dir) if os.path.exists(options.input_src_jar): jar_cmd = ['jar', 'xf', os.path.abspath(options.input_src_jar)] build_utils.CheckOutput(jar_cmd, cwd=unzipped_jar_path) else: raise Exception('Jar file does not exist: %s' % options.input_src_jar) net_docs.ProcessDocs([options.readme_file], options.input_dir, options.output_dir, extensions=[CronetExtension()]) output_dir = os.path.abspath(os.path.join(options.output_dir, 'javadoc')) GenerateJavadoc(options, os.path.abspath(unzipped_jar_path), output_dir) if options.zip_file: assert options.zip_file.endswith('.zip') shutil.make_archive(options.zip_file[:-4], 'zip', output_dir) if options.depfile: assert options.zip_file deps = [] for root, _, filenames in os.walk(options.input_dir): # Ignore .pyc files here, it might be re-generated during build. deps.extend( os.path.join(root, f) for f in filenames if not f.endswith('.pyc')) build_utils.WriteDepfile(options.depfile, options.zip_file, deps) # Clean up temporary output directory. build_utils.DeleteDirectory(unzipped_jar_path)
def main(): parser = optparse.OptionParser() build_utils.AddDepfileOption(parser) parser.add_option('--src-search-dirs', action="append", help='A list of directories that should be searched' ' for the source files.') parser.add_option('--src-files', action="append", help='A list of source files to jar.') parser.add_option( '--src-jars', action="append", help='A list of source jars to include in addition to source files.') parser.add_option('--src-list-files', action="append", help='A list of files that contain a list of sources,' ' e.g. a list of \'.sources\' files generated by GN.') parser.add_option('--jar-path', help='Jar output path.') parser.add_option('--stamp', help='Path to touch on success.') options, _ = parser.parse_args() # A temporary directory to put the output of jar files. unzipped_jar_path = None if options.src_jars: unzipped_jar_path = tempfile.mkdtemp( dir=os.path.dirname(options.jar_path)) jar_list = [] for gn_list in options.src_jars: jar_list.extend(build_utils.ParseGnList(gn_list)) for jar in jar_list: UnzipSourceJar(jar, unzipped_jar_path) src_search_dirs = [] for gn_src_search_dirs in options.src_search_dirs: src_search_dirs.extend(build_utils.ParseGnList(gn_src_search_dirs)) src_list_files = [] if options.src_list_files: for gn_src_list_file in options.src_list_files: src_list_files.extend(build_utils.ParseGnList(gn_src_list_file)) src_files = [] for gn_src_files in options.src_files: src_files.extend(build_utils.ParseGnList(gn_src_files)) # Add files from --source_list_files for src_list_file in src_list_files: with open(src_list_file, 'r') as f: src_files.extend(f.read().splitlines()) # Preprocess source files by removing any prefix that comes before # the Java package name. for i, s in enumerate(src_files): prefix_position = s.find(JAVA_PACKAGE_PREFIX) if prefix_position != -1: src_files[i] = s[prefix_position:] # Create a dictionary that maps every source directory # to source files that it contains. dir_to_files_map = {} # Initialize the map. for src_search_dir in src_search_dirs: dir_to_files_map[src_search_dir] = [] # Fill the map. for src_file in src_files: number_of_file_instances = 0 for src_search_dir in src_search_dirs: if os.path.isfile(os.path.join(src_search_dir, src_file)): number_of_file_instances += 1 dir_to_files_map[src_search_dir].append(src_file) if (number_of_file_instances > 1): raise Exception( 'There is more than one instance of file %s in %s' % (src_file, src_search_dirs)) if (number_of_file_instances < 1): raise Exception('Unable to find file %s in %s' % (src_file, src_search_dirs)) # Delete the old output file if any. if os.path.isfile(options.jar_path): os.remove(options.jar_path) # Jar the sources from every source search directory. for src_search_dir in src_search_dirs: if len(dir_to_files_map[src_search_dir]) > 0: JarSources(src_search_dir, dir_to_files_map[src_search_dir], options.jar_path) else: raise Exception( 'Directory %s does not contain any files and can be' ' removed from the list of directories to search' % src_search_dir) # Jar additional src jars if unzipped_jar_path: JarSources(unzipped_jar_path, ['.'], options.jar_path) if options.depfile: deps = [] for src_dir in src_search_dirs: for root, _, filenames in os.walk(src_dir): deps.extend(os.path.join(root, f) for f in filenames) # Srcjar deps already captured in GN rules (no need to list them here). build_utils.WriteDepfile(options.depfile, options.jar_path, deps) # Clean up temporary output directory. if unzipped_jar_path: build_utils.DeleteDirectory(unzipped_jar_path) if options.stamp: build_utils.Touch(options.stamp)