This is xnu-12377.1.9. See this file in:
#!/usr/bin/env python3
import sys
import os
import glob
def main():
xnu_root = sys.argv[1]
xnu_build_dir = sys.argv[2]
tests_obj_dir = sys.argv[3]
xnu_json = os.path.join(xnu_build_dir, "compile_commands.json")
if not os.path.exists(xnu_json):
print(f"did not find xnu build json: {xnu_json}")
return 0
root_json = os.path.join(xnu_root, "compile_commands.json")
if os.path.exists(root_json):
if not os.path.islink(root_json):
print(f"root json is not a symlink, not removing it: {root_json}")
return 0
add_text = ""
for filename in glob.glob(os.path.join(tests_obj_dir, "*.json")):
if filename.endswith("compile_commands.json"):
continue
print(f"found {filename}")
text = open(filename).read()
add_text += text
add_text = add_text.rstrip()
if add_text[-1] == ',':
add_text = add_text[:-1]
if len(add_text) == 0:
print(f"did not find any json files in {tests_obj_dir}")
return 0
xnu_j = open(xnu_json).read()
if xnu_j[-3:] != "\n]\n":
print(f"doesn't look like a legit compile_commands.json: {xnu_json}")
return 0
xnu_j_mod = xnu_j[:-3] + ",\n\n" + add_text + "]\n"
tests_json = os.path.join(tests_obj_dir, "compile_commands.json")
open(tests_json, "w").write(xnu_j_mod)
print(f"saved {tests_json}")
if os.path.exists(root_json):
print(f"removing old link {root_json}")
os.unlink(root_json)
os.symlink(tests_json, root_json)
print(f"added link {root_json}")
if __name__ == "__main__":
sys.exit(main())