| #!/usr/bin/env python3 |
| # Copyright (c) 2022 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Delete .ninja_deps if it references files inside libc++'s __string dir, |
| which has since been reverted back to a file, and would cause Ninja fail on |
| Windows. See crbug.com/1337238 ...""" |
| |
| import os |
| import sys |
| |
| |
| def main(): |
| os.chdir(os.path.join(os.path.dirname(__file__), '..')) |
| |
| if os.path.isdir('buildtools/third_party/libc++/trunk/include/__string'): |
| # If __string is a dir, Ninja will not fail. |
| return 0 |
| |
| for d in os.listdir('out'): |
| obj_file = os.path.join( |
| 'out', d, |
| 'obj/buildtools/third_party/libc++/libc++/legacy_debug_handler.obj') |
| if not os.path.exists(obj_file): |
| # It seems we have not done a build with the libc++ roll. |
| continue |
| |
| try: |
| deps = os.path.join('out', d, '.ninja_deps') |
| if b'__string/char_traits.h' in open(deps, 'rb').read(): |
| print('Deleting ', deps) |
| os.remove(deps) |
| print('Deleting ', obj_file) |
| os.remove(obj_file) |
| except FileNotFoundError: |
| pass |
| |
| return 0 |
| |
| |
| if __name__ == '__main__': |
| sys.exit(main()) |