Fix correcting path to debug file on case-insensitive filesystem.

This commit is contained in:
Roman Telezhynskyi 2024-06-23 18:45:33 +03:00
parent 24c71eef0b
commit 8181b07d3d

View file

@ -24,6 +24,15 @@ def debug_extension():
return debug_ext return debug_ext
def rename_debug_file(debug_file, corrected_debug_name):
if sys.platform == "darwin":
suffix = "_tmp"
else:
suffix = ".tmp"
os.rename(debug_file, corrected_debug_path + suffix)
os.rename(corrected_debug_path + suffix, corrected_debug_path)
def generate_sym_files(install_root): def generate_sym_files(install_root):
sym_files = [] sym_files = []
@ -50,27 +59,36 @@ def generate_sym_files(install_root):
# Convert to lowercase # Convert to lowercase
corrected_debug_name = corrected_debug_name.lower() corrected_debug_name = corrected_debug_name.lower()
rename = False
print(f"Generating symbols for: {corrected_debug_name}") print(f"Generating symbols for: {corrected_debug_name}")
# Copy debug file with corrected name # Copy debug file with corrected name
corrected_debug_path = os.path.join(debug_dir, corrected_debug_name) corrected_debug_path = os.path.join(debug_dir, corrected_debug_name)
if debug_file != corrected_debug_path: if debug_file != corrected_debug_path:
if sys.platform == "darwin": if os.path.exists(debug_file) and os.path.exists(corrected_debug_path):
shutil.copytree(debug_file, corrected_debug_path) # case-insensitive file system
rename = True
rename_debug_file(debug_file, corrected_debug_name)
else: else:
shutil.copy(debug_file, corrected_debug_path) if sys.platform == "darwin":
shutil.copytree(debug_file, corrected_debug_path)
else:
shutil.copy(debug_file, corrected_debug_path)
sym_file = os.path.splitext(corrected_debug_name)[0] + ".sym" sym_file = os.path.splitext(corrected_debug_name)[0] + ".sym"
dump_syms_cmd = ["dump_syms", '-o', sym_file, '--inlines', corrected_debug_path] dump_syms_cmd = ["dump_syms", '-o', sym_file, '--inlines', corrected_debug_path]
subprocess.run(dump_syms_cmd, check=True) subprocess.run(dump_syms_cmd, check=True)
if debug_file != corrected_debug_path: if debug_file != corrected_debug_path:
# Remove temporary debug file if not rename:
if sys.platform == "darwin": # Remove temporary debug file
shutil.rmtree(corrected_debug_path) if sys.platform == "darwin":
shutil.rmtree(corrected_debug_path)
else:
os.remove(corrected_debug_path)
else: else:
os.remove(corrected_debug_path) rename_debug_file(corrected_debug_path, debug_file)
sym_files.append((debug_file, sym_file)) sym_files.append((debug_file, sym_file))