blob: c2560de660a281f2d73b614d74c3630de4588f02 [file] [log] [blame]
Hans Wennborg4fdb1942022-06-17 17:40:101#!/usr/bin/env python3
Avi Drissman73a09d12022-09-08 20:33:382# Copyright 2022 The Chromium Authors
Hans Wennborg4fdb1942022-06-17 17:40:103# Use of this source code is governed by a BSD-style license that can be
4# found in the LICENSE file.
Hans Wennborg68f3f6d2022-09-06 14:46:075"""Delete .ninja_deps if it references files inside a libc++ dir which has
6since been reverted back to a file, and would cause Ninja fail on Windows. See
7crbug.com/1337238"""
Hans Wennborg4fdb1942022-06-17 17:40:108
9import os
10import sys
11
12
13def main():
14 os.chdir(os.path.join(os.path.dirname(__file__), '..'))
15
Hans Wennborg68f3f6d2022-09-06 14:46:0716 # Paths that have switched between being a directory and regular file.
17 bad_dirs = [
18 'buildtools/third_party/libc++/trunk/include/__string',
19 'buildtools/third_party/libc++/trunk/include/__tuple',
20 ]
Hans Wennborg4fdb1942022-06-17 17:40:1021
Hans Wennborg68f3f6d2022-09-06 14:46:0722 for bad_dir in bad_dirs:
23 if os.path.isdir(bad_dir):
24 # If it's a dir, .ninja_deps referencing files in it is not a problem.
Hans Wennborg4fdb1942022-06-17 17:40:1025 continue
26
Hans Wennborg68f3f6d2022-09-06 14:46:0727 for out_dir in os.listdir('out'):
28 ninja_deps = os.path.join('out', out_dir, '.ninja_deps')
29 try:
30 if str.encode(bad_dir) + b'/' in open(ninja_deps, 'rb').read():
31 print('Deleting', ninja_deps)
32 os.remove(ninja_deps)
33 except FileNotFoundError:
34 pass
Hans Wennborg4fdb1942022-06-17 17:40:1035
36 return 0
37
38
39if __name__ == '__main__':
40 sys.exit(main())