1*6777b538SAndroid Build Coastguard Worker#!/usr/bin/env python3 2*6777b538SAndroid Build Coastguard Worker# Copyright 2022 The Chromium Authors 3*6777b538SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license that can be 4*6777b538SAndroid Build Coastguard Worker# found in the LICENSE file. 5*6777b538SAndroid Build Coastguard Worker"""Delete .ninja_deps if it references files inside a libc++ dir which has 6*6777b538SAndroid Build Coastguard Workersince been reverted back to a file, and would cause Ninja fail on Windows. See 7*6777b538SAndroid Build Coastguard Workercrbug.com/1337238""" 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Workerimport os 10*6777b538SAndroid Build Coastguard Workerimport sys 11*6777b538SAndroid Build Coastguard Worker 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Workerdef main(): 14*6777b538SAndroid Build Coastguard Worker os.chdir(os.path.join(os.path.dirname(__file__), '..')) 15*6777b538SAndroid Build Coastguard Worker 16*6777b538SAndroid Build Coastguard Worker # Paths that have switched between being a directory and regular file. 17*6777b538SAndroid Build Coastguard Worker bad_dirs = [ 18*6777b538SAndroid Build Coastguard Worker 'buildtools/third_party/libc++/trunk/include/__string', 19*6777b538SAndroid Build Coastguard Worker 'buildtools/third_party/libc++/trunk/include/__tuple', 20*6777b538SAndroid Build Coastguard Worker ] 21*6777b538SAndroid Build Coastguard Worker 22*6777b538SAndroid Build Coastguard Worker for bad_dir in bad_dirs: 23*6777b538SAndroid Build Coastguard Worker if os.path.isdir(bad_dir): 24*6777b538SAndroid Build Coastguard Worker # If it's a dir, .ninja_deps referencing files in it is not a problem. 25*6777b538SAndroid Build Coastguard Worker continue 26*6777b538SAndroid Build Coastguard Worker 27*6777b538SAndroid Build Coastguard Worker for out_dir in os.listdir('out'): 28*6777b538SAndroid Build Coastguard Worker ninja_deps = os.path.join('out', out_dir, '.ninja_deps') 29*6777b538SAndroid Build Coastguard Worker try: 30*6777b538SAndroid Build Coastguard Worker if str.encode(bad_dir) + b'/' in open(ninja_deps, 'rb').read(): 31*6777b538SAndroid Build Coastguard Worker print('Deleting', ninja_deps) 32*6777b538SAndroid Build Coastguard Worker os.remove(ninja_deps) 33*6777b538SAndroid Build Coastguard Worker except FileNotFoundError: 34*6777b538SAndroid Build Coastguard Worker pass 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker return 0 37*6777b538SAndroid Build Coastguard Worker 38*6777b538SAndroid Build Coastguard Worker 39*6777b538SAndroid Build Coastguard Workerif __name__ == '__main__': 40*6777b538SAndroid Build Coastguard Worker sys.exit(main()) 41