More accurate commands to reproduce build
Added command to create a link to a compilation database and switch directory to run tidy and format.
This commit is contained in:
parent
2e9a9563e1
commit
1d3a3049bb
3 changed files with 16 additions and 4 deletions
|
@ -145,8 +145,8 @@ class PhabTalk:
|
||||||
|
|
||||||
|
|
||||||
class Step:
|
class Step:
|
||||||
def __init__(self):
|
def __init__(self, name=''):
|
||||||
self.name = ''
|
self.name = name
|
||||||
self.success = True
|
self.success = True
|
||||||
self.duration = 0.0
|
self.duration = 0.0
|
||||||
self.reproduce_commands = []
|
self.reproduce_commands = []
|
||||||
|
|
|
@ -117,14 +117,25 @@ if __name__ == '__main__':
|
||||||
report.success = True
|
report.success = True
|
||||||
|
|
||||||
cmake = run_step('cmake', report, lambda s, r: cmake_report(args.projects, s, r))
|
cmake = run_step('cmake', report, lambda s, r: cmake_report(args.projects, s, r))
|
||||||
|
commands_in_build = True
|
||||||
if cmake.success:
|
if cmake.success:
|
||||||
ninja_all = run_step('ninja all', report, ninja_all_report)
|
ninja_all = run_step('ninja all', report, ninja_all_report)
|
||||||
if ninja_all.success:
|
if ninja_all.success:
|
||||||
run_step('ninja check-all', report, ninja_check_all_report)
|
run_step('ninja check-all', report, ninja_check_all_report)
|
||||||
if args.check_clang_tidy:
|
if args.check_clang_tidy:
|
||||||
|
if commands_in_build:
|
||||||
|
s = Step('')
|
||||||
|
s.reproduce_commands.append('cd ..')
|
||||||
|
commands_in_build = False
|
||||||
|
report.steps.append(s)
|
||||||
run_step('clang-tidy', report,
|
run_step('clang-tidy', report,
|
||||||
lambda s, r: clang_tidy_report.run('HEAD~1', os.path.join(scripts_dir, 'clang-tidy.ignore'), s, r))
|
lambda s, r: clang_tidy_report.run('HEAD~1', os.path.join(scripts_dir, 'clang-tidy.ignore'), s, r))
|
||||||
if args.check_clang_format:
|
if args.check_clang_format:
|
||||||
|
if commands_in_build:
|
||||||
|
s = Step('')
|
||||||
|
s.reproduce_commands.append('cd ..')
|
||||||
|
commands_in_build = False
|
||||||
|
report.steps.append(s)
|
||||||
run_step('clang-format', report,
|
run_step('clang-format', report,
|
||||||
lambda s, r: clang_format_report.run('HEAD~1', os.path.join(scripts_dir, 'clang-format.ignore'), s, r))
|
lambda s, r: clang_format_report.run('HEAD~1', os.path.join(scripts_dir, 'clang-format.ignore'), s, r))
|
||||||
logging.debug(report)
|
logging.debug(report)
|
||||||
|
|
|
@ -168,7 +168,7 @@ def run(projects: str, repo_path: str, config_file_path: str = None, *, dry_run:
|
||||||
result = subprocess.call(cmd, env=env, shell=True, cwd=build_dir)
|
result = subprocess.call(cmd, env=env, shell=True, cwd=build_dir)
|
||||||
commands.append('cmake ' + ' '.join(_create_args(config, llvm_enable_projects, False)))
|
commands.append('cmake ' + ' '.join(_create_args(config, llvm_enable_projects, False)))
|
||||||
commands.append('# ^note that compiler cache arguments are omitted')
|
commands.append('# ^note that compiler cache arguments are omitted')
|
||||||
_link_compile_commands(config, repo_path, build_dir)
|
_link_compile_commands(config, repo_path, build_dir, commands)
|
||||||
return result, build_dir, [os.path.join(build_dir, 'CMakeCache.txt')], commands
|
return result, build_dir, [os.path.join(build_dir, 'CMakeCache.txt')], commands
|
||||||
|
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ def secure_delete(path: str):
|
||||||
shutil.rmtree(path, onerror=del_rw)
|
shutil.rmtree(path, onerror=del_rw)
|
||||||
|
|
||||||
|
|
||||||
def _link_compile_commands(config: Configuration, repo_path: str, build_dir: str):
|
def _link_compile_commands(config: Configuration, repo_path: str, build_dir: str, commands: List[str]):
|
||||||
"""Link compile_commands.json from build to root dir"""
|
"""Link compile_commands.json from build to root dir"""
|
||||||
if config.operating_system != OperatingSystem.Linux:
|
if config.operating_system != OperatingSystem.Linux:
|
||||||
return
|
return
|
||||||
|
@ -196,6 +196,7 @@ def _link_compile_commands(config: Configuration, repo_path: str, build_dir: str
|
||||||
if os.path.exists(target_path):
|
if os.path.exists(target_path):
|
||||||
os.remove(target_path)
|
os.remove(target_path)
|
||||||
os.symlink(source_path, target_path)
|
os.symlink(source_path, target_path)
|
||||||
|
commands.append(f'ln -s $PWD/compile_commands.json ../compile_commands.json')
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in a new issue