blob: 5ba2f759d11176f4c29979f8e5be37d6d6c44034 [file] [log] [blame]
#!/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())