Implemented packing java sources, classpath and sources
This commit is contained in:
@@ -539,12 +539,53 @@ def build_java_directories(tool: str, directories: Iterable[MakeJavaData], targe
|
|||||||
relative_directory = relpath(dirpath, target_odex_directory)
|
relative_directory = relpath(dirpath, target_odex_directory)
|
||||||
copy_file(join(dirpath, filename), join(target.output_directory, relative_directory, filename))
|
copy_file(join(dirpath, filename), join(target.output_directory, relative_directory, filename))
|
||||||
built_successfully = True
|
built_successfully = True
|
||||||
|
|
||||||
for filename in os.listdir(target.directory):
|
for filename in os.listdir(target.directory):
|
||||||
filepath = join(target.directory, filename)
|
filepath = join(target.directory, filename)
|
||||||
if splitext(filename)[1] == ".dex" and isfile(filepath):
|
if splitext(filename)[1] == ".dex" and isfile(filepath):
|
||||||
copy_file(filepath, join(target.output_directory, get_next_filename(target.output_directory, "classes", extension=".dex", start_index=2)))
|
copy_file(filepath, join(target.output_directory, get_next_filename(target.output_directory, "classes", extension=".dex", start_index=2)))
|
||||||
built_successfully = True
|
built_successfully = True
|
||||||
|
|
||||||
|
if built_successfully:
|
||||||
|
target_classes_directory = join(target_directory, "classes", target.relative_directory, "classes")
|
||||||
|
if isdir(target_classes_directory):
|
||||||
|
classpath_jar = join(target.output_directory, "classpath.jar")
|
||||||
|
if isfile(classpath_jar):
|
||||||
|
os.remove(classpath_jar)
|
||||||
|
with ZipFile(classpath_jar, "w") as archive:
|
||||||
|
walk_all_files(target_classes_directory, lambda path: archive.write(path, arcname=relpath(path, target_classes_directory)))
|
||||||
|
|
||||||
|
classes_jar = join(target.output_directory, "classes.jar")
|
||||||
|
if isfile(classes_jar):
|
||||||
|
os.remove(classes_jar)
|
||||||
|
with ZipFile(classes_jar, "w") as archive:
|
||||||
|
walk_all_files(target_classes_directory, lambda path: archive.write(path, arcname=relpath(path, target_classes_directory)))
|
||||||
|
|
||||||
|
lib_classes_dir = join(target_directory, "libraries", "classes", target.relative_directory)
|
||||||
|
if isdir(lib_classes_dir):
|
||||||
|
walk_all_files(lib_classes_dir, lambda path: archive.write(path, arcname=relpath(path, lib_classes_dir)))
|
||||||
|
|
||||||
|
if target.manifest.keep_sources:
|
||||||
|
target_sources_directory = join(target_directory, "classes", target.relative_directory, "generated", "sources")
|
||||||
|
sources_jar = join(target.output_directory, "classpath-sources.jar")
|
||||||
|
if isfile(sources_jar):
|
||||||
|
os.remove(sources_jar)
|
||||||
|
|
||||||
|
with ZipFile(sources_jar, "w") as archive:
|
||||||
|
has_sources = False
|
||||||
|
if isdir(target_sources_directory):
|
||||||
|
walk_all_files(target_sources_directory, lambda path: archive.write(path, arcname=relpath(path, target_sources_directory)))
|
||||||
|
has_sources = True
|
||||||
|
|
||||||
|
for src_dir in target.manifest.sources:
|
||||||
|
abs_src_dir = join(target.directory, src_dir)
|
||||||
|
if isdir(abs_src_dir):
|
||||||
|
walk_all_files(abs_src_dir, lambda path: archive.write(path, arcname=relpath(path, abs_src_dir)))
|
||||||
|
has_sources = True
|
||||||
|
|
||||||
|
if not has_sources and isfile(sources_jar):
|
||||||
|
os.remove(sources_jar)
|
||||||
|
|
||||||
if not built_successfully:
|
if not built_successfully:
|
||||||
attention(f"Directory {target.relative_directory!r} is empty.")
|
attention(f"Directory {target.relative_directory!r} is empty.")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user