2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 """Wipes out a directory recursively and then touches a stamp file.
8 This odd pairing of operations is used to support build scripts which
9 slurp up entire directories (e.g. build/android/javac.py when handling
10 generated sources) as inputs.
12 The general pattern of use is:
14 - Add a target which generates |gen_sources| into |out_path| from |inputs|.
15 - Include |stamp_file| as an input for that target or any of its rules which
16 generate files in |out_path|.
17 - Add an action which depends on |inputs| and which outputs |stamp_file|;
18 the action should run this script and pass |out_path| and |stamp_file| as
21 The net result is that you will force |out_path| to be wiped and all
22 |gen_sources| to be regenerated any time any file in |inputs| changes.
24 See //third_party/mojo/mojom_bindings_generator.gypi for an example use case.
34 def Main(dst_dir
, stamp_file
):
36 shutil
.rmtree(os
.path
.normpath(dst_dir
))
38 # Ignore only "not found" errors.
39 if e
.errno
!= errno
.ENOENT
:
41 with
open(stamp_file
, 'a'):
42 os
.utime(stamp_file
, None)
44 if __name__
== '__main__':
45 sys
.exit(Main(sys
.argv
[1], sys
.argv
[2]))